Skip to content

Lyx09/Pizzadventure

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

141 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

# (Rush C)

The purpose of the project is to create a platform game in C with the following
requirements:

* One player character,
* At least 2 maps,
* At least 1 enemy with a dummy A.I.,
* At least 1 way to harm the player,
* At least 1 danger (another enemy, a trap, spikes, lava, or something else),
* A game over with an explicit screen,
* And a way to start over the game without exiting.

## Getting Started

To be able to get a copy of the game up and running on your local machine,
please follow these instructions:

If you wish to create the game binary, please run `make` or `make game` at the
root of the project directory. To remove it, please run `make clean`.

## Running the tests

To run the tests for each individual functions on this project, please use the
following command: `make check`.

## How to play

The player character is a pizza delivery guy that has to deliver an order to
the demon king at his castle.

The goal in each level is to reach a checkpoint that will allow the player to
go on to the next level.

The game is supposed to be played using the keyboard, using the directional
pad to move, the space bar to jump and the key 'x' to attack.

## Sources

Unfortunately, we did not keep track of all the sites we visited for our
resources. Here are a few websites we visited to get them:

* https://www.spriters-resource.com/
* https://www.vectorstock.com/
* https://opengameart.org/
* https://itch.io/
* https://www.google.com/
* https://www.1001fonts.com/8-bit-limit-font.html
* etc.

Credits where credit is due, none of the art nor sound we used were made by us.
Thanks to all the artists who have contributed directly or (mostly) indirectly
to our work.

## Features

Here is an exhaustive list of the features we implemented for our 2D-platformer:

* A basic title screen with music and title image,
* A full map parser, that can display several tiles, and handle a specific
music, tileset and background for every map, as well as different points for
changing maps,
* A character able to move left and right and jump.
* The game handles delta timing (Game does not depend on computer's speed).

### The map parser

One of the features we developped is a map parser, which takes an input file
of the following format:

```
prev:           ./maps/lvl0 (1, 2)
next:           ./maps/lvl2 (3, 4)
music:          ./resources/music/lvl1
background:     ./resources/background/lvl1
tileset:        ./resources/tileset/lvl1
tilesize:       (5, 6)

4
P: O(7,8)
N: O(9,10)
B: S(11,12)
C: H(13,14)
_
 C                                     C
                                     N C
                                       C
                                       C
                                       C
                                       C
                                       C
                                       C
                                       C
                                       C
                                       C
                                       C
                                       C
                                       C
                                       C
                                       C
                                       C
                                       C
                                       C
                                       C
                                       C
                                       C
                                       C
                                       C
                                       C
                                       C
                                       C
 P                                     C
                                       C
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
```

The first and second lines are two paths respectively towards the map of the
previous and next level, with the corresponding coordinates where the player
should spawn.

The third line is the path of the music file, while the fourth line corresponds
to the background.

The fifth line is the path to the tileset used for the level, and the sixth
corresponds to the size of one tile on the tileset sheet under the form of a
tuple.

After a newline, there should be a number n indicating the different types of
tile on the map. Then, there should be exactly n lines representing the types
of the different tiles, the type of block it corresponds to and its coordinates
relative to the tileset sheet. The tile's type cannot be represented by ' ',
'\t', '\n', 'E', 'O', 'S' nor 'H' since they are either forbidden or used to
represent the block type ('E' -> empty block, 'O' -> open block, 'S' -> solid
block, 'H' -> harmful block).

Finally, an underscore character separates the header from the map represented
by 40 * 30 characters extracted from the previous lines's type of tile.

## Authors

* William Lin
* Antonin Chantier
* Céline Wu

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •