Kostadin Chakarov / Mbed 2 deprecated el17kec

Dependencies:   mbed

Committer:
kocemax
Date:
Tue Mar 19 11:56:20 2019 +0000
Revision:
1:b82c4c2de9a8
Parent:
0:2f0362fef062
Child:
2:006a2ddfabb6
Decided to make a Breakout game, following the original Atari one. Now have a logo with a cool font and a pad which has its limits as the edges of the screen. All the pad controls are in its own class. Comments are still bad, will be improved later.

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 1:b82c4c2de9a8 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 1:b82c4c2de9a8 26 #include "PlayerControl.h"
kocemax 1:b82c4c2de9a8 27
kocemax 1:b82c4c2de9a8 28 /////////////// objects ///////////////
kocemax 1:b82c4c2de9a8 29 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); // K64F - pwr from 3V3
kocemax 1:b82c4c2de9a8 30 Gamepad pad; // Gamepad buttons
kocemax 1:b82c4c2de9a8 31 PlayerControl cont; // Object for player
kocemax 1:b82c4c2de9a8 32
kocemax 1:b82c4c2de9a8 33 ///////////// function prototypes ///////////////
kocemax 1:b82c4c2de9a8 34 void init();
kocemax 1:b82c4c2de9a8 35 void welcome();
kocemax 1:b82c4c2de9a8 36 void render();
kocemax 0:2f0362fef062 37
kocemax 1:b82c4c2de9a8 38 ///////////// functions ////////////////
kocemax 1:b82c4c2de9a8 39 int main()
kocemax 1:b82c4c2de9a8 40 {
kocemax 1:b82c4c2de9a8 41 int fps = 10;
kocemax 1:b82c4c2de9a8 42 init();
kocemax 1:b82c4c2de9a8 43 welcome(); // waiting for the user to start
kocemax 1:b82c4c2de9a8 44 while(1)
kocemax 1:b82c4c2de9a8 45 {
kocemax 1:b82c4c2de9a8 46 render();
kocemax 1:b82c4c2de9a8 47 wait(1.0f/fps);
kocemax 1:b82c4c2de9a8 48 }
kocemax 1:b82c4c2de9a8 49 }
kocemax 1:b82c4c2de9a8 50
kocemax 1:b82c4c2de9a8 51 void init()
kocemax 1:b82c4c2de9a8 52 {
kocemax 1:b82c4c2de9a8 53 // need to initialise LCD and Gamepad
kocemax 1:b82c4c2de9a8 54 lcd.init();
kocemax 1:b82c4c2de9a8 55 pad.init();
kocemax 1:b82c4c2de9a8 56 lcd.setContrast(0.55); // setting contrast to 55% seems good
kocemax 1:b82c4c2de9a8 57 lcd.normalMode(); // normal colour mode
kocemax 1:b82c4c2de9a8 58 lcd.setBrightness(0.5); // put LED backlight on 50%
kocemax 1:b82c4c2de9a8 59 }
kocemax 1:b82c4c2de9a8 60
kocemax 1:b82c4c2de9a8 61 void welcome()
kocemax 0:2f0362fef062 62 {
kocemax 1:b82c4c2de9a8 63 lcd.printString("Welcome to",12,0);
kocemax 1:b82c4c2de9a8 64 // x origin, y origin, rows, cols, sprite
kocemax 1:b82c4c2de9a8 65 lcd.drawSprite(5,15,10,75,(int *)breakout);
kocemax 1:b82c4c2de9a8 66 lcd.printString("Press Start",9,4);
kocemax 1:b82c4c2de9a8 67 lcd.refresh();
kocemax 1:b82c4c2de9a8 68
kocemax 1:b82c4c2de9a8 69 // flash the LEDs until start button is pressed
kocemax 1:b82c4c2de9a8 70 while (pad.check_event(Gamepad::START_PRESSED) == false)
kocemax 1:b82c4c2de9a8 71 {
kocemax 1:b82c4c2de9a8 72 for (int i = 1; i < 7; i++)
kocemax 1:b82c4c2de9a8 73 {
kocemax 1:b82c4c2de9a8 74 pad.led(i,1);
kocemax 1:b82c4c2de9a8 75 wait(0.1);
kocemax 1:b82c4c2de9a8 76 pad.led(i,0);
kocemax 1:b82c4c2de9a8 77 }
kocemax 1:b82c4c2de9a8 78 }
kocemax 1:b82c4c2de9a8 79 }
kocemax 0:2f0362fef062 80
kocemax 1:b82c4c2de9a8 81 void render() {
kocemax 1:b82c4c2de9a8 82 lcd.clear(); // initialise the LCD
kocemax 1:b82c4c2de9a8 83 cont.controlPlayer(pad);
kocemax 1:b82c4c2de9a8 84 cont.drawPlayer(lcd);
kocemax 1:b82c4c2de9a8 85 lcd.refresh();
kocemax 0:2f0362fef062 86 }