ELEC2645 (2018/19) / Mbed 2 deprecated fy14lkaa

Dependencies:   mbed

Committer:
fy14lkaa
Date:
Sun Apr 14 16:40:39 2019 +0000
Revision:
8:eec0d7fc365f
Parent:
5:476696df08dd
Child:
12:45b1249b3d9a
created the alien folder, starting on defining the class of the alien in alien.h

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fy14lkaa 5:476696df08dd 1
fy14lkaa 3:985fab783b92 2 ///////// pre-processor directives ////////
fy14lkaa 0:e2af4c8e462e 3 #include "mbed.h"
fy14lkaa 0:e2af4c8e462e 4 #include "Gamepad.h"
fy14lkaa 0:e2af4c8e462e 5 #include "N5110.h"
fy14lkaa 8:eec0d7fc365f 6 #include "SpaceInvadersEngine.h"
fy14lkaa 8:eec0d7fc365f 7
fy14lkaa 0:e2af4c8e462e 8
fy14lkaa 0:e2af4c8e462e 9 #ifdef WITH_TESTING
fy14lkaa 0:e2af4c8e462e 10 # include "tests.h"
fy14lkaa 0:e2af4c8e462e 11 #endif
fy14lkaa 0:e2af4c8e462e 12
fy14lkaa 5:476696df08dd 13 //#define PADDLE_WIDTH 2
fy14lkaa 5:476696df08dd 14 //#define PADDLE_HEIGHT 8
fy14lkaa 5:476696df08dd 15 //#define BALL_SIZE 2
fy14lkaa 5:476696df08dd 16 //#define BALL_SPEED 3
fy14lkaa 0:e2af4c8e462e 17
fy14lkaa 5:476696df08dd 18 // structs //
fy14lkaa 0:e2af4c8e462e 19 struct UserInput {
fy14lkaa 0:e2af4c8e462e 20 Direction d;
fy14lkaa 0:e2af4c8e462e 21 float mag;
fy14lkaa 0:e2af4c8e462e 22 };
fy14lkaa 5:476696df08dd 23
fy14lkaa 5:476696df08dd 24
fy14lkaa 5:476696df08dd 25
fy14lkaa 3:985fab783b92 26 /////////////// objects ///////////////
fy14lkaa 0:e2af4c8e462e 27 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
fy14lkaa 0:e2af4c8e462e 28 Gamepad pad;
fy14lkaa 5:476696df08dd 29
fy14lkaa 3:985fab783b92 30 //Direction _d;
fy14lkaa 3:985fab783b92 31 //SpaceEngine space;
fy14lkaa 3:985fab783b92 32 ///////////// prototypes ///////////////
fy14lkaa 0:e2af4c8e462e 33 void init();
fy14lkaa 0:e2af4c8e462e 34 void update_game(UserInput input);
fy14lkaa 0:e2af4c8e462e 35 void render();
fy14lkaa 0:e2af4c8e462e 36 void welcome();
fy14lkaa 5:476696df08dd 37 /*
fy14lkaa 3:985fab783b92 38 const int run[12][10] = {
fy14lkaa 3:985fab783b92 39 { 0,0,0,0,0,1,1,1,0,0 },
fy14lkaa 3:985fab783b92 40 { 0,0,0,0,0,1,1,1,0,0 },
fy14lkaa 3:985fab783b92 41 { 0,0,0,1,1,1,1,0,0,0 },
fy14lkaa 3:985fab783b92 42 { 0,0,1,1,1,1,0,1,0,0 },
fy14lkaa 3:985fab783b92 43 { 0,1,1,0,1,1,0,1,1,1 },
fy14lkaa 3:985fab783b92 44 { 1,0,0,0,1,1,0,0,0,0 },
fy14lkaa 3:985fab783b92 45 { 0,0,0,1,1,1,1,0,0,0 },
fy14lkaa 3:985fab783b92 46 { 0,0,1,1,0,0,1,1,0,0 },
fy14lkaa 3:985fab783b92 47 { 1,1,1,1,0,0,0,1,1,0 },
fy14lkaa 3:985fab783b92 48 { 0,0,0,0,0,0,1,1,0,0 },
fy14lkaa 3:985fab783b92 49 { 0,0,0,0,0,1,1,0,0,0 },
fy14lkaa 3:985fab783b92 50 { 0,0,0,0,1,1,0,0,0,0 },
fy14lkaa 5:476696df08dd 51 }; */
fy14lkaa 3:985fab783b92 52 const int bullet[4][10] = {
fy14lkaa 3:985fab783b92 53 { 0,0,0,0,0,1,1,1,0,0 },
fy14lkaa 3:985fab783b92 54 { 0,0,0,0,0,1,1,1,0,0 },
fy14lkaa 3:985fab783b92 55 { 0,0,0,1,1,1,1,0,0,0 },
fy14lkaa 3:985fab783b92 56 { 0,0,1,1,1,1,0,1,0,0 },
fy14lkaa 3:985fab783b92 57 };
fy14lkaa 3:985fab783b92 58 const int alien[12][10] = {
fy14lkaa 3:985fab783b92 59 { 0,0,0,0,0,1,1,1,0,0 },
fy14lkaa 3:985fab783b92 60 { 0,0,0,0,0,1,1,1,0,0 },
fy14lkaa 3:985fab783b92 61 { 0,0,0,1,1,1,1,0,0,0 },
fy14lkaa 3:985fab783b92 62 { 0,0,1,1,1,1,0,1,0,0 },
fy14lkaa 3:985fab783b92 63 { 0,0,1,1,1,1,0,1,0,0 },
fy14lkaa 3:985fab783b92 64 { 0,0,1,1,1,1,0,1,0,0 },
fy14lkaa 3:985fab783b92 65 { 0,0,1,1,1,1,0,1,0,0 },
fy14lkaa 3:985fab783b92 66 { 0,0,1,1,1,1,0,1,0,0 },
fy14lkaa 3:985fab783b92 67 { 0,0,1,1,1,1,0,1,0,0 },
fy14lkaa 3:985fab783b92 68 { 0,0,1,1,1,1,0,1,0,0 },
fy14lkaa 3:985fab783b92 69 { 0,0,1,1,1,1,0,1,0,0 },
fy14lkaa 3:985fab783b92 70 { 0,0,1,1,1,1,0,1,0,0 },
fy14lkaa 0:e2af4c8e462e 71
fy14lkaa 3:985fab783b92 72 };
fy14lkaa 3:985fab783b92 73 /*
fy14lkaa 3:985fab783b92 74 const int space_ship[10][12]={
fy14lkaa 3:985fab783b92 75 {0,0,0,0,0,0,0,1,0,0,0,0},
fy14lkaa 4:13cc179c11c5 76 {0,0,0,0,0,0,0,1,0,0,0,0},
fy14lkaa 4:13cc179c11c5 77 {0,0,0,0,0,0,0,1,0,0,0,0},
fy14lkaa 4:13cc179c11c5 78 {0,0,0,0,0,0,0,1,0,0,0,0},
fy14lkaa 4:13cc179c11c5 79 {0,0,0,0,0,0,0,1,0,0,0,0},
fy14lkaa 4:13cc179c11c5 80 {0,0,0,0,0,0,0,1,0,0,0,0},
fy14lkaa 4:13cc179c11c5 81 {0,0,0,0,0,0,0,1,0,0,0,0},
fy14lkaa 4:13cc179c11c5 82 {0,0,0,0,0,0,0,1,0,0,0,0},
fy14lkaa 4:13cc179c11c5 83 {0,0,0,0,0,0,0,1,0,0,0,0},
fy14lkaa 4:13cc179c11c5 84 {0,0,0,0,0,0,0,1,0,0,0,0},
fy14lkaa 4:13cc179c11c5 85
fy14lkaa 3:985fab783b92 86 };
fy14lkaa 3:985fab783b92 87 */
fy14lkaa 5:476696df08dd 88
fy14lkaa 5:476696df08dd 89
fy14lkaa 5:476696df08dd 90
fy14lkaa 5:476696df08dd 91 const int space_ship[10][12]={
fy14lkaa 5:476696df08dd 92 {0,0,0,0,0,0,0,0,0,0,0,0},
fy14lkaa 5:476696df08dd 93 {0,0,0,1,1,0,0,0,0,0,0,0},
fy14lkaa 5:476696df08dd 94 {0,0,0,1,1,0,0,0,0,0,0,0},
fy14lkaa 5:476696df08dd 95 {0,1,1,1,1,1,1,1,0,0,0,0},
fy14lkaa 5:476696df08dd 96 {0,1,1,1,1,1,1,1,1,0,0,0},
fy14lkaa 5:476696df08dd 97 {0,1,1,1,1,1,1,1,1,1,1,0},
fy14lkaa 5:476696df08dd 98 {0,1,1,1,1,1,1,1,1,0,0,0},
fy14lkaa 5:476696df08dd 99 {0,1,1,1,1,1,1,1,0,0,0,0},
fy14lkaa 5:476696df08dd 100 {0,0,0,1,1,0,0,0,0,0,0,0},
fy14lkaa 5:476696df08dd 101 {0,0,0,1,1,0,0,0,0,0,0,0},
fy14lkaa 5:476696df08dd 102
fy14lkaa 5:476696df08dd 103 };
fy14lkaa 3:985fab783b92 104 Direction _d2;
fy14lkaa 3:985fab783b92 105 ///////////// functions ////////////////
fy14lkaa 0:e2af4c8e462e 106 int main()
fy14lkaa 0:e2af4c8e462e 107 {
fy14lkaa 3:985fab783b92 108 /*
fy14lkaa 0:e2af4c8e462e 109 #ifdef WITH_TESTING
fy14lkaa 0:e2af4c8e462e 110 int number_of_failures = run_all_tests();
fy14lkaa 0:e2af4c8e462e 111
fy14lkaa 0:e2af4c8e462e 112 if(number_of_failures > 0) return number_of_failures;
fy14lkaa 0:e2af4c8e462e 113 #endif
fy14lkaa 3:985fab783b92 114 */
fy14lkaa 0:e2af4c8e462e 115 int fps = 8; // frames per second
fy14lkaa 3:985fab783b92 116
fy14lkaa 0:e2af4c8e462e 117 init(); // initialise and then display welcome screen...
fy14lkaa 0:e2af4c8e462e 118 welcome(); // waiting for the user to start
fy14lkaa 0:e2af4c8e462e 119
fy14lkaa 3:985fab783b92 120 //render(); // first draw the initial frame
fy14lkaa 0:e2af4c8e462e 121 wait(1.0f/fps); // and wait for one frame period
fy14lkaa 3:985fab783b92 122
fy14lkaa 3:985fab783b92 123 int y=0;
fy14lkaa 3:985fab783b92 124
fy14lkaa 3:985fab783b92 125 //define the x position of bullet from the space ship
fy14lkaa 3:985fab783b92 126 int x_bullet=0;
fy14lkaa 3:985fab783b92 127
fy14lkaa 3:985fab783b92 128 //define the y position of the bullet from the space ship
fy14lkaa 3:985fab783b92 129 int y_bullet=0;
fy14lkaa 3:985fab783b92 130 int y_alien=10;
fy14lkaa 3:985fab783b92 131 int x_alien=70;
fy14lkaa 3:985fab783b92 132 int bullet_fired=0;
fy14lkaa 5:476696df08dd 133 int x_space_ship=0;
fy14lkaa 5:476696df08dd 134 int y_space_ship=40;
fy14lkaa 3:985fab783b92 135 // game loop - read input, update the game state and render the display
fy14lkaa 0:e2af4c8e462e 136 while (1) {
fy14lkaa 3:985fab783b92 137 lcd.clear();
fy14lkaa 5:476696df08dd 138 //lcd.drawSprite(0,y,12,10,(int *)run);
fy14lkaa 5:476696df08dd 139 lcd.drawSprite(0,y,12,10,(int *)space_ship);
fy14lkaa 3:985fab783b92 140 lcd.drawSprite(x_alien,y_alien,12,10,(int *)alien);
fy14lkaa 3:985fab783b92 141 lcd.drawSprite(x_bullet,y_bullet,4,10,(int *)bullet);
fy14lkaa 3:985fab783b92 142 //space.read_input(pad);
fy14lkaa 3:985fab783b92 143 _d2 = pad.get_direction();
fy14lkaa 3:985fab783b92 144 if(_d2==N)
fy14lkaa 3:985fab783b92 145 //pong.update(pad);
fy14lkaa 3:985fab783b92 146 //render();
fy14lkaa 3:985fab783b92 147 y=y-2;
fy14lkaa 3:985fab783b92 148 else
fy14lkaa 3:985fab783b92 149 if(_d2==S)
fy14lkaa 3:985fab783b92 150 y=y+2;
fy14lkaa 3:985fab783b92 151 else if(_d2==E){
fy14lkaa 3:985fab783b92 152 bullet_fired=1;
fy14lkaa 3:985fab783b92 153 x_bullet=11;
fy14lkaa 3:985fab783b92 154 y_bullet=y;
fy14lkaa 3:985fab783b92 155 }
fy14lkaa 3:985fab783b92 156 if(y>=40)
fy14lkaa 3:985fab783b92 157 y=40;
fy14lkaa 3:985fab783b92 158 else
fy14lkaa 3:985fab783b92 159 if(y<=0)
fy14lkaa 3:985fab783b92 160 y=0;
fy14lkaa 3:985fab783b92 161
fy14lkaa 3:985fab783b92 162 if(bullet_fired==1)
fy14lkaa 3:985fab783b92 163 x_bullet+=4;
fy14lkaa 3:985fab783b92 164 if(x_bullet>=x_alien && y_bullet >=y_alien && y_bullet <=y_alien+10)
fy14lkaa 3:985fab783b92 165 y=0;
fy14lkaa 5:476696df08dd 166 if (x_bullet == x_alien && y_bullet ==y_alien)
fy14lkaa 5:476696df08dd 167 score ++;
fy14lkaa 0:e2af4c8e462e 168 wait(1.0f/fps);
fy14lkaa 5:476696df08dd 169 lcd.clear ();
fy14lkaa 3:985fab783b92 170 lcd.refresh();
fy14lkaa 0:e2af4c8e462e 171 }
fy14lkaa 0:e2af4c8e462e 172 }
fy14lkaa 3:985fab783b92 173
fy14lkaa 3:985fab783b92 174 // initialies all classes and libraries
fy14lkaa 0:e2af4c8e462e 175 void init()
fy14lkaa 0:e2af4c8e462e 176 {
fy14lkaa 0:e2af4c8e462e 177 // need to initialise LCD and Gamepad
fy14lkaa 0:e2af4c8e462e 178 lcd.init();
fy14lkaa 2:6c1d7aa20e81 179 pad.init();
fy14lkaa 3:985fab783b92 180
fy14lkaa 0:e2af4c8e462e 181 // initialise the game with correct ball and paddle sizes
fy14lkaa 3:985fab783b92 182 //pong.init(PADDLE_WIDTH,PADDLE_HEIGHT,BALL_SIZE,BALL_SPEED);
fy14lkaa 3:985fab783b92 183
fy14lkaa 3:985fab783b92 184 }
fy14lkaa 3:985fab783b92 185
fy14lkaa 3:985fab783b92 186 // this function draws each frame on the LCD
fy14lkaa 0:e2af4c8e462e 187 void render()
fy14lkaa 0:e2af4c8e462e 188 {
fy14lkaa 0:e2af4c8e462e 189 // clear screen, re-draw and refresh
fy14lkaa 0:e2af4c8e462e 190 lcd.clear();
fy14lkaa 0:e2af4c8e462e 191 lcd.refresh();
fy14lkaa 0:e2af4c8e462e 192 }
fy14lkaa 3:985fab783b92 193
fy14lkaa 0:e2af4c8e462e 194 // simple splash screen displayed on start-up
fy14lkaa 0:e2af4c8e462e 195 void welcome() {
fy14lkaa 0:e2af4c8e462e 196
fy14lkaa 3:985fab783b92 197 lcd.printString("Space Invador!",0,1);
fy14lkaa 0:e2af4c8e462e 198 lcd.printString(" Press Start ",0,4);
fy14lkaa 3:985fab783b92 199
fy14lkaa 0:e2af4c8e462e 200 lcd.refresh();
fy14lkaa 0:e2af4c8e462e 201
fy14lkaa 0:e2af4c8e462e 202 // wait flashing LEDs until start button is pressed
fy14lkaa 0:e2af4c8e462e 203 while ( pad.check_event(Gamepad::START_PRESSED) == false) {
fy14lkaa 0:e2af4c8e462e 204 pad.leds_on();
fy14lkaa 3:985fab783b92 205 wait(0.1); //wait 0.1 seconds
fy14lkaa 0:e2af4c8e462e 206 pad.leds_off();
fy14lkaa 0:e2af4c8e462e 207 wait(0.1);
fy14lkaa 0:e2af4c8e462e 208 }
fy14lkaa 0:e2af4c8e462e 209
fy14lkaa 3:985fab783b92 210 }