Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed Gamepad N5110
main.cpp
- Committer:
- rafeh
- Date:
- 2019-05-09
- Revision:
- 14:9a9ac55616c4
- Parent:
- 10:75de0f4da176
- Child:
- 15:fc6b40fceb4f
File content as of revision 14:9a9ac55616c4:
/*
ELEC2645 Embedded Systems Project
School of Electronic & Electrical Engineering
University of Leeds
Name: Rafeh Ishtiaq
Username: el17ri
Student ID Number: 201062291
Date: 20/03/2019
*/
#include "mbed.h"
#include "N5110.h"
#include "Gamepad.h"
#include "Pipes.h"
#include "Bird.h"
#include "Entrance.h"
#include "Scoring.h"
#define PIPE_WIDTH 8
#define BIRD_X 25
N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
Gamepad pad;
Bird bird;
Pipes pipes;
Entrance entrance;
Scoring flappy;
Pipes pipes2;
float cont = pad.read_pot();
int yaxis=20; //y position of the bird
int main() {
lcd.init();
pad.init();
lcd.clear();
lcd.setContrast(0.5);
entrance.welcome_page(lcd,pad);
if (pad.check_event(Gamepad::START_PRESSED) == false) {
lcd.clear();
int xvalue=84; //initialising the x value of the pipes
int xvalue2=0;
int height = pipes.generate_height(); //initialising the height of the top pipe
int height2=0;
int score = 0;
int highscore = 0;
char scoredisplay[3]; //to display score
while(1) {
pad.tone(5000,0.2);
lcd.drawRect(0,45,84,3,FILL_BLACK); //draw the floor
if(xvalue>2) {
pipes.init(xvalue,height); // draw the pipes
pipes.draw(lcd);
}
if(xvalue2>2){
pipes2.init(xvalue2,height2);
pipes2.draw(lcd);
}
bird.init(BIRD_X,yaxis); //draw the bird
bird.draw(lcd);
sprintf(scoredisplay,"%d",score);
lcd.printString(scoredisplay,60,0); //display the score on the top right
flappy.set_score(score);
score=flappy.add_score(score,xvalue,BIRD_X,PIPE_WIDTH); //add score if the pipe has gone further left of the bird
score=flappy.add_score(score,xvalue2,BIRD_X,PIPE_WIDTH);
if(xvalue<25 && xvalue >23) { //generates a new pipe
height2=pipes.generate_height(); //a new height is generated for the new pipe (i.e. the placement of the gap is different)
xvalue2=84;
}
if(xvalue<25 && xvalue >23) { //generates a new pipe
height2=pipes.generate_height(); //a new height is generated for the new pipe (i.e. the placement of the gap is different)
xvalue2=84;
}
if(xvalue2<25 && xvalue2>23) {
height=pipes.generate_height();
xvalue=84;
}
wait(0.075);
yaxis=bird.get_position(yaxis,pad); //gets new vertical position for the bird
if(xvalue>2) {
xvalue=xvalue-2; //moves the pipes towards the left
}
if(xvalue2>2) {
xvalue2=xvalue2-2;
}
if ((flappy.check_collisions(yaxis,xvalue,height))||(flappy.check_collisions(yaxis,xvalue2,height2))) { //checking for collisions
wait(1);
if (flappy.check_for_highscore(score,highscore)) { //check if the score was highscore
highscore=score;}
flappy.update_highscore(highscore); //update the highscore
while (pad.check_event(Gamepad::A_PRESSED) == false) {
lcd.clear();
flappy.display_score(lcd,pad); //
if(pad.check_event(Gamepad::START_PRESSED) == false) { break;}
}
score=0;
xvalue=84;
yaxis=20;
xvalue2=0;
lcd.refresh();
}
lcd.refresh();
lcd.clear();
}
}
}