Zeyu Feng 201377605

Dependencies:   mbed

On Minerva

Committer:
el19zf
Date:
Thu May 14 16:45:20 2020 +0000
Revision:
13:eb60628db8bf
Parent:
12:009895f6b6e4
Child:
14:42b8a91e463c
using Doxygen style to comment the code and debug some function;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el19zf 11:494cc44777fe 1 #include "Interface.h"
el19zf 11:494cc44777fe 2
el19zf 11:494cc44777fe 3 State fsm[3] = {
el19zf 11:494cc44777fe 4 {0,{2,1}},
el19zf 11:494cc44777fe 5 {1,{0,2}},
el19zf 11:494cc44777fe 6 {2,{1,0}},
el19zf 11:494cc44777fe 7 };
el19zf 11:494cc44777fe 8 const int pointer[3][2] = {
el19zf 11:494cc44777fe 9 {1,0},
el19zf 11:494cc44777fe 10 {1,1},
el19zf 11:494cc44777fe 11 {1,0}
el19zf 11:494cc44777fe 12 };
el19zf 11:494cc44777fe 13
el19zf 11:494cc44777fe 14 Interface::Interface()
el19zf 11:494cc44777fe 15 {
el19zf 11:494cc44777fe 16
el19zf 11:494cc44777fe 17 }
el19zf 11:494cc44777fe 18
el19zf 11:494cc44777fe 19 Interface::~Interface()
el19zf 11:494cc44777fe 20 {
el19zf 11:494cc44777fe 21
el19zf 11:494cc44777fe 22 }
el19zf 11:494cc44777fe 23
el19zf 11:494cc44777fe 24 void Interface::init()
el19zf 11:494cc44777fe 25 {
el19zf 12:009895f6b6e4 26 _gameover_flag = 0;
el19zf 12:009895f6b6e4 27 _sim_flag = 0;
el19zf 12:009895f6b6e4 28 _victory_flag = 0;
el19zf 11:494cc44777fe 29 }
el19zf 11:494cc44777fe 30
el19zf 11:494cc44777fe 31
el19zf 11:494cc44777fe 32 void Interface::Welcome(N5110 &lcd,Gamepad &pad)
el19zf 11:494cc44777fe 33 {
el19zf 11:494cc44777fe 34 while (!pad.start_pressed())
el19zf 11:494cc44777fe 35 {
el19zf 13:eb60628db8bf 36 lcd.clear();
el19zf 13:eb60628db8bf 37 lcd.printString(" Welcome! ",0,1);
el19zf 13:eb60628db8bf 38 lcd.printString(" Game by ",0,2);
el19zf 13:eb60628db8bf 39 lcd.printString(" Z. FENG ",0,3);
el19zf 13:eb60628db8bf 40 lcd.setContrast( pad.read_pot1());
el19zf 13:eb60628db8bf 41 lcd.drawRect(0,44,int(pad.read_pot1()*WIDTH),2,FILL_BLACK);
el19zf 13:eb60628db8bf 42 //printf("WIDTH of contrast = %d, contrast = %f\n",(int)pad.read_pot1()*WIDTH,pad.read_pot1());
el19zf 13:eb60628db8bf 43 lcd.refresh();
el19zf 11:494cc44777fe 44 pad.leds_on();
el19zf 11:494cc44777fe 45 wait(0.1);
el19zf 11:494cc44777fe 46 pad.leds_off();
el19zf 11:494cc44777fe 47 wait(0.1);
el19zf 11:494cc44777fe 48 }
el19zf 11:494cc44777fe 49 }
el19zf 11:494cc44777fe 50
el19zf 11:494cc44777fe 51 int Interface::menu(N5110 &lcd,Gamepad &pad,int option_flag)
el19zf 11:494cc44777fe 52 {
el19zf 11:494cc44777fe 53 while (!pad.A_pressed())
el19zf 11:494cc44777fe 54 {
el19zf 11:494cc44777fe 55 lcd.clear();
el19zf 11:494cc44777fe 56 lcd.printString(" MENU",0,0);
el19zf 11:494cc44777fe 57 lcd.printString(" Start",0,2);
el19zf 11:494cc44777fe 58 lcd.printString(" Start(Hell)",0,3);
el19zf 11:494cc44777fe 59 lcd.printString(" Exit",0,4);
el19zf 11:494cc44777fe 60 _d = pad.get_direction();
el19zf 12:009895f6b6e4 61 if(_d == N||_d ==NE||_d==NW){
el19zf 11:494cc44777fe 62 option_flag = fsm[option_flag].next_state[0];
el19zf 12:009895f6b6e4 63 } else if(_d == S||_d==SE||_d==SW){
el19zf 11:494cc44777fe 64 option_flag = fsm[option_flag].next_state[1];
el19zf 11:494cc44777fe 65 }
el19zf 11:494cc44777fe 66 lcd.drawSprite(0,8*option_flag+18,3,2,(int*)pointer);
el19zf 11:494cc44777fe 67 lcd.refresh();
el19zf 11:494cc44777fe 68 pad.leds_on();
el19zf 11:494cc44777fe 69 wait(0.3);
el19zf 11:494cc44777fe 70 //printf("A_pressed\n");
el19zf 11:494cc44777fe 71 }
el19zf 11:494cc44777fe 72 return option_flag;
el19zf 11:494cc44777fe 73 }
el19zf 11:494cc44777fe 74
el19zf 11:494cc44777fe 75 void Interface::game_over(N5110 &lcd,Gamepad &pad)
el19zf 11:494cc44777fe 76 {
el19zf 11:494cc44777fe 77 lcd.clear();
el19zf 13:eb60628db8bf 78 pad.init();
el19zf 11:494cc44777fe 79 while(!pad.B_pressed()){
el19zf 11:494cc44777fe 80 lcd.printString(" Game over ",0,1);
el19zf 11:494cc44777fe 81 lcd.printString(" Press B to ",0,2);
el19zf 11:494cc44777fe 82 lcd.printString(" try again? ",0,3);
el19zf 11:494cc44777fe 83 lcd.refresh();
el19zf 11:494cc44777fe 84 wait(0.1);
el19zf 11:494cc44777fe 85 //printf("Not press B\n");
el19zf 11:494cc44777fe 86 }
el19zf 12:009895f6b6e4 87 _gameover_flag = 1;
el19zf 11:494cc44777fe 88 }
el19zf 11:494cc44777fe 89
el19zf 11:494cc44777fe 90 int Interface::check_pause(N5110 &lcd,Gamepad &pad,int paused_flag)
el19zf 11:494cc44777fe 91 {
el19zf 11:494cc44777fe 92 if(pad.start_pressed())
el19zf 11:494cc44777fe 93 paused_flag = 1;
el19zf 11:494cc44777fe 94 //printf("start press\n");
el19zf 11:494cc44777fe 95 while(paused_flag == 1){
el19zf 11:494cc44777fe 96 _timer.stop();
el19zf 11:494cc44777fe 97 lcd.printString("Paused",23,2);
el19zf 11:494cc44777fe 98 lcd.refresh();
el19zf 11:494cc44777fe 99 if(pad.start_pressed())
el19zf 11:494cc44777fe 100 paused_flag = 0;
el19zf 11:494cc44777fe 101 }
el19zf 11:494cc44777fe 102 _timer.start();
el19zf 11:494cc44777fe 103 return paused_flag;
el19zf 11:494cc44777fe 104 }
el19zf 11:494cc44777fe 105
el19zf 11:494cc44777fe 106 int Interface::count_down(N5110 &lcd,int count_flag)
el19zf 11:494cc44777fe 107 {
el19zf 11:494cc44777fe 108 char buffer[6];
el19zf 13:eb60628db8bf 109 sprintf(buffer,"%d",int(count_flag/6));
el19zf 11:494cc44777fe 110 lcd.printString(buffer,40,2);
el19zf 11:494cc44777fe 111 //printf("count: %d\n",count_flag);
el19zf 11:494cc44777fe 112 count_flag--;
el19zf 11:494cc44777fe 113 return count_flag;
el19zf 11:494cc44777fe 114 }
el19zf 11:494cc44777fe 115
el19zf 11:494cc44777fe 116 void Interface::exit(N5110 &lcd,Gamepad &pad)
el19zf 11:494cc44777fe 117 {
el19zf 11:494cc44777fe 118 lcd.clear();
el19zf 13:eb60628db8bf 119 pad.init();
el19zf 12:009895f6b6e4 120 pad.leds_off();
el19zf 11:494cc44777fe 121 while(!pad.B_pressed()){
el19zf 11:494cc44777fe 122 lcd.printString(" Press B back ",0,2);
el19zf 11:494cc44777fe 123 lcd.printString(" to menu ",0,3);
el19zf 11:494cc44777fe 124 lcd.refresh();
el19zf 11:494cc44777fe 125 wait(0.1);
el19zf 11:494cc44777fe 126 }
el19zf 11:494cc44777fe 127 }
el19zf 11:494cc44777fe 128
el19zf 11:494cc44777fe 129 void Interface::victory(N5110 &lcd,Gamepad &pad)
el19zf 11:494cc44777fe 130 {
el19zf 11:494cc44777fe 131 lcd.clear();
el19zf 13:eb60628db8bf 132 pad.init();
el19zf 11:494cc44777fe 133 while(!pad.B_pressed()){
el19zf 11:494cc44777fe 134 lcd.printString(" Victory! ",0,1);
el19zf 11:494cc44777fe 135 lcd.printString(" Press B back ",0,2);
el19zf 11:494cc44777fe 136 lcd.printString(" to menu ",0,3);
el19zf 11:494cc44777fe 137 lcd.refresh();
el19zf 11:494cc44777fe 138 wait(0.1);
el19zf 11:494cc44777fe 139 }
el19zf 12:009895f6b6e4 140 _victory_flag = 1;
el19zf 12:009895f6b6e4 141 }
el19zf 12:009895f6b6e4 142
el19zf 12:009895f6b6e4 143 void Interface::simple_game(N5110 &lcd,Gamepad &pad)
el19zf 12:009895f6b6e4 144 {
el19zf 12:009895f6b6e4 145 lcd.clear();
el19zf 12:009895f6b6e4 146 pad.init();
el19zf 12:009895f6b6e4 147 while(!pad.A_pressed()){
el19zf 12:009895f6b6e4 148 lcd.printString(" DO YOU WANT ",0,1);
el19zf 12:009895f6b6e4 149 lcd.printString(" MAKE IT EASY? ",0,2);
el19zf 12:009895f6b6e4 150 lcd.printString(" PRESS A to",0,3);
el19zf 12:009895f6b6e4 151 lcd.printString(" try again! ",0,4);
el19zf 12:009895f6b6e4 152 lcd.refresh();
el19zf 12:009895f6b6e4 153 wait(0.1);
el19zf 12:009895f6b6e4 154 }
el19zf 12:009895f6b6e4 155 _sim_flag = 1;
el19zf 12:009895f6b6e4 156 }
el19zf 12:009895f6b6e4 157
el19zf 12:009895f6b6e4 158 int Interface::get_sim_flag()
el19zf 12:009895f6b6e4 159 {
el19zf 12:009895f6b6e4 160 //printf("Get simple_flag %d\n",_sim_flag);
el19zf 12:009895f6b6e4 161 return _sim_flag;
el19zf 12:009895f6b6e4 162 }
el19zf 12:009895f6b6e4 163
el19zf 12:009895f6b6e4 164 int Interface::get_gameover_flag()
el19zf 12:009895f6b6e4 165 {
el19zf 12:009895f6b6e4 166 return _gameover_flag;
el19zf 12:009895f6b6e4 167 }
el19zf 12:009895f6b6e4 168
el19zf 12:009895f6b6e4 169 int Interface::get_victory_flag()
el19zf 12:009895f6b6e4 170 {
el19zf 12:009895f6b6e4 171 return _victory_flag;
el19zf 11:494cc44777fe 172 }