ELEC2645 (2018/19) / Mbed 2 deprecated el17lw

Dependencies:   mbed

Committer:
lewisgw
Date:
Sun Mar 17 13:36:10 2019 +0000
Revision:
4:ce4eea1c2a28
Parent:
3:28a3c118e071
Child:
5:eda40cdde3e7
Skater can now duck when joystick is in non zero horizontal direction and negative vertical direction.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lewisgw 0:d74302f8f847 1 /*
lewisgw 0:d74302f8f847 2 ELEC2645 Embedded Systems Project
lewisgw 0:d74302f8f847 3 School of Electronic & Electrical Engineering University of Leeds
lewisgw 0:d74302f8f847 4 Name: Lewis Wooltorton
lewisgw 0:d74302f8f847 5 Username: el17lw
lewisgw 0:d74302f8f847 6 Student ID Number: 201122085 Date: March 2019
lewisgw 1:ded7ddd826ce 7 */
lewisgw 1:ded7ddd826ce 8
lewisgw 1:ded7ddd826ce 9 #include "N5110.h"
lewisgw 1:ded7ddd826ce 10 #include "Gamepad.h"
lewisgw 2:16ae940b0aee 11 #include "Skateboarder.h"
lewisgw 1:ded7ddd826ce 12 #include <cmath>
lewisgw 1:ded7ddd826ce 13
lewisgw 1:ded7ddd826ce 14 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
lewisgw 2:16ae940b0aee 15 Gamepad gamepad;
lewisgw 2:16ae940b0aee 16 Skateboarder skater;
lewisgw 1:ded7ddd826ce 17
lewisgw 1:ded7ddd826ce 18 void init_game();
lewisgw 2:16ae940b0aee 19 void process_inputs();
lewisgw 2:16ae940b0aee 20 void update_lcd(int x, int y, Sprite_value sprite);
lewisgw 1:ded7ddd826ce 21
lewisgw 1:ded7ddd826ce 22 int main(){
lewisgw 1:ded7ddd826ce 23
lewisgw 1:ded7ddd826ce 24 init_game();
lewisgw 1:ded7ddd826ce 25 int moving_counter = 0;
lewisgw 2:16ae940b0aee 26 int x;
lewisgw 3:28a3c118e071 27 int y;
lewisgw 3:28a3c118e071 28 int level = 0;
lewisgw 2:16ae940b0aee 29 int jump_counter = 0;
lewisgw 3:28a3c118e071 30 Skate_Direction direction = Left;
lewisgw 2:16ae940b0aee 31 Sprite_value sprite;
lewisgw 1:ded7ddd826ce 32
lewisgw 1:ded7ddd826ce 33 while(1){
lewisgw 1:ded7ddd826ce 34 lcd.clear();
lewisgw 2:16ae940b0aee 35 Vector2D coord = gamepad.get_mapped_coord();
lewisgw 1:ded7ddd826ce 36
lewisgw 3:28a3c118e071 37 if((x >= 1 && x <= 30 && y < 15) || (x >= 45 && x <= 80 && y < 15)){
lewisgw 3:28a3c118e071 38 level = 1;
lewisgw 3:28a3c118e071 39 } else {
lewisgw 3:28a3c118e071 40 level = 0;
lewisgw 3:28a3c118e071 41 }
lewisgw 3:28a3c118e071 42
lewisgw 3:28a3c118e071 43 skater.set_y_position( gamepad.check_event(Gamepad::A_PRESSED), jump_counter, level );
lewisgw 2:16ae940b0aee 44 y = skater.get_y_position();
lewisgw 2:16ae940b0aee 45 jump_counter = skater.get_jump_counter();
lewisgw 1:ded7ddd826ce 46
lewisgw 4:ce4eea1c2a28 47 skater.set_x_position( coord.x, moving_counter, direction, coord.y );
lewisgw 2:16ae940b0aee 48 x = skater.get_x_position();
lewisgw 2:16ae940b0aee 49 moving_counter = skater.get_moving_counter();
lewisgw 3:28a3c118e071 50 sprite = skater.get_sprite_value();
lewisgw 3:28a3c118e071 51 direction = skater.get_direction();
lewisgw 3:28a3c118e071 52
lewisgw 2:16ae940b0aee 53 update_lcd(x, y, sprite);
lewisgw 2:16ae940b0aee 54
lewisgw 1:ded7ddd826ce 55 lcd.refresh();
lewisgw 1:ded7ddd826ce 56 wait(0.01);
lewisgw 3:28a3c118e071 57 }
lewisgw 3:28a3c118e071 58 }
lewisgw 1:ded7ddd826ce 59
lewisgw 2:16ae940b0aee 60 void init_game() {
lewisgw 2:16ae940b0aee 61 gamepad.init();
lewisgw 2:16ae940b0aee 62 lcd.init();
lewisgw 2:16ae940b0aee 63 lcd.setContrast(0.5);
lewisgw 2:16ae940b0aee 64 lcd.normalMode();
lewisgw 2:16ae940b0aee 65 lcd.setBrightness(0.5);
lewisgw 3:28a3c118e071 66 }
lewisgw 1:ded7ddd826ce 67
lewisgw 2:16ae940b0aee 68 void update_lcd(int x, int y, Sprite_value sprite) {
lewisgw 3:28a3c118e071 69 int* skate_sprite = skater.get_sprite(sprite);
lewisgw 4:ce4eea1c2a28 70 lcd.drawSprite(x,y,17,10,(int *)skate_sprite);
lewisgw 3:28a3c118e071 71 lcd.drawLine(5,40,80,40,FILL_BLACK);
lewisgw 3:28a3c118e071 72 lcd.drawLine(5,22,30,22,FILL_BLACK);
lewisgw 3:28a3c118e071 73 lcd.drawLine(50,22,80,22,FILL_BLACK);
lewisgw 3:28a3c118e071 74 }
lewisgw 2:16ae940b0aee 75