Robin Milward Cooney 200849894
Dependencies: N5110 SDFileSystem gameCharacters mbed
Revision 1:046e66f1ca76, committed 2016-04-29
- Comitter:
- robinmc
- Date:
- Fri Apr 29 10:45:15 2016 +0000
- Parent:
- 0:28392431dbad
- Child:
- 2:158d57cdbf1e
- Commit message:
- getting rid of gotos
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SDFileSystem.lib Fri Apr 29 10:45:15 2016 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/teams/mbed/code/SDFileSystem/#7b35d1709458
--- a/game_charecters.lib Tue Apr 26 18:44:09 2016 +0000 +++ b/game_charecters.lib Fri Apr 29 10:45:15 2016 +0000 @@ -1,1 +1,1 @@ -game_charecters#fa4a8b6195c8 +game_charecters#14e5288790f4
--- a/main.cpp Tue Apr 26 18:44:09 2016 +0000
+++ b/main.cpp Fri Apr 29 10:45:15 2016 +0000
@@ -11,12 +11,16 @@
#include "math.h"
#include "stdint.h"
#include "tone.h"
+#include "SDFileSystem.h"
#include "gameCharacters.h"
#define joystickTolerance 0.05f
N5110 lcd(PTE26,PTA0,PTC4,PTD0,PTD2,PTD1,PTC3); //declare LCD
BusOut led(PTC8,PTC9,PTC0,PTC7,PTC5); //declare Bus output for LED bar
+SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS
+DigitalOut red_led(LED_RED);
+DigitalOut green_led(LED_GREEN);
DigitalIn swJoy(PTB18); //define potentiomiter switch
AnalogIn xPot(PTB2); //define x axis analoge in (this is the pot that corresponds to horizontal movement of the joystick)
AnalogIn yPot(PTB3); //define y axis analoge in (this is the pot that corresponds to vertical movement of the joystick)
@@ -29,29 +33,39 @@
Ticker Ticker_Game;
int i; //loop counter
+int run=0;
int loop=0;
+int difficulty=2;
int g_jump=36;
int jumpUp;
int accel=0;
int bullet=9;
int bullet_height;
int menu_select;
-int score;
+int score=0;
+int highscore;
int kill_score;
int h_movement=0;
int ammo=24;
+int rat_movement=85;
+int hound_hMovement=90;
+int hound_vMovement=40;
+int hound_jump=0;
int bear_movement=100;
int bird_hMovement=95;
int bird_vMovement=20;
int cactus_movement=110;
int t_rex_movement=120;
int fire_ball_hMovement=t_rex_movement-6;
-int fire_ball_vMovement=27;
+int fire_ball_vMovement=25;
int heart_movement=90;
int ammo_movement=100;
int menuState=0; //initial state for the menu fsm
int jump_flag=0;
int shoot_flag=0;
+int print_rat_flag=0;
+int print_hound_flag=0;
+int hound_jump_flag=0;
int print_bear_flag=0;
int print_bird_flag=0;
int print_heart_flag=0;
@@ -62,10 +76,12 @@
int lose_lives_delay_flag=0;
int lives_delay_loop=0; //number of times the lose_lives_delay_flag if statement has iterated
int fire_on_screen=0;
+int story_progress=1;
double lives=4;
int bear_lives=0;
int t_rex_lives=0;
int random_num;
+float brightness=0.5;
volatile int g_Ticker_Menu_flag=0;
volatile int g_Ticker_Game_flag=0;
volatile int g_press_b_A_flag=0;
@@ -73,6 +89,8 @@
void initialize_values()
{
+ red_led = 1;
+ green_led=1;
i=0; //loop counter
loop=0;
g_jump=36;
@@ -80,18 +98,25 @@
bullet=9;
h_movement=0;
ammo=24;
+ rat_movement=85;
+ hound_hMovement=90;
+ hound_vMovement=40;
+ hound_jump=0;
bear_movement=100;
bird_hMovement=95;
bird_vMovement=20;
cactus_movement=110;
t_rex_movement=120;
fire_ball_hMovement=t_rex_movement-6;
- fire_ball_vMovement=27;
+ fire_ball_vMovement=25;
heart_movement=90;
ammo_movement=100;
menuState=0; //initial state for the menu fsm
jump_flag=0;
shoot_flag=0;
+ print_rat_flag=0;
+ print_hound_flag=0;
+ hound_jump_flag=0;
print_bear_flag=0;
print_bird_flag=0;
print_heart_flag=0;
@@ -200,11 +225,6 @@
}
}
-void get_recks_still_gun()
-{
-
-}
-
void print_recks_crouch_gun()
{
for(int c=0; c<=9; c++) { //9 beacause the the loop stats from 0 but the array size from 1
@@ -240,6 +260,91 @@
}
}
+void print_mob_rat_p1() //funtion to print the still bear on the LCD
+{
+ for(int c=0; c<=7; c++) { // 7 beacause the the loop stats from 0 but the array size from 1
+ for(int r=0; r<=2; r++) {
+ if (g_mob_rat_p1[r][c]==0) {
+ if (lcd.getPixel(c+rat_movement,r+44)!=0) {
+ lcd.setPixel(c+rat_movement,r+44);
+ } else {
+ lcd.clearPixel(c+rat_movement,r+44);
+ }
+ } else if (g_mob_rat_p1[r][c]==1) {
+ lcd.setPixel(c+rat_movement,r+44);
+ }
+ }
+ }
+}
+
+void print_mob_rat_p2() //funtion to print the still bear on the LCD
+{
+ for(int c=0; c<=7; c++) { // 7 beacause the the loop stats from 0 but the array size from 1
+ for(int r=0; r<=2; r++) {
+ if (g_mob_rat_p2[r][c]==0) {
+ if (lcd.getPixel(c+rat_movement,r+44)!=0) {
+ lcd.setPixel(c+rat_movement,r+44);
+ } else {
+ lcd.clearPixel(c+rat_movement,r+44);
+ }
+ } else if (g_mob_rat_p2[r][c]==1) {
+ lcd.setPixel(c+rat_movement,r+44);
+ }
+ }
+ }
+}
+
+void print_mob_hound_p1() //funtion to print the still hound on the LCD
+{
+ for(int c=0; c<=12; c++) { // 12 beacause the the loop stats from 0 but the array size from 1
+ for(int r=0; r<=7; r++) {
+ if (g_mob_hound_p1[r][c]==0) {
+ if (lcd.getPixel(c+hound_hMovement,r+hound_vMovement)!=0) {
+ lcd.setPixel(c+hound_hMovement,r+hound_vMovement);
+ } else {
+ lcd.clearPixel(c+hound_hMovement,r+hound_vMovement);
+ }
+ } else if (g_mob_hound_p1[r][c]==1) {
+ lcd.setPixel(c+hound_hMovement,r+hound_vMovement);
+ }
+ }
+ }
+}
+
+void print_mob_hound_p2() //funtion to print the moving hound on the LCD
+{
+ for(int c=0; c<=12; c++) { // 12 beacause the the loop stats from 0 but the array size from 1
+ for(int r=0; r<=7; r++) {
+ if (g_mob_hound_p2[r][c]==0) {
+ if (lcd.getPixel(c+hound_hMovement,r+hound_vMovement)!=0) {
+ lcd.setPixel(c+hound_hMovement,r+hound_vMovement);
+ } else {
+ lcd.clearPixel(c+hound_hMovement,r+hound_vMovement);
+ }
+ } else if (g_mob_hound_p2[r][c]==1) {
+ lcd.setPixel(c+hound_hMovement,r+hound_vMovement);
+ }
+ }
+ }
+}
+
+void print_mob_hound_dead() //funtion to print the moving hound on the LCD
+{
+ for(int c=0; c<=12; c++) { // 12 beacause the the loop stats from 0 but the array size from 1
+ for(int r=0; r<=7; r++) {
+ if (g_mob_hound_dead[r][c]==0) {
+ if (lcd.getPixel(c+hound_hMovement,r+hound_vMovement)!=0) {
+ lcd.setPixel(c+hound_hMovement,r+hound_vMovement);
+ } else {
+ lcd.clearPixel(c+hound_hMovement,r+hound_vMovement);
+ }
+ } else if (g_mob_hound_dead[r][c]==1) {
+ lcd.setPixel(c+hound_hMovement,r+hound_vMovement);
+ }
+ }
+ }
+}
+
void print_mob_bear_p1() //funtion to print the still bear on the LCD
{
for(int c=0; c<=18; c++) { //18 beacause the the loop stats from 0 but the array size from 1
@@ -274,7 +379,7 @@
}
}
-void print_mob_bear_dead() //funtion to print the moving bear on the LCD
+void print_mob_bear_dead() //funtion to print the bead bear on the LCD
{
for(int c=0; c<=18; c++) { //18 beacause the the loop stats from 0 but the array size from 1
for(int r=0; r<=9; r++) {
@@ -358,15 +463,15 @@
void print_t_rex()
{
for(int c=0; c<=24; c++) { //24 beacause the the loop stats from 0 but the array size from 1
- for(int r=0; r<=25; r++) {
+ for(int r=0; r<=27; r++) {
if (g_t_rex[r][c]==0) {
- if (lcd.getPixel(c+t_rex_movement,r+21)!=0) {
- lcd.setPixel(c+t_rex_movement,r+21);
+ if (lcd.getPixel(c+t_rex_movement,r+19)!=0) {
+ lcd.setPixel(c+t_rex_movement,r+19);
} else {
- lcd.clearPixel(c+t_rex_movement,r+21);
+ lcd.clearPixel(c+t_rex_movement,r+19);
}
} else if (g_t_rex[r][c]==1) {
- lcd.setPixel(c+t_rex_movement,r+21);
+ lcd.setPixel(c+t_rex_movement,r+19);
}
}
}
@@ -375,15 +480,15 @@
void print_t_rex_moving()
{
for(int c=0; c<=24; c++) { //24 beacause the the loop stats from 0 but the array size from 1
- for(int r=0; r<=25; r++) {
+ for(int r=0; r<=27; r++) {
if (g_t_rex_moving[r][c]==0) {
- if (lcd.getPixel(c+t_rex_movement,r+21)!=0) {
- lcd.setPixel(c+t_rex_movement,r+21);
+ if (lcd.getPixel(c+t_rex_movement,r+19)!=0) {
+ lcd.setPixel(c+t_rex_movement,r+19);
} else {
- lcd.clearPixel(c+t_rex_movement,r+21);
+ lcd.clearPixel(c+t_rex_movement,r+19);
}
} else if (g_t_rex_moving[r][c]==1) {
- lcd.setPixel(c+t_rex_movement,r+21);
+ lcd.setPixel(c+t_rex_movement,r+19);
}
}
}
@@ -392,15 +497,15 @@
void print_t_rex_attack()
{
for(int c=0; c<=24; c++) { //24 beacause the the loop stats from 0 but the array size from 1
- for(int r=0; r<=25; r++) {
+ for(int r=0; r<=27; r++) {
if (g_t_rex_attack[r][c]==0) {
- if (lcd.getPixel(c+t_rex_movement,r+21)!=0) {
- lcd.setPixel(c+t_rex_movement,r+21);
+ if (lcd.getPixel(c+t_rex_movement,r+19)!=0) {
+ lcd.setPixel(c+t_rex_movement,r+19);
} else {
- lcd.clearPixel(c+t_rex_movement,r+21);
+ lcd.clearPixel(c+t_rex_movement,r+19);
}
} else if (g_t_rex_attack[r][c]==1) {
- lcd.setPixel(c+t_rex_movement,r+21);
+ lcd.setPixel(c+t_rex_movement,r+19);
}
}
}
@@ -455,16 +560,34 @@
}
}
-void clearCells() // function to clear all pixels on screen
+void print_locks()
{
- for (int i=0; i<85; i++) { //go through every pixel on the x axis
- for (int j=0; j<49; j++) { // go through every pixel on the y axis
- lcd.clearPixel(i,j); // clear the cell
+ int sp=8*story_progress;
+ for(int c=0; c<=3; c++) { //24 beacause the the loop stats from 0 but the array size from 1
+ for(int r=0; r<=5; r++) {
+ for (int n=1; n<=33; n+=8) {
+ if (g_padlock_p1[r][c]==0) {
+ lcd.clearPixel(c+8,r+n);
+ } else if (g_padlock_p1[r][c]==1) {
+ lcd.setPixel(c+8,r+n);
+ }
+ }
}
}
- lcd.refresh(); //refresh the lcd
+ for(int c=0; c<=3; c++) { //24 beacause the the loop stats from 0 but the array size from 1
+ for(int r=0; r<=5; r++) {
+ for (int n=1; n<=sp; n+=8) {
+ if (g_padlock_p2[r][c]==0) {
+ lcd.clearPixel(c+8,r+n);
+ } else if (g_padlock_p2[r][c]==1) {
+ lcd.setPixel(c+8,r+n);
+ }
+ }
+ }
+ }
}
+
void shoot()
{
lcd.setPixel(bullet,g_jump+4);
@@ -545,7 +668,7 @@
}
}
-struct motion { //defines the motion of the charecters
+struct motion { //defines the motion of the characters
int x;
int v_x;
int acc_x;
@@ -576,6 +699,7 @@
{32,{4,4,4,4,4}}
};
+void game();
int main() //main function, currently used to test different functions
{
b_A.mode(PullDown);
@@ -588,18 +712,17 @@
//press_b_A.fall(&press_b_A_isr);
//press_b_A.mode(PullDown);
calibrateJoystick();
- int run=0;
Menu: //declares a "goto" location for the goto functions
+ menuState=0;
while(1) {
-
if (g_Ticker_Menu_flag) {
g_Ticker_Menu_flag=0;
updateJoystick();
- generate_random_number();
+ lcd.setBrightness(brightness);
menu_select = fsm_main_menu[menuState].menu_select; // set ouput depending on current state
menuState = fsm_main_menu[menuState].nextState[joystick.direction]; // when joystick.direction has a vaule of CENTRE/RIGHT/LEFT the state machine input is 0 when it has a value of DOWN it is 0b01 when it has a value of UP is is 0b10
- clearCells();
+ lcd.clear();
lcd.printString("Story mode",13,0);
lcd.printString("Minigame",18,1);
lcd.printString("Settings",18,2);
@@ -631,7 +754,48 @@
}
Story_Mode:
-Minigame:
+ menuState=0;
+ while(1) {
+ if (g_Ticker_Menu_flag) {
+ g_Ticker_Menu_flag=0;
+ updateJoystick();
+ lcd.setBrightness(brightness);
+ menu_select = fsm_main_menu[menuState].menu_select; // set ouput depending on current state
+ menuState = fsm_main_menu[menuState].nextState[joystick.direction]; // when joystick.direction has a vaule of CENTRE/RIGHT/LEFT the state machine input is 0 when it has a value of DOWN it is 0b01 when it has a value of UP is is 0b10
+ lcd.clear();
+ print_locks();
+ lcd.printString("Chapter 1",20,0);
+ lcd.printString("Chapter 2",20,1);
+ lcd.printString("Chapter 3",20,2);
+ lcd.printString("Chapter 4",20,3);
+ lcd.printString("Chapter 5",20,4);
+ for (int i=0; i<85; i++) { //go through every pixel on the x axis
+ for (int j=menu_select; j<(menu_select+8); j++) { // go through relevant pixels on the y axis
+ if (lcd.getPixel(i,j)== 0) { //if the pixel is on trun it off
+ lcd.setPixel(i,j);
+ } else {
+ lcd.clearPixel(i,j); //if the pixel is off turn it on
+ }
+ }
+ }
+ lcd.refresh();
+ if (b_A & menu_select==0&story_progress<=1) {
+ goto Story_Mode;
+ } else if (b_A & menu_select==8&story_progress<=2) {
+ goto Minigame;
+ } else if (b_A & menu_select==16&story_progress<=3) {
+ goto Settings;
+ } else if (b_A & menu_select==24&story_progress<=4) {
+ goto Leaderboard;
+ } else if (b_A & menu_select==32&story_progress<=5) {
+ goto Credits;
+ }
+ if (b_B) {
+ goto Menu;
+ }
+ }
+ sleep();
+ }
Settings:
menuState=0;
while (1) {
@@ -640,9 +804,9 @@
updateJoystick();
menu_select = fsm_settings_menu[menuState].menu_select; // set ouput depending on current state
menuState = fsm_settings_menu[menuState].nextState[joystick.direction]; // when joystick.direction has a vaule of CENTRE/RIGHT/LEFT the state machine input is 0 when it has a value of DOWN it is 0b01 when it has a value of UP is is 0b10
- clearCells();
+ lcd.clear();
lcd.printString("Brightness",13,0);
- lcd.printString("Music",18,1);
+ lcd.printString("Difficulty",13,1);
for (int i=0; i<85; i++) { //go through every pixel on the x axis
for (int j=menu_select; j<(menu_select+8); j++) { // go through relevant pixels on the y axis
if (lcd.getPixel(i,j)== 0) { //if the pixel is on trun it off
@@ -656,435 +820,665 @@
if (b_A & menu_select==0) {
goto Brightness;
} else if (b_A & menu_select==8) {
- goto Music;
+ goto Difficulty;
+ }
+ if (b_B) {
+ goto Menu;
}
}
}
Brightness:
-Music:
+ menuState=0;
+ while(1) {
+ if (g_Ticker_Menu_flag) {
+ g_Ticker_Menu_flag=0;
+ updateJoystick();
+ menu_select = fsm_main_menu[menuState].menu_select; // set ouput depending on current state
+ menuState = fsm_main_menu[menuState].nextState[joystick.direction]; // when joystick.direction has a vaule of CENTRE/RIGHT/LEFT the state machine input is 0 when it has a value of DOWN it is 0b01 when it has a value of UP is is 0b10
+ lcd.clear();
+ lcd.printString("Dark",30,0);
+ lcd.printString("Eco",33,1);
+ lcd.printString("Regular",23,2);
+ lcd.printString("Bright",26,3);
+ lcd.printString("Blinding",20,4);
+ for (int i=0; i<85; i++) { //go through every pixel on the x axis
+ for (int j=menu_select; j<(menu_select+8); j++) { // go through relevant pixels on the y axis
+ if (lcd.getPixel(i,j)== 0) { //if the pixel is on trun it off
+ lcd.setPixel(i,j);
+ } else {
+ lcd.clearPixel(i,j); //if the pixel is off turn it on
+ }
+ }
+ }
+ lcd.refresh();
+ if (b_A & menu_select==0) {
+ brightness=0;
+ goto Menu;
+ } else if (b_A & menu_select==8) {
+ brightness=0.3;
+ goto Menu;
+ } else if (b_A & menu_select==16) {
+ brightness=0.5;
+ goto Menu;
+ } else if (b_A & menu_select==24) {
+ brightness=0.7;
+ goto Menu;
+ } else if (b_A & menu_select==32) {
+ brightness=1;
+ goto Menu;
+ }
+ if (b_B) {
+ goto Settings;
+ }
+ }
+ sleep();
+ }
+Difficulty:
+ menuState=0;
+ while(1) {
+ if (g_Ticker_Menu_flag) {
+ g_Ticker_Menu_flag=0;
+ updateJoystick();
+ menu_select = fsm_main_menu[menuState].menu_select; // set ouput depending on current state
+ menuState = fsm_main_menu[menuState].nextState[joystick.direction]; // when joystick.direction has a vaule of CENTRE/RIGHT/LEFT the state machine input is 0 when it has a value of DOWN it is 0b01 when it has a value of UP is is 0b10
+ lcd.clear();
+ lcd.printString("Piece of Cake",3,0);
+ lcd.printString("Easy",30,1);
+ lcd.printString("Regular",23,2);
+ lcd.printString("Hard",30,3);
+ lcd.printString("Legendary",15,4);
+ for (int i=0; i<85; i++) { //go through every pixel on the x axis
+ for (int j=menu_select; j<(menu_select+8); j++) { // go through relevant pixels on the y axis
+ if (lcd.getPixel(i,j)== 0) { //if the pixel is on trun it off
+ lcd.setPixel(i,j);
+ } else {
+ lcd.clearPixel(i,j); //if the pixel is off turn it on
+ }
+ }
+ }
+ lcd.refresh();
+ if (b_A & menu_select==0) {
+ difficulty=0;
+ goto Menu;
+ } else if (b_A & menu_select==8) {
+ difficulty=1;
+ goto Menu;
+ } else if (b_A & menu_select==16) {
+ difficulty=2;
+ goto Menu;
+ } else if (b_A & menu_select==24) {
+ difficulty=3;
+ goto Menu;
+ } else if (b_A & menu_select==32) {
+ difficulty=4;
+ goto Menu;
+ }
+ if (b_B) {
+ goto Settings;
+ }
+ }
+ sleep();
+ }
Leaderboard:
+ while(1) {
+ lcd.clear();
+ char buffer[14];
+ int p = sprintf(buffer,"%d",score);
+ if (g_Ticker_Menu_flag) {
+ g_Ticker_Menu_flag=0;
+ FILE *Highscores = fopen("/sd/Highscores.txt", "w");
+ if (Highscores!=NULL) {
+ green_led=0;
+ fscanf(Highscores, "%d", &score);
+ fclose(Highscores);
+ lcd.printString("Highscore:",0,0);
+ lcd.printString(buffer,10,3);
+ } else if (Highscores!=NULL) {
+ red_led=0;
+ lcd.printString("Error reading",0,0);
+ lcd.printString("file try",0,1);
+ lcd.printString("re-inserting",0,2);
+ lcd.printString("SD card",0,3);
+ }
+ }
+ lcd.refresh();
+ sleep();
+ }
Credits:
+Minigame:
Continue:
wait(0.5);
while (1) {
- clearCells();
- updateJoystick();
- led_bar();
- print_score();
- generate_random_number();
if (g_Ticker_Game_flag) {
g_Ticker_Game_flag=0;
if (lives==0) {
goto GameOver;
}
- if (lose_lives_delay_flag==1) {
- lives_delay_loop++;
- if (lives_delay_loop>=10) { //means that the delay between one life beeing lost and another one beeing lost is at least 1s
- lives_delay_loop=0;
- lose_lives_delay_flag=0;
- }
-
- }
- if (ammo<=5) {
- if (i%8>=4) {
- print_ammo();
- }
- } else {
- print_ammo();
- }
- if (b_B) {
- jump_flag=1;
- }
if (swJoy==1) {
goto Pause;
}
- if (shoot_flag==0) {
- bullet=9;
- if (joystick.direction==DOWN) {
- bullet_height=40;
- } else {
- bullet_height=g_jump+4;
- }
- } else if (shoot_flag==1&loop==0) {
- loop++;
- ammo--;
- if (joystick.direction==DOWN&jump_flag!=1) {
- bullet_height=42;
- } else {
- bullet_height=g_jump+4;
- }
- }
- if (b_A) {
- if (ammo<=0) {
- shoot_flag=0;
- } else {
- shoot_flag=1;
- }
- }
- if (random_num<1000) {
- print_bear_flag=1;
- } else if (random_num>=1000&random_num<3000) {
- print_bird_flag=1;
- } else if (random_num>=3000&random_num<3010) {
- print_heart_flag=1;
- } else if (random_num>=3010&random_num<3050) {
- print_ammo_flag=1;
- } else if (random_num>=3050&random_num<6000) {
- print_cactus_flag=1;
- } else if (random_num>=6000&random_num<7000) {
- print_ammo_flag=1;
- print_t_rex_flag=1;
- }
- if (print_t_rex_flag==1&random_num%10==0&fire_on_screen==0) {
- fire_on_screen=1;
- print_fire_ball_flag=1;
- fire_ball_hMovement=t_rex_movement-6;
- fire_ball_vMovement=27;
- }
- if (joystick.direction==CENTRE&jump_flag!=1) {
- lcd.setPixel(bullet,bullet_height);
- lcd.setPixel(bullet+1,bullet_height);
- print_recks_still_gun();
- if (shoot_flag==1) {
- bullet+=20;
- if (bullet>=84) {
- shoot_flag=0;
- loop=0;
- }
- }
- } else if (joystick.direction==LEFT&jump_flag!=1) {
- if (run%2==0) {
- print_recks_still_gun();
- } else if (run%2==1) {
- print_recks_moving_gun();
- }
- lcd.setPixel(bullet,bullet_height);
- lcd.setPixel(bullet+1,bullet_height);
- if (shoot_flag==1) {
- bullet+=21;
- if (bullet>=84) {
- shoot_flag=0;
- loop=0;
- }
- }
- h_movement--;
- run++;
- } else if (joystick.direction==RIGHT&jump_flag!=1) {
- if (run%2==0) {
- print_recks_still_gun();
- } else if (run%2==1) {
- print_recks_moving_gun();
- }
- lcd.setPixel(bullet,bullet_height);
- lcd.setPixel(bullet+1,bullet_height);
- if (shoot_flag==1) {
- bullet+=19;
- if (bullet>=84) {
- shoot_flag=0;
- loop=0;
- }
- }
- h_movement++;
- run++;
- } else if (joystick.direction==DOWN&jump_flag!=1) {
- lcd.setPixel(bullet,bullet_height);
- lcd.setPixel(bullet+1,bullet_height);
- print_recks_crouch_gun();
- bullet_height=42;
- if (shoot_flag==1) {
- bullet+=20;
- if (bullet>=84) {
- shoot_flag=0;
- loop=0;
- }
- }
- } else if (jump_flag==1) {
- if (joystick.direction==LEFT) {
- if (shoot_flag==1) {
- bullet+=21;
- if (bullet>=84) {
- shoot_flag=0;
- loop=0;
- }
- }
- h_movement--;
- } else if (joystick.direction==RIGHT) {
- if (shoot_flag==1) {
- bullet+=19;
- if (bullet>=84) {
- shoot_flag=0;
- loop=0;
- }
- }
- h_movement++;
- } else if (joystick.direction==CENTRE) {
- if (shoot_flag==1) {
- bullet+=20;
- if (bullet>=84) {
- shoot_flag=0;
- loop=0;
- }
- }
- }
- if (g_jump<=36&jumpUp==0&g_jump!=15) {
- lcd.setPixel(bullet,bullet_height);
- lcd.setPixel(bullet+1,bullet_height);
- if (bullet>=84) {
- shoot_flag=0;
- loop=0;
- }
- print_recks_jump_gun();
- g_jump-=6-accel;
- accel++;
- } else if (g_jump>=15&g_jump!=36) {
- lcd.setPixel(bullet,bullet_height);
- lcd.setPixel(bullet+1,bullet_height);
- if (bullet>=84) {
- shoot_flag=0;
- loop=0;
- }
- print_recks_jump_gun();
- g_jump+=6-accel;
- accel--;
- jumpUp=1;
- } else if (g_jump==36&jumpUp==1) {
- lcd.setPixel(bullet,bullet_height);
- lcd.setPixel(bullet+1,bullet_height);
- if (bullet>=84) {
- shoot_flag=0;
- loop=0;
- }
- print_recks_still_gun();
- jump_flag=0;
- jumpUp=0;
- g_jump=36;
- accel=0;
- }
- }
+ lcd.clear();
+ updateJoystick();
+ game();
+
}
- if (print_bear_flag==1) {
- if (i%4>=2) {
- print_mob_bear_p1();
- } else if (i%4<2) {
- print_mob_bear_p2();
- }
- if (joystick.direction==LEFT) {
- bear_movement++;
- } else if (joystick.direction==RIGHT) {
- bear_movement--;
- }
- bear_movement-=2;
- if (bear_movement<=-15) {
- bear_movement=100;
- print_bear_flag=0;
- }
- if (bear_movement<=8&bear_movement>=-5&g_jump>28&lose_lives_delay_flag==0) { //a life is lost if recks has an vertical and horizontal position equal to one of the pixels corresponding to the bears position
- lives--;
- lose_lives_delay_flag=1;
- }
- if (shoot_flag==1&bullet_height<72) {
- bear_lives++;
- if (bear_lives==12-3*g_g1-3*g_g2) {
- print_mob_bear_dead();
- print_bear_flag=0;
- bear_movement=100;
- kill_score+=7;
- bear_lives=0;
- }
- }
- }
- if (print_bird_flag==1) {
- if (i%8>=4) {
- print_mob_bird_p1();
- } else if (i%8<4) {
- print_mob_bird_p2();
- }
- bird_hMovement-=2;
- if (joystick.direction==LEFT) {
- bird_hMovement++;
- } else if (joystick.direction==RIGHT) {
- bird_hMovement--;
- }
- if (random_num%6==0) {
- bird_vMovement--;
- } else if (random_num%6>=4) {
- bird_vMovement++;
- }
- if (bird_vMovement>=37) {
- bird_vMovement=37;
- } else if (bird_vMovement<=10) {
- bird_vMovement=10;
- }
- if (bird_hMovement<=-10) {
- print_bird_flag=0;
- bird_hMovement=100;
- bird_vMovement=20;
- bear_lives=0;
- }
- if ((bird_hMovement>=0&bird_hMovement<=10)&(bird_vMovement+5>=g_jump&bird_vMovement+5<=g_jump+10&lose_lives_delay_flag==0)) {
- lives--;
- lose_lives_delay_flag=1;
- }
- if (shoot_flag==1&(bullet_height==bird_vMovement+5|bullet_height==bird_vMovement+4)) {
- print_mob_bird_dead();
- print_bird_flag=0;
- bird_hMovement=100;
- bird_vMovement=20;
- kill_score+=5;
- }
- }
- if (print_cactus_flag==1) {
- print_cactus();
- if (joystick.direction==LEFT) {
- cactus_movement++;
- } else if (joystick.direction==RIGHT) {
- cactus_movement--;
- }
- if (cactus_movement<=-10) {
- cactus_movement=110;
- print_cactus_flag=0;
- }
- if (cactus_movement<=10&cactus_movement>=2&g_jump>32&lose_lives_delay_flag==0) {
- lives--;
- lose_lives_delay_flag=1;
- }
- }
-
- if (print_t_rex_flag==1) {
- if (joystick.direction==LEFT) {
- t_rex_movement++;
- } else if (joystick.direction==RIGHT) {
- t_rex_movement--;
- }
- if (random_num%4==0&print_fire_ball_flag!=1) {
- t_rex_movement+=2;
- print_t_rex_moving();
- } else if (random_num%4==1&print_fire_ball_flag!=1) {
- t_rex_movement-=2;
- print_t_rex_moving();
- } else if (random_num%4>1&print_fire_ball_flag!=1) {
- print_t_rex();
- }
- if (t_rex_movement<=-100) {
- t_rex_movement=120;
- print_t_rex_flag=0;
- }
- if (t_rex_movement<=6&t_rex_movement>=2&lose_lives_delay_flag==0) {
- lives--;
- lose_lives_delay_flag=1;
- }
- }
- if (print_fire_ball_flag==1) {
- print_t_rex_attack();
- fire_ball_hMovement-=2;
- if (joystick.direction==LEFT) {
- fire_ball_hMovement++;
- } else if (joystick.direction==RIGHT) {
- fire_ball_hMovement--;
- }
- if (i%4>=2) {
- print_fire_ball_p1();
- } else {
- print_fire_ball_p2();
- }
- if (fire_ball_vMovement>=37) {
- fire_ball_vMovement=37;
- }
- if (random_num%3==0) {
- fire_ball_vMovement++;
- } else if (random_num%3==1) {
- fire_ball_vMovement+=2;
- }
- if (fire_ball_hMovement<=-10) {
- fire_ball_vMovement=27;
- fire_ball_hMovement=t_rex_movement-6;
- print_fire_ball_flag=0;
- fire_on_screen=0;
- }
- if (fire_ball_hMovement>=3&fire_ball_hMovement<=8&fire_ball_vMovement>g_jump-5&fire_ball_vMovement<g_jump+10&lose_lives_delay_flag==0) {
- lives--;
- lose_lives_delay_flag=1;
- }
- if (shoot_flag==1) {
- t_rex_lives++;
- if (t_rex_lives>=24-3*g_g1-3*g_g2) {
- print_t_rex_flag=0;
- t_rex_movement=120;
- kill_score+=20;
- t_rex_lives=0;
- }
- }
- }
- if (print_heart_flag==1) {
- print_heart();
- if (joystick.direction==LEFT) {
- heart_movement++;
- } else if (joystick.direction==RIGHT) {
- heart_movement--;
- }
- if (heart_movement<=5&g_jump>26) {
- heart_movement=90;
- print_heart_flag=0;
- lives++;
- }
- }
- if (print_ammo_flag==1) {
- print_ammo_pickUp();
- if (joystick.direction==LEFT) {
- ammo_movement++;
- } else if (joystick.direction==RIGHT) {
- ammo_movement--;
- }
- if (ammo_movement<=5&g_jump>26) {
- ammo_movement=90;
- print_ammo_flag=0;
- ammo+=5;
- ammo+=rand()%7;
- }
- }
- print_clouds();
- ground();
i++;
lcd.refresh();
sleep();
}
Pause:
+ int q;
while (1) {
- clearCells();
- wait(0.2);
- if (swJoy==1) {
- goto Continue;
+ q++;
+ lcd.printString("PAUSED",25,3);
+ if (g_Ticker_Menu_flag) {
+ g_Ticker_Menu_flag=0;
+ if (swJoy&q>5) {
+ q=0;
+ lcd.setBrightness(brightness);
+ led_bar();
+ goto Continue;
+ } else if (q>=20) {
+ lcd.setBrightness(0);
+ led=0;
+ }
}
+ sleep();
}
GameOver:
- clearCells();
- lcd.printString("GAME",25,1);
- lcd.printString("OVER",25,2);
+ char buffer[14];
+ int p = sprintf(buffer,"%d",score);
+ FILE *Highscores = fopen("/sd/Highscores.txt", "w");
+ if (Highscores!=NULL) {
+ fprintf(Highscores, "%d\n", highscore);
+ fclose(Highscores);
+ green_led=0;
+ } else {
+ red_led=0;
+ }
+ led_bar();
+ lcd.clear();
+ for (int freeze=0; freeze<=30; freeze++) {
+ if (g_Ticker_Menu_flag) {
+ g_Ticker_Menu_flag=0;
+ lcd.clear();
+ lcd.printString("GAME",25,1);
+ lcd.printString("OVER",25,2);
+ lcd.refresh();
+ }
+ sleep();
+ }
+ green_led=1;
+ red_led=1;
lcd.printString("A Retry",40,4);
lcd.printString("B Back to Menu",0,5);
+ lcd.refresh();
while (1) {
- if (b_A==1) {
- wait(0.2);
- initialize_values();
- goto Continue;
- } else if (b_B==1) {
- wait(0.2);
- initialize_values();
- goto Menu;
+ if (g_Ticker_Menu_flag) {
+ g_Ticker_Menu_flag=0;
+ if (b_A==1) {
+ initialize_values();
+ goto Continue;
+ } else if (b_B==1) {
+ initialize_values();
+ goto Menu;
+ }
}
+ sleep();
}
}
-
-
-
// -----------------------------------------------------------------------------------------------------------------------------------------
-void game() {
-
- };
+void game()
+{
+ led_bar();
+ print_score();
+ generate_random_number();
+ if (lose_lives_delay_flag==1) {
+ lives_delay_loop++;
+ if (lives_delay_loop>=10) { //means that the delay between one life beeing lost and another one beeing lost is at least 1s
+ lives_delay_loop=0;
+ lose_lives_delay_flag=0;
+ }
+
+ }
+ if (ammo<=5) {
+ if (i%8>=4) {
+ print_ammo();
+ }
+ } else {
+ print_ammo();
+ }
+ if (b_B) {
+ jump_flag=1;
+ }
+ if (shoot_flag==0) {
+ bullet=9;
+ if (joystick.direction==DOWN) {
+ bullet_height=42;
+ } else {
+ bullet_height=g_jump+4;
+ }
+ } else if (shoot_flag==1&loop==0) {
+ loop++;
+ ammo--;
+ if (joystick.direction==DOWN&jump_flag!=1) {
+ bullet_height=42;
+ } else {
+ bullet_height=g_jump+4;
+ }
+ }
+ if (b_A) {
+ if (ammo<=0) {
+ shoot_flag=0;
+ } else {
+ shoot_flag=1;
+ }
+ }
+ if (random_num<1000) {
+ print_bear_flag=1;
+ } else if (random_num>=1000&random_num<3000) {
+ print_bird_flag=1;
+ } else if (random_num>=3000&random_num<3010) {
+ print_heart_flag=1;
+ } else if (random_num>=3010&random_num<3050) {
+ print_ammo_flag=1;
+ } else if (random_num>=3050&random_num<6000) {
+ print_cactus_flag=1;
+ } else if (random_num>=6000&random_num<6100) {
+ print_ammo_flag=1;
+ print_t_rex_flag=1;
+ } else if (random_num>=6100&random_num<7000) {
+ print_rat_flag=1;
+ } else if (random_num>=7000&random_num<800) {
+ print_hound_flag=1;
+ }
+
+ if (print_t_rex_flag==1&random_num%10==0&fire_on_screen==0) {
+ fire_on_screen=1;
+ print_fire_ball_flag=1;
+ fire_ball_hMovement=t_rex_movement-6;
+ fire_ball_vMovement=25;
+ }
+ if (joystick.direction==CENTRE&jump_flag!=1) {
+ lcd.setPixel(bullet,bullet_height);
+ lcd.setPixel(bullet+1,bullet_height);
+ print_recks_still_gun();
+ if (shoot_flag==1) {
+ bullet+=20;
+ if (bullet>=84) {
+ shoot_flag=0;
+ loop=0;
+ }
+ }
+ } else if (joystick.direction==LEFT&jump_flag!=1) {
+ if (run%2==0) {
+ print_recks_still_gun();
+ } else if (run%2==1) {
+ print_recks_moving_gun();
+ }
+ lcd.setPixel(bullet,bullet_height);
+ lcd.setPixel(bullet+1,bullet_height);
+ if (shoot_flag==1) {
+ bullet+=21;
+ if (bullet>=84) {
+ shoot_flag=0;
+ loop=0;
+ }
+ }
+ h_movement--;
+ run++;
+ } else if (joystick.direction==RIGHT&jump_flag!=1) {
+ if (run%2==0) {
+ print_recks_still_gun();
+ } else if (run%2==1) {
+ print_recks_moving_gun();
+ }
+ lcd.setPixel(bullet,bullet_height);
+ lcd.setPixel(bullet+1,bullet_height);
+ if (shoot_flag==1) {
+ bullet+=19;
+ if (bullet>=84) {
+ shoot_flag=0;
+ loop=0;
+ }
+ }
+ h_movement++;
+ run++;
+ } else if (joystick.direction==DOWN&jump_flag!=1) {
+ lcd.setPixel(bullet,bullet_height);
+ lcd.setPixel(bullet+1,bullet_height);
+ print_recks_crouch_gun();
+ bullet_height=42;
+ if (shoot_flag==1) {
+ bullet+=20;
+ if (bullet>=84) {
+ shoot_flag=0;
+ loop=0;
+ }
+ }
+ } else if (jump_flag==1) {
+ if (joystick.direction==LEFT) {
+ if (shoot_flag==1) {
+ bullet+=21;
+ if (bullet>=84) {
+ shoot_flag=0;
+ loop=0;
+ }
+ }
+ h_movement--;
+ } else if (joystick.direction==RIGHT) {
+ if (shoot_flag==1) {
+ bullet+=19;
+ if (bullet>=84) {
+ shoot_flag=0;
+ loop=0;
+ }
+ }
+ h_movement++;
+ } else if (joystick.direction==CENTRE) {
+ if (shoot_flag==1) {
+ bullet+=20;
+ if (bullet>=84) {
+ shoot_flag=0;
+ loop=0;
+ }
+ }
+ }
+ if (g_jump<=36&jumpUp==0&g_jump!=15) {
+ lcd.setPixel(bullet,bullet_height);
+ lcd.setPixel(bullet+1,bullet_height);
+ if (bullet>=84) {
+ shoot_flag=0;
+ loop=0;
+ }
+ print_recks_jump_gun();
+ g_jump-=6-accel;
+ accel++;
+ } else if (g_jump>=15&g_jump!=36) {
+ lcd.setPixel(bullet,bullet_height);
+ lcd.setPixel(bullet+1,bullet_height);
+ if (bullet>=84) {
+ shoot_flag=0;
+ loop=0;
+ }
+ print_recks_jump_gun();
+ g_jump+=6-accel;
+ accel--;
+ jumpUp=1;
+ } else if (g_jump==36&jumpUp==1) {
+ lcd.setPixel(bullet,bullet_height);
+ lcd.setPixel(bullet+1,bullet_height);
+ if (bullet>=84) {
+ shoot_flag=0;
+ loop=0;
+ }
+ print_recks_still_gun();
+ jump_flag=0;
+ jumpUp=0;
+ g_jump=36;
+ accel=0;
+ }
+ }
+ if (print_rat_flag==1) {
+ if (i%4>=2) {
+ print_mob_rat_p1();
+ } else if (i%4<2) {
+ print_mob_rat_p2();
+ }
+ if (joystick.direction==LEFT) {
+ rat_movement++;
+ } else if (joystick.direction==RIGHT) {
+ rat_movement--;
+ }
+ rat_movement-=3;
+ if (rat_movement<=-15) {
+ rat_movement=100;
+ print_rat_flag=0;
+ }
+ if (rat_movement<=5&rat_movement>=-3&g_jump>32&lose_lives_delay_flag==0) { //a life is lost if recks has an vertical and horizontal position equal to one of the pixels corresponding to the bears position
+ lives--;
+ lose_lives_delay_flag=1;
+ }
+ }
+ if (print_hound_flag==1) {
+ if (i%4>=2&hound_jump_flag!=1) {
+ print_mob_hound_p1();
+ } else if (i%4<2&hound_jump_flag!=1) {
+ print_mob_hound_p2();
+ }
+ if (joystick.direction==LEFT) {
+ hound_hMovement++;
+ } else if (joystick.direction==RIGHT) {
+ hound_hMovement--;
+ }
+ hound_hMovement-=2;
+ if (hound_hMovement<=-15) {
+ hound_hMovement=100;
+ print_hound_flag=0;
+ }
+ if (random_num%10==0) {
+ hound_jump_flag=1;
+ }
+ if (hound_jump_flag==1) {
+ hound_jump++;
+ hound_hMovement--;
+ if (hound_jump==1) {
+ hound_vMovement-=3;
+ } else if (hound_jump==2) {
+ hound_vMovement-=2;
+ } else if (hound_jump==3) {
+ hound_vMovement-=1;
+ } else if (hound_jump==4) {
+ hound_vMovement+=1;
+ } else if (hound_jump==5) {
+ hound_vMovement+=2;
+ } else if (hound_jump==6) {
+ hound_vMovement+=3;
+ } else if (hound_jump==7) {
+ hound_jump_flag=0;
+ hound_jump=0;
+ }
+ print_mob_hound_p2();
+
+ }
+ if ((hound_hMovement<=8&hound_hMovement>=-5&g_jump>28&lose_lives_delay_flag==0&hound_jump_flag!=1)|(hound_hMovement<=8&hound_hMovement>=-5&g_jump>22&lose_lives_delay_flag==0&hound_jump_flag==1)) { //a life is lost if recks has an vertical and horizontal position equal to one of the pixels corresponding to the hounds position
+ lives--;
+ lose_lives_delay_flag=1;
+ }
+ if (shoot_flag==1&bullet_height>hound_vMovement&bullet_height<hound_vMovement+8) {
+ print_mob_hound_dead();
+ print_hound_flag=0;
+ hound_hMovement=90;
+ kill_score+=5;
+ }
+ }
+ if (print_bear_flag==1) {
+ if (i%4>=2) {
+ print_mob_bear_p1();
+ } else if (i%4<2) {
+ print_mob_bear_p2();
+ }
+ if (joystick.direction==LEFT) {
+ bear_movement++;
+ } else if (joystick.direction==RIGHT) {
+ bear_movement--;
+ }
+ bear_movement-=2;
+ if (bear_movement<=-15) {
+ bear_movement=100;
+ print_bear_flag=0;
+ }
+ if (bear_movement<=8&bear_movement>=-5&g_jump>26&lose_lives_delay_flag==0) { //a life is lost if recks has an vertical and horizontal position equal to one of the pixels corresponding to the bears position
+ lives--;
+ lose_lives_delay_flag=1;
+ }
+ if (shoot_flag==1&bullet_height>8) {
+ bear_lives++;
+ if (bear_lives==12-3*g_g1-3*g_g2) {
+ print_mob_bear_dead();
+ print_bear_flag=0;
+ bear_movement=100;
+ kill_score+=7;
+ bear_lives=0;
+ }
+ }
+ }
+ if (print_bird_flag==1) {
+ if (i%8>=4) {
+ print_mob_bird_p1();
+ } else if (i%8<4) {
+ print_mob_bird_p2();
+ }
+ bird_hMovement-=2;
+ if (joystick.direction==LEFT) {
+ bird_hMovement++;
+ } else if (joystick.direction==RIGHT) {
+ bird_hMovement--;
+ }
+ if (random_num%6==0) {
+ bird_vMovement--;
+ } else if (random_num%6>=4) {
+ bird_vMovement++;
+ }
+ if (bird_vMovement>=37) {
+ bird_vMovement=37;
+ } else if (bird_vMovement<=10) {
+ bird_vMovement=10;
+ }
+ if (bird_hMovement<=-10) {
+ print_bird_flag=0;
+ bird_hMovement=100;
+ bird_vMovement=20;
+ bear_lives=0;
+ }
+ if ((bird_hMovement>=0&bird_hMovement<=10)&(bird_vMovement+5>=g_jump&bird_vMovement+5<=g_jump+10&lose_lives_delay_flag==0)) {
+ lives--;
+ lose_lives_delay_flag=1;
+ }
+ if (shoot_flag==1&(bullet_height==bird_vMovement+5|bullet_height==bird_vMovement+4)) {
+ print_mob_bird_dead();
+ print_bird_flag=0;
+ bird_hMovement=100;
+ bird_vMovement=20;
+ kill_score+=5;
+ }
+ }
+ if (print_cactus_flag==1) {
+ print_cactus();
+ if (joystick.direction==LEFT) {
+ cactus_movement++;
+ } else if (joystick.direction==RIGHT) {
+ cactus_movement--;
+ }
+ if (cactus_movement<=-10) {
+ cactus_movement=110;
+ print_cactus_flag=0;
+ }
+ if (cactus_movement<=10&cactus_movement>=2&g_jump>32&lose_lives_delay_flag==0) {
+ lives--;
+ lose_lives_delay_flag=1;
+ }
+ }
+
+ if (print_t_rex_flag==1) {
+ if (joystick.direction==LEFT) {
+ t_rex_movement++;
+ } else if (joystick.direction==RIGHT) {
+ t_rex_movement--;
+ }
+ if (random_num%4==0&print_fire_ball_flag!=1) {
+ t_rex_movement+=2;
+ print_t_rex_moving();
+ } else if (random_num%4==1&print_fire_ball_flag!=1) {
+ t_rex_movement-=2;
+ print_t_rex_moving();
+ } else if (random_num%4>1&print_fire_ball_flag!=1) {
+ print_t_rex();
+ }
+ if (t_rex_movement<=-100) {
+ t_rex_movement=120;
+ print_t_rex_flag=0;
+ }
+ if (t_rex_movement<=6&t_rex_movement>=2&lose_lives_delay_flag==0) {
+ lives--;
+ lose_lives_delay_flag=1;
+ }
+ }
+ if (print_fire_ball_flag==1) {
+ print_t_rex_attack();
+ fire_ball_hMovement-=2;
+ if (joystick.direction==LEFT) {
+ fire_ball_hMovement++;
+ } else if (joystick.direction==RIGHT) {
+ fire_ball_hMovement--;
+ }
+ if (i%4>=2) {
+ print_fire_ball_p1();
+ } else {
+ print_fire_ball_p2();
+ }
+ if (fire_ball_vMovement>=37) {
+ fire_ball_vMovement=37;
+ }
+ if (random_num%3==0) {
+ fire_ball_vMovement++;
+ } else if (random_num%3==1) {
+ fire_ball_vMovement+=2;
+ }
+ if (fire_ball_hMovement<=-10) {
+ fire_ball_vMovement=27;
+ fire_ball_hMovement=t_rex_movement-6;
+ print_fire_ball_flag=0;
+ fire_on_screen=0;
+ }
+ if (fire_ball_hMovement>=3&fire_ball_hMovement<=8&fire_ball_vMovement>g_jump-5&fire_ball_vMovement<g_jump+10&lose_lives_delay_flag==0) {
+ lives--;
+ lose_lives_delay_flag=1;
+ }
+ if (shoot_flag==1) {
+ t_rex_lives++;
+ if (t_rex_lives>=24-3*g_g1-3*g_g2) {
+ print_t_rex_flag=0;
+ t_rex_movement=120;
+ kill_score+=20;
+ t_rex_lives=0;
+ }
+ }
+ }
+ if (print_heart_flag==1) {
+ print_heart();
+ if (joystick.direction==LEFT) {
+ heart_movement++;
+ } else if (joystick.direction==RIGHT) {
+ heart_movement--;
+ }
+ if (heart_movement<=7&g_jump>26) {
+ heart_movement=90;
+ print_heart_flag=0;
+ lives++;
+ }
+ }
+ if (print_ammo_flag==1) {
+ print_ammo_pickUp();
+ if (joystick.direction==LEFT) {
+ ammo_movement++;
+ } else if (joystick.direction==RIGHT) {
+ ammo_movement--;
+ }
+ if (ammo_movement<=7&g_jump>26) {
+ ammo_movement=90;
+ print_ammo_flag=0;
+ ammo+=5;
+ ammo+=rand()%7;
+ }
+ }
+ print_clouds();
+ ground();
+}
void print_ammo()
{