Projekt SNAKE Snake Game id 831 Nieznany

background image


Gliwice, 18.01.2012






Semester: I

Group: III

Section: 1



C

C

O

O

M

M

P

P

U

U

T

T

E

E

R

R

P

P

R

R

O

O

G

G

R

R

A

A

M

M

M

M

I

I

N

N

G

G

L

L

A

A

B

B

O

O

R

R

A

A

T

T

O

O

R

R

Y

Y













Author: Przemysław Kozieł

E-mail: miltiades11@wp.pl

Tutor: dr inż. Michał Kawulok

background image

Snake Game

Report contains:

1) General description of the program with pictures.
2) Stages of program development.

3) Problems during creating the program.
4) Testing.
4) Applications.

1). General description of the program with pictures.

First of all my task is "Write a Snake". When I start work, I think that it is hard

question to do, because I start learn C language.

The main action of the game is to move the head, tail elements footsteps move as

giving the position of the head. Transfer of the position lies in the fact that the last element
takes before last position of the element, and so in turn. Element behind the head assumes its
position then the head is moved in the direction that indicates a player. First of all I must
create structures, which holds position of head, tail and heart (heart this is point when the
snake that eats its length increases, this is alternative for standard apple). I create additionally
structure, which holds information about snake length, direction, game status and player
score. When snake's head position is the same as the position of the generated hearts, length
of snake is increased by one element of the tail. Player select direction of snake's move when
press keys (W- up, S- down, A- left, D- right), when the snake has a conflict with the edge of
the map or their own tail, the player loses. When player lose, there is a screen on which a
player gives their name, which together with the score is saved to a text file "Highscores.txt".

Head is shown as a point, the snake's tail consists of the elements, so I created arrays

of structures, each structure contains the location of one element of the tail. Heart is also
presented as a point on the board. Another method of presenting the tail is to create a dynamic
list which is also holds the location of the elements the tail.

In addition to the main algorithm of the game, I had to create additional functions

diversifying and giving the game play of colors. The basis of any game is the menu in the
menu that I created to decide what we want to do, first we can start to play, next see the
control, view or delete the results and exit the game. When turn on the game see the string
"Snake" and loading bar and covering the screen with the addition of timing. Selecting in the
menu "Controls" on the screen to show us the controls of a snake in the game. Selecting the
"Highscores" get access to a submenu where you can see the results of the players or delete
them. Selecting the "Exit" close our game. When we choose "Start Game" we can play in
Snake game. Additional function the duration of the game is able to stop it, pressing any key
pauses the game appeals.

The source code contains comments that describe the function also describes the use of

structures, the main game algorithm describes the steps that are carried out there. Anyone who
wants to change or modify the game code, it should easily can found necessary thing. For the
description added screenshots from the presentation of the function of the game.






background image

This is screen, which we can see when turn
on the game. We can see the use of functions
to colorize strings. The loading bar is created
only to the appearance of the game.







This image shows the function that covers
the screen with colorful characters.








This image presents design of function
Menu. In this function we can choose what
we want do.







This image shows the function which
showing the player control.






This image shows function in which we can
see the results of the players or delete them.





background image


I think that this image is most important
because it show us the action of the main
game loop, which contains the entire game
algorithm using other functions. We can see
how the snake is drawn and the point(heart)
is presented. In the upper right corner we see
the score.

The image shows what we can see when
player loses.







When player loses and see string Game
Over, is asked to provide their names to save
it to the list of results. After this, we return
to Menu.




The image shows the final screen of the
game which we can see. We can see the slow
string printing and flashing nickname author
of the project.





2) Stages of program development.

1. Create main algorithm to moving snake's head:
- at first I want create algorithm only to moving snake's head,
- first of all I created structure that will hold the snake's head location,
- next I set location of head in starting position,
- next I must create controls to move head,
- for each key, I had to create a separate condition, when to hit UP, decreasing our parameter
Y and the head moves to up, when you press down parameter Y is growing,

background image

- for horizontal movement when hit right parameter X increases, when we hit left this
parameter decreasing,
- I checked the validation control action in the preview how the variables are changing,
- I used kbhit() function to our head kept choice which pointed direction a player, I made this
function in a loop that executes all the time,
- I created a function that draws the head, but this isn't easy, when program drawing head,
trace of the previous position is drawn,
- additionally I add to structure temporary position of head, and in position of our head is
printed character and in temporary position is printed space,
- when I finish creating this function I start create function which moves tail.

2. Create algorithm to move snake's tail.
- First of all I delete temporary position of head from structure, and create new structure
which hold position of snake's tail,
- this structure must be array, because snake's composed of elements,
- each element of array hold position only one element of tail,
- first element of tail takes temporary position of head and is printed as character, next
element of tail is previous position of first element of tail and is printed as space,

3. Create game board.
- I create two dimensional array,
- first and last elements are located character which set game boards,

4. Increasing length of snake, increase as a result.
- I create new structure which holds information about player score, length of snake, and
moved into this structure information about the direction of the snake,
- I create function which generate position of point and drawing it into game board, when
snake head is in the same position, snake's length increasing and player score increasing.

5. Checking collision.
- this is easy to do, I add to my program condition, when position of snake's head is the same
as boundaries of game board, player loses,
- when head collide with element of tail, player loses.

6. Create menu, and additionally colors screens.
- I create menu, where player choose what he want to do.

7. Create saving scores into text file, and showing this scores.
- I create function, which create new text file, and when player loses, his scores is saved into
file, and player is asked to provide their nick,
- when player want see scores, he had to choose this option in menu and in his screen are
printed all scores,
- additionally player can remove text file contains scores.

8. Last revision.
- I added a condition for moving snake horizontally and vertically to have the same speed of
motion,
- I added condition for creating a point to position of point isn't the same that position of
element of snake,
- Testing the program.

background image




3) Problems during creating the program.

- my first problem is simple error, when I create function which drawing game board, I want
set character out of range the array,
- I had a problem when I created controls when the controls are arrow set on a snake speed
decreased, I had change this to AWSD,
- sometimes in boundaries space is written, I remove this problem, when I set position of
cursor outside the game board,
- very big problem was the wrong assignment of the positions of each element of the tail
snake, solution turned out very simple, set position in wrong way,
- menu when the menu clicked on unassigned key which transported us to the random option,
it was enough to add the appropriate conditions,
- when we wanted to play next time, then in the menu created a never endless loop, this was
caused by the a bad function call,
- sometimes point is generated outside game board, because is bad set range of generation,
- when I testing function which saving scores, I forgot close a file.

4) Testing.

The program tested only observing how variables are changing. Then I added drawing and
there was a couple of problems with whom I managed to cope with. When I tried to test the
program of observing its operation by drawing on the screen the results of operations, did not
notice some bugs which contain inside some function. Therefore, so I think the test by
observing the changes of variables is a very good way to check the correctness action of the
program.

5) Applications.

At the very beginning I thought that writing this program will be a huge problem for me but it
was not that hard. The bottom line is that after each step carefully posed to test whether the
program is working as we wanted. at the beginning of the program tested only observing how
variables are changing. Then I added drawing and there was a couple of problems with whom
I managed to cope with. Creating the program was an interesting experience for me, mainly
looking at the fact this is my first such project. When testing a program operation error when I
saw the program, was looking for the cause and tried to remove it. For variety action of the
program I added color to the DOS window. When creating a program, I have not encountered
major problems with whom I could not cope with.


Wyszukiwarka

Podobne podstrony:
projekt sr tr 2014 id 398557 Nieznany
projekty gry planszowe FD id 40 Nieznany
projekt rakow gotowy rk id 3994 Nieznany
projekt 06 przyklad 02 id 39794 Nieznany
projekt 7 MP KL nr 7 id 832557 Nieznany
Projekt 01 Proj6b opis id 82981 Nieznany
Projekt 02 Wyklad 02 id 829819 Nieznany
projekt 03 przyklad 01 id 39794 Nieznany
Projekt 02 Proj7 opis id 829818 Nieznany
projekt 05 przyklad 01 id 39794 Nieznany
projekt sr tr 2014 id 398557 Nieznany
projekty gry planszowe FD id 40 Nieznany
projekty szkolen(1) id 401146 Nieznany
Projekt nr2 id 399211 Nieznany
Projekt2 poprawiony id 400268 Nieznany
projekty 3 id 400866 Nieznany
kse projekt id 252149 Nieznany
EiZI Projekt GiG4 2012 id 15450 Nieznany

więcej podobnych podstron