Kostadin Chakarov / Mbed 2 deprecated el17kec

Dependencies:   mbed

Committer:
kocemax
Date:
Sat Mar 23 11:17:33 2019 +0000
Revision:
3:fe856d0890ee
Parent:
2:006a2ddfabb6
Child:
4:0e01cbb95434
Have a working collision detection with the pad, if the ball falls below it game over. Will try to move some of the function around the make the code simpler and easier to read.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kocemax 0:2f0362fef062 1 /*
kocemax 0:2f0362fef062 2 ELEC2645 Embedded Systems Project
kocemax 0:2f0362fef062 3 School of Electronic & Electrical Engineering University of Leeds
kocemax 0:2f0362fef062 4 Name: Kostadin Chakarov
kocemax 0:2f0362fef062 5 Username: el17kec
kocemax 0:2f0362fef062 6 Student ID Number:201171978 Date:11/03/2019
kocemax 0:2f0362fef062 7 */
kocemax 2:006a2ddfabb6 8 // Breakout++ logo sprite
kocemax 1:b82c4c2de9a8 9 const int breakout[10][75] = {
kocemax 1:b82c4c2de9a8 10 { 1,0,0,1,1,0,0,0,0,0,1,0,0,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0 },
kocemax 1:b82c4c2de9a8 11 { 1,0,1,0,0,1,0,0,1,0,1,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,1,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1 },
kocemax 1:b82c4c2de9a8 12 { 1,1,0,0,0,0,1,0,0,1,1,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0,0,0 },
kocemax 1:b82c4c2de9a8 13 { 1,1,0,1,1,1,1,0,0,0,1,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0 },
kocemax 1:b82c4c2de9a8 14 { 1,0,1,0,0,1,1,0,0,0,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0 },
kocemax 1:b82c4c2de9a8 15 { 1,1,0,1,1,0,0,1,0,0,1,0,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,1,1,1,0,1,0,1,1,1 },
kocemax 1:b82c4c2de9a8 16 { 1,1,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0 },
kocemax 1:b82c4c2de9a8 17 { 1,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0 },
kocemax 1:b82c4c2de9a8 18 { 1,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0 },
kocemax 1:b82c4c2de9a8 19 { 1,0,0,1,1,1,0,0,0,0,1,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0 },
kocemax 1:b82c4c2de9a8 20 };
kocemax 0:2f0362fef062 21
kocemax 1:b82c4c2de9a8 22 ///////// pre-processor directives ////////
kocemax 0:2f0362fef062 23 #include "mbed.h"
kocemax 1:b82c4c2de9a8 24 #include "N5110.h"
kocemax 1:b82c4c2de9a8 25 #include "Gamepad.h"
kocemax 2:006a2ddfabb6 26 #include "PlayerControl.h"
kocemax 2:006a2ddfabb6 27 #include "Ball.h"
kocemax 1:b82c4c2de9a8 28
kocemax 1:b82c4c2de9a8 29 /////////////// objects ///////////////
kocemax 1:b82c4c2de9a8 30 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); // K64F - pwr from 3V3
kocemax 1:b82c4c2de9a8 31 Gamepad pad; // Gamepad buttons
kocemax 1:b82c4c2de9a8 32 PlayerControl cont; // Object for player
kocemax 2:006a2ddfabb6 33 Ball ball;
kocemax 1:b82c4c2de9a8 34
kocemax 1:b82c4c2de9a8 35 ///////////// function prototypes ///////////////
kocemax 1:b82c4c2de9a8 36 void init();
kocemax 1:b82c4c2de9a8 37 void welcome();
kocemax 1:b82c4c2de9a8 38 void render();
kocemax 0:2f0362fef062 39
kocemax 1:b82c4c2de9a8 40 ///////////// functions ////////////////
kocemax 1:b82c4c2de9a8 41 int main()
kocemax 1:b82c4c2de9a8 42 {
kocemax 1:b82c4c2de9a8 43 int fps = 10;
kocemax 1:b82c4c2de9a8 44 init();
kocemax 1:b82c4c2de9a8 45 welcome(); // waiting for the user to start
kocemax 1:b82c4c2de9a8 46 while(1)
kocemax 1:b82c4c2de9a8 47 {
kocemax 1:b82c4c2de9a8 48 render();
kocemax 1:b82c4c2de9a8 49 wait(1.0f/fps);
kocemax 3:fe856d0890ee 50 if (ball.endCondition(pad))
kocemax 3:fe856d0890ee 51 {
kocemax 2:006a2ddfabb6 52 break;
kocemax 3:fe856d0890ee 53 }
kocemax 1:b82c4c2de9a8 54 }
kocemax 2:006a2ddfabb6 55 lcd.clear();
kocemax 2:006a2ddfabb6 56 lcd.printString("You Lose",20,3);
kocemax 2:006a2ddfabb6 57 lcd.refresh();
kocemax 1:b82c4c2de9a8 58 }
kocemax 1:b82c4c2de9a8 59
kocemax 1:b82c4c2de9a8 60 void init()
kocemax 1:b82c4c2de9a8 61 {
kocemax 1:b82c4c2de9a8 62 // need to initialise LCD and Gamepad
kocemax 1:b82c4c2de9a8 63 lcd.init();
kocemax 1:b82c4c2de9a8 64 pad.init();
kocemax 1:b82c4c2de9a8 65 lcd.setContrast(0.55); // setting contrast to 55% seems good
kocemax 1:b82c4c2de9a8 66 lcd.normalMode(); // normal colour mode
kocemax 1:b82c4c2de9a8 67 lcd.setBrightness(0.5); // put LED backlight on 50%
kocemax 1:b82c4c2de9a8 68 }
kocemax 1:b82c4c2de9a8 69
kocemax 1:b82c4c2de9a8 70 void welcome()
kocemax 0:2f0362fef062 71 {
kocemax 1:b82c4c2de9a8 72 lcd.printString("Welcome to",12,0);
kocemax 1:b82c4c2de9a8 73 // x origin, y origin, rows, cols, sprite
kocemax 1:b82c4c2de9a8 74 lcd.drawSprite(5,15,10,75,(int *)breakout);
kocemax 1:b82c4c2de9a8 75 lcd.printString("Press Start",9,4);
kocemax 1:b82c4c2de9a8 76 lcd.refresh();
kocemax 1:b82c4c2de9a8 77
kocemax 1:b82c4c2de9a8 78 // flash the LEDs until start button is pressed
kocemax 1:b82c4c2de9a8 79 while (pad.check_event(Gamepad::START_PRESSED) == false)
kocemax 1:b82c4c2de9a8 80 {
kocemax 1:b82c4c2de9a8 81 for (int i = 1; i < 7; i++)
kocemax 1:b82c4c2de9a8 82 {
kocemax 1:b82c4c2de9a8 83 pad.led(i,1);
kocemax 1:b82c4c2de9a8 84 wait(0.1);
kocemax 1:b82c4c2de9a8 85 pad.led(i,0);
kocemax 1:b82c4c2de9a8 86 }
kocemax 1:b82c4c2de9a8 87 }
kocemax 1:b82c4c2de9a8 88 }
kocemax 0:2f0362fef062 89
kocemax 1:b82c4c2de9a8 90 void render() {
kocemax 1:b82c4c2de9a8 91 lcd.clear(); // initialise the LCD
kocemax 2:006a2ddfabb6 92 cont.drawPlayer(lcd);
kocemax 3:fe856d0890ee 93 cont.controlPlayer(pad);
kocemax 3:fe856d0890ee 94 cont.get_padPos(pad);
kocemax 2:006a2ddfabb6 95 ball.drawBall(lcd);
kocemax 3:fe856d0890ee 96 ball.get_ballPos(pad);
kocemax 2:006a2ddfabb6 97 ball.moveBall();
kocemax 3:fe856d0890ee 98 ball.hitPad(pad);
kocemax 1:b82c4c2de9a8 99 lcd.refresh();
kocemax 0:2f0362fef062 100 }