Yufan Zhong / Mbed 2 deprecated GOLD_MINER

Dependencies:   mbed

Committer:
ZhongYufan
Date:
Wed Apr 22 15:52:04 2020 +0000
Revision:
1:9c7bb3db32bc
Parent:
0:edf120185e12
Child:
7:5bb5cde8951a
claw, gold, winch, monster finished (commit test)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ZhongYufan 0:edf120185e12 1 /*
ZhongYufan 1:9c7bb3db32bc 2 ELEC2645 Embedded Systems Project
ZhongYufan 0:edf120185e12 3 School of Electronic & Electrical Engineering
ZhongYufan 0:edf120185e12 4 University of Leeds
ZhongYufan 0:edf120185e12 5
ZhongYufan 0:edf120185e12 6 Name: Yufan Zhong
ZhongYufan 0:edf120185e12 7 Username: el17yz
ZhongYufan 0:edf120185e12 8 Student ID Number: 201199708
ZhongYufan 1:9c7bb3db32bc 9 Date: May,2020
ZhongYufan 1:9c7bb3db32bc 10
ZhongYufan 1:9c7bb3db32bc 11 */
ZhongYufan 1:9c7bb3db32bc 12
ZhongYufan 1:9c7bb3db32bc 13
ZhongYufan 1:9c7bb3db32bc 14 ///////// pre-processor directives ////////
ZhongYufan 1:9c7bb3db32bc 15 #include "mbed.h"
ZhongYufan 1:9c7bb3db32bc 16 #include "Gamepad.h"
ZhongYufan 1:9c7bb3db32bc 17 #include "N5110.h"
ZhongYufan 1:9c7bb3db32bc 18 #include "MinerEngine.h"
ZhongYufan 1:9c7bb3db32bc 19
ZhongYufan 1:9c7bb3db32bc 20 #ifdef WITH_TESTING
ZhongYufan 1:9c7bb3db32bc 21 # include "tests.h"
ZhongYufan 1:9c7bb3db32bc 22 #endif
ZhongYufan 1:9c7bb3db32bc 23
ZhongYufan 1:9c7bb3db32bc 24 #define WINCH_WIDTH 12
ZhongYufan 1:9c7bb3db32bc 25 #define WINCH_HEIGHT 6
ZhongYufan 1:9c7bb3db32bc 26 #define CLAW_SPEED 3
ZhongYufan 1:9c7bb3db32bc 27 #define MONSTER_SIZE 3
ZhongYufan 0:edf120185e12 28
ZhongYufan 1:9c7bb3db32bc 29 /////////////// structs /////////////////
ZhongYufan 1:9c7bb3db32bc 30 struct UserInput {
ZhongYufan 1:9c7bb3db32bc 31 Direction d;
ZhongYufan 1:9c7bb3db32bc 32 float mag;
ZhongYufan 1:9c7bb3db32bc 33 };
ZhongYufan 1:9c7bb3db32bc 34 /////////////// objects ///////////////
ZhongYufan 1:9c7bb3db32bc 35 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
ZhongYufan 1:9c7bb3db32bc 36 Gamepad pad;
ZhongYufan 1:9c7bb3db32bc 37 MinerEngine Miner;
ZhongYufan 1:9c7bb3db32bc 38
ZhongYufan 1:9c7bb3db32bc 39 ///////////// prototypes ///////////////
ZhongYufan 1:9c7bb3db32bc 40 void init();
ZhongYufan 1:9c7bb3db32bc 41 void update_game(UserInput input);
ZhongYufan 1:9c7bb3db32bc 42 void render();
ZhongYufan 1:9c7bb3db32bc 43 void welcome();
ZhongYufan 0:edf120185e12 44
ZhongYufan 1:9c7bb3db32bc 45 ///////////// functions ////////////////
ZhongYufan 1:9c7bb3db32bc 46 int main()
ZhongYufan 1:9c7bb3db32bc 47 {
ZhongYufan 1:9c7bb3db32bc 48
ZhongYufan 1:9c7bb3db32bc 49 #ifdef WITH_TESTING
ZhongYufan 1:9c7bb3db32bc 50 int number_of_failures = run_all_tests();
ZhongYufan 1:9c7bb3db32bc 51
ZhongYufan 1:9c7bb3db32bc 52 if(number_of_failures > 0) return number_of_failures;
ZhongYufan 1:9c7bb3db32bc 53 #endif
ZhongYufan 1:9c7bb3db32bc 54
ZhongYufan 1:9c7bb3db32bc 55 int fps = 8; // frames per second
ZhongYufan 1:9c7bb3db32bc 56
ZhongYufan 1:9c7bb3db32bc 57 init(); // initialise and then display welcome screen...
ZhongYufan 1:9c7bb3db32bc 58 welcome(); // waiting for the user to start
ZhongYufan 1:9c7bb3db32bc 59
ZhongYufan 1:9c7bb3db32bc 60 render(); // first draw the initial frame
ZhongYufan 1:9c7bb3db32bc 61 wait(1.0f/fps); // and wait for one frame period
ZhongYufan 0:edf120185e12 62
ZhongYufan 0:edf120185e12 63
ZhongYufan 1:9c7bb3db32bc 64 // game loop - read input, update the game state and render the display
ZhongYufan 1:9c7bb3db32bc 65 while (1) {
ZhongYufan 1:9c7bb3db32bc 66 miner.read_input(pad);
ZhongYufan 1:9c7bb3db32bc 67 miner.update(pad);
ZhongYufan 1:9c7bb3db32bc 68 render();
ZhongYufan 1:9c7bb3db32bc 69 wait(1.0f/fps);
ZhongYufan 1:9c7bb3db32bc 70 }
ZhongYufan 1:9c7bb3db32bc 71 }
ZhongYufan 0:edf120185e12 72
ZhongYufan 1:9c7bb3db32bc 73 // initialies all classes and libraries
ZhongYufan 1:9c7bb3db32bc 74 void init()
ZhongYufan 0:edf120185e12 75 {
ZhongYufan 1:9c7bb3db32bc 76 // need to initialise LCD and Gamepad
ZhongYufan 1:9c7bb3db32bc 77 lcd.init();
ZhongYufan 1:9c7bb3db32bc 78 pad.init();
ZhongYufan 1:9c7bb3db32bc 79
ZhongYufan 1:9c7bb3db32bc 80 // initialise the game with correct claw and winch sizes
ZhongYufan 1:9c7bb3db32bc 81 miner.init(WINCH_WIDTH,WINCH_HEIGHT,MONSTER_SIZE,CLAW_SPEED);
ZhongYufan 1:9c7bb3db32bc 82
ZhongYufan 1:9c7bb3db32bc 83 }
ZhongYufan 1:9c7bb3db32bc 84
ZhongYufan 1:9c7bb3db32bc 85 // this function draws each frame on the LCD
ZhongYufan 1:9c7bb3db32bc 86 void render()
ZhongYufan 1:9c7bb3db32bc 87 {
ZhongYufan 1:9c7bb3db32bc 88 // clear screen, re-draw and refresh
ZhongYufan 1:9c7bb3db32bc 89 lcd.clear();
ZhongYufan 1:9c7bb3db32bc 90 miner.draw(lcd);
ZhongYufan 1:9c7bb3db32bc 91 lcd.refresh();
ZhongYufan 1:9c7bb3db32bc 92 }
ZhongYufan 1:9c7bb3db32bc 93
ZhongYufan 1:9c7bb3db32bc 94 // simple splash screen displayed on start-up
ZhongYufan 1:9c7bb3db32bc 95 void welcome() {
ZhongYufan 1:9c7bb3db32bc 96
ZhongYufan 1:9c7bb3db32bc 97 miner.welcome(pad,lcd);
ZhongYufan 1:9c7bb3db32bc 98 miner.menu(pad,lcd);
ZhongYufan 1:9c7bb3db32bc 99
ZhongYufan 0:edf120185e12 100 }