projeto de corrida

Dependencies:   TermControl

Committer:
diegocavalcanti
Date:
Sat Dec 10 13:43:20 2016 +0000
Revision:
0:476c153c1126
projeto

Who changed what in which revision?

UserRevisionLine numberNew contents of line
diegocavalcanti 0:476c153c1126 1 #include "mbed.h"
diegocavalcanti 0:476c153c1126 2 #include "stdlib.h"
diegocavalcanti 0:476c153c1126 3 #include "rtos.h"
diegocavalcanti 0:476c153c1126 4 #include "TermControl.h"
diegocavalcanti 0:476c153c1126 5
diegocavalcanti 0:476c153c1126 6 Serial pc(USBTX, USBRX);
diegocavalcanti 0:476c153c1126 7 Serial pc2(USBTX, USBRX);
diegocavalcanti 0:476c153c1126 8 char tela[20][6];
diegocavalcanti 0:476c153c1126 9 bool jogando;
diegocavalcanti 0:476c153c1126 10
diegocavalcanti 0:476c153c1126 11 // main() runs in its own thread in the OS
diegocavalcanti 0:476c153c1126 12 // (note the calls to Thread::wait below for delays)
diegocavalcanti 0:476c153c1126 13
diegocavalcanti 0:476c153c1126 14 bool verificaesquerda(){
diegocavalcanti 0:476c153c1126 15 if(
diegocavalcanti 0:476c153c1126 16 tela[16][1] == 'o' &&
diegocavalcanti 0:476c153c1126 17 tela[17][0] == 'o' &&
diegocavalcanti 0:476c153c1126 18 tela[17][1] == 'o' &&
diegocavalcanti 0:476c153c1126 19 tela[17][2] == 'o' &&
diegocavalcanti 0:476c153c1126 20 tela[18][1] == 'o' &&
diegocavalcanti 0:476c153c1126 21 tela[19][0] == 'o' &&
diegocavalcanti 0:476c153c1126 22 tela[19][2] == 'o'){
diegocavalcanti 0:476c153c1126 23 return true;
diegocavalcanti 0:476c153c1126 24 }else{
diegocavalcanti 0:476c153c1126 25 return false;
diegocavalcanti 0:476c153c1126 26 }
diegocavalcanti 0:476c153c1126 27 }
diegocavalcanti 0:476c153c1126 28 bool verificadireita(){
diegocavalcanti 0:476c153c1126 29 if( tela[16][4] == 'o' ||
diegocavalcanti 0:476c153c1126 30 tela[17][3] == 'o' ||
diegocavalcanti 0:476c153c1126 31 tela[17][4] == 'o' ||
diegocavalcanti 0:476c153c1126 32 tela[17][5] == 'o' ||
diegocavalcanti 0:476c153c1126 33 tela[18][4] == 'o' ||
diegocavalcanti 0:476c153c1126 34 tela[19][3] == 'o' ||
diegocavalcanti 0:476c153c1126 35 tela[19][5] == 'o'){
diegocavalcanti 0:476c153c1126 36 return true;
diegocavalcanti 0:476c153c1126 37 }else{
diegocavalcanti 0:476c153c1126 38 return false;
diegocavalcanti 0:476c153c1126 39 }
diegocavalcanti 0:476c153c1126 40 }
diegocavalcanti 0:476c153c1126 41
diegocavalcanti 0:476c153c1126 42 void car_left(){
diegocavalcanti 0:476c153c1126 43
diegocavalcanti 0:476c153c1126 44
diegocavalcanti 0:476c153c1126 45 if(tela[16][1] == 'o' && tela[17][0] == 'o' && tela[17][1] == 'o' && tela[17][2] == 'o' && tela[18][1] == 'o' && tela[19][0] == 'o' && tela[19][2] == 'o'){
diegocavalcanti 0:476c153c1126 46
diegocavalcanti 0:476c153c1126 47
diegocavalcanti 0:476c153c1126 48 tela[16][1] = 'o';
diegocavalcanti 0:476c153c1126 49 tela[17][0] = 'o';
diegocavalcanti 0:476c153c1126 50 tela[17][1] = 'o';
diegocavalcanti 0:476c153c1126 51 tela[17][2] = 'o';
diegocavalcanti 0:476c153c1126 52 tela[18][1] = 'o';
diegocavalcanti 0:476c153c1126 53 tela[19][0] = 'o';
diegocavalcanti 0:476c153c1126 54 tela[19][2] = 'o';
diegocavalcanti 0:476c153c1126 55
diegocavalcanti 0:476c153c1126 56 }else{
diegocavalcanti 0:476c153c1126 57 tela[16][4] = ' ';
diegocavalcanti 0:476c153c1126 58 tela[17][3] = ' ';
diegocavalcanti 0:476c153c1126 59 tela[17][4] = ' ';
diegocavalcanti 0:476c153c1126 60 tela[17][5] = ' ';
diegocavalcanti 0:476c153c1126 61 tela[18][4] = ' ';
diegocavalcanti 0:476c153c1126 62 tela[19][3] = ' ';
diegocavalcanti 0:476c153c1126 63 tela[19][5] = ' ';
diegocavalcanti 0:476c153c1126 64
diegocavalcanti 0:476c153c1126 65 tela[16][1] = 'o';
diegocavalcanti 0:476c153c1126 66 tela[17][0] = 'o';
diegocavalcanti 0:476c153c1126 67 tela[17][1] = 'o';
diegocavalcanti 0:476c153c1126 68 tela[17][2] = 'o';
diegocavalcanti 0:476c153c1126 69 tela[18][1] = 'o';
diegocavalcanti 0:476c153c1126 70 tela[19][0] = 'o';
diegocavalcanti 0:476c153c1126 71 tela[19][2] = 'o';
diegocavalcanti 0:476c153c1126 72 }
diegocavalcanti 0:476c153c1126 73
diegocavalcanti 0:476c153c1126 74
diegocavalcanti 0:476c153c1126 75
diegocavalcanti 0:476c153c1126 76 }
diegocavalcanti 0:476c153c1126 77 void car_right(){
diegocavalcanti 0:476c153c1126 78 if(tela[16][1] == 'o' && tela[17][0] == 'o' && tela[17][1] == 'o' && tela[17][2] == 'o' && tela[18][1] == 'o' && tela[19][0] == 'o' && tela[19][2] == 'o'){
diegocavalcanti 0:476c153c1126 79 tela[16][4] = 'o';
diegocavalcanti 0:476c153c1126 80 tela[17][3] = 'o';
diegocavalcanti 0:476c153c1126 81 tela[17][4] = 'o';
diegocavalcanti 0:476c153c1126 82 tela[17][5] = 'o';
diegocavalcanti 0:476c153c1126 83 tela[18][4] = 'o';
diegocavalcanti 0:476c153c1126 84 tela[19][3] = 'o';
diegocavalcanti 0:476c153c1126 85 tela[19][5] = 'o';
diegocavalcanti 0:476c153c1126 86
diegocavalcanti 0:476c153c1126 87 tela[16][1] = ' ';
diegocavalcanti 0:476c153c1126 88 tela[17][0] = ' ';
diegocavalcanti 0:476c153c1126 89 tela[17][1] = ' ';
diegocavalcanti 0:476c153c1126 90 tela[17][2] = ' ';
diegocavalcanti 0:476c153c1126 91 tela[18][1] = ' ';
diegocavalcanti 0:476c153c1126 92 tela[19][0] = ' ';
diegocavalcanti 0:476c153c1126 93 tela[19][2] = ' ';
diegocavalcanti 0:476c153c1126 94
diegocavalcanti 0:476c153c1126 95 }else{
diegocavalcanti 0:476c153c1126 96 tela[16][4] = 'o';
diegocavalcanti 0:476c153c1126 97 tela[17][3] = 'o';
diegocavalcanti 0:476c153c1126 98 tela[17][4] = 'o';
diegocavalcanti 0:476c153c1126 99 tela[17][5] = 'o';
diegocavalcanti 0:476c153c1126 100 tela[18][4] = 'o';
diegocavalcanti 0:476c153c1126 101 tela[19][3] = 'o';
diegocavalcanti 0:476c153c1126 102 tela[19][5] = 'o';
diegocavalcanti 0:476c153c1126 103 }
diegocavalcanti 0:476c153c1126 104
diegocavalcanti 0:476c153c1126 105 }
diegocavalcanti 0:476c153c1126 106
diegocavalcanti 0:476c153c1126 107 void keyboard(void) {
diegocavalcanti 0:476c153c1126 108 while(jogando) {
diegocavalcanti 0:476c153c1126 109 char comando = pc2.getc();
diegocavalcanti 0:476c153c1126 110
diegocavalcanti 0:476c153c1126 111 if(comando == 97){
diegocavalcanti 0:476c153c1126 112 car_left();
diegocavalcanti 0:476c153c1126 113 }
diegocavalcanti 0:476c153c1126 114 if(comando == 100){
diegocavalcanti 0:476c153c1126 115 car_right();
diegocavalcanti 0:476c153c1126 116 }
diegocavalcanti 0:476c153c1126 117
diegocavalcanti 0:476c153c1126 118 Thread::wait(500);
diegocavalcanti 0:476c153c1126 119 }
diegocavalcanti 0:476c153c1126 120 }
diegocavalcanti 0:476c153c1126 121
diegocavalcanti 0:476c153c1126 122 int main() {
diegocavalcanti 0:476c153c1126 123 jogando=true;
diegocavalcanti 0:476c153c1126 124 TermControl ctrl;
diegocavalcanti 0:476c153c1126 125 ctrl.SetTerminal(&pc);
diegocavalcanti 0:476c153c1126 126 Thread t1;
diegocavalcanti 0:476c153c1126 127 t1.start(keyboard);
diegocavalcanti 0:476c153c1126 128 int pontuacao =0;
diegocavalcanti 0:476c153c1126 129 int velocidade = 500;
diegocavalcanti 0:476c153c1126 130
diegocavalcanti 0:476c153c1126 131
diegocavalcanti 0:476c153c1126 132 int mov = 1;
diegocavalcanti 0:476c153c1126 133 int new_car = 1;
diegocavalcanti 0:476c153c1126 134
diegocavalcanti 0:476c153c1126 135 pc.baud(115200);
diegocavalcanti 0:476c153c1126 136
diegocavalcanti 0:476c153c1126 137 for(int i=0; i < 20; i++){
diegocavalcanti 0:476c153c1126 138 for(int j=0; j < 6; j++){
diegocavalcanti 0:476c153c1126 139 tela[i][j] = ' ';
diegocavalcanti 0:476c153c1126 140
diegocavalcanti 0:476c153c1126 141 }
diegocavalcanti 0:476c153c1126 142 }
diegocavalcanti 0:476c153c1126 143
diegocavalcanti 0:476c153c1126 144 int side_car = rand()%2;
diegocavalcanti 0:476c153c1126 145
diegocavalcanti 0:476c153c1126 146 if(side_car == 0){
diegocavalcanti 0:476c153c1126 147 car_left();
diegocavalcanti 0:476c153c1126 148 }
diegocavalcanti 0:476c153c1126 149 if(side_car == 1){
diegocavalcanti 0:476c153c1126 150 car_right();
diegocavalcanti 0:476c153c1126 151 }
diegocavalcanti 0:476c153c1126 152
diegocavalcanti 0:476c153c1126 153 while (jogando){
diegocavalcanti 0:476c153c1126 154
diegocavalcanti 0:476c153c1126 155 if(new_car%8 == 0){
diegocavalcanti 0:476c153c1126 156 pontuacao++;
diegocavalcanti 0:476c153c1126 157 int lado_carros = rand()%2;
diegocavalcanti 0:476c153c1126 158 pc.printf("%d", lado_carros);
diegocavalcanti 0:476c153c1126 159 pc.printf("\r\n");
diegocavalcanti 0:476c153c1126 160
diegocavalcanti 0:476c153c1126 161
diegocavalcanti 0:476c153c1126 162 if(lado_carros == 0){
diegocavalcanti 0:476c153c1126 163 tela[0][1] = '#';
diegocavalcanti 0:476c153c1126 164 tela[1][0] = '#';
diegocavalcanti 0:476c153c1126 165 tela[1][1] = '#';
diegocavalcanti 0:476c153c1126 166 tela[1][2] = '#';
diegocavalcanti 0:476c153c1126 167 tela[2][1] = '#';
diegocavalcanti 0:476c153c1126 168 tela[3][0] = '#';
diegocavalcanti 0:476c153c1126 169 tela[3][2] = '#';
diegocavalcanti 0:476c153c1126 170 }
diegocavalcanti 0:476c153c1126 171 if(lado_carros == 1){
diegocavalcanti 0:476c153c1126 172 tela[0][4] = '#';
diegocavalcanti 0:476c153c1126 173 tela[1][3] = '#';
diegocavalcanti 0:476c153c1126 174 tela[1][4] = '#';
diegocavalcanti 0:476c153c1126 175 tela[1][5] = '#';
diegocavalcanti 0:476c153c1126 176 tela[2][4] = '#';
diegocavalcanti 0:476c153c1126 177 tela[3][3] = '#';
diegocavalcanti 0:476c153c1126 178 tela[3][5] = '#';
diegocavalcanti 0:476c153c1126 179 }
diegocavalcanti 0:476c153c1126 180 }
diegocavalcanti 0:476c153c1126 181 new_car++;
diegocavalcanti 0:476c153c1126 182
diegocavalcanti 0:476c153c1126 183
diegocavalcanti 0:476c153c1126 184 for(int i = 0; i< 20; i++) {
diegocavalcanti 0:476c153c1126 185 for(int j = 0; j < 6; j++) {
diegocavalcanti 0:476c153c1126 186 pc.printf("%c", tela[i][j]);
diegocavalcanti 0:476c153c1126 187
diegocavalcanti 0:476c153c1126 188 }
diegocavalcanti 0:476c153c1126 189 pc.printf("\r\n");
diegocavalcanti 0:476c153c1126 190
diegocavalcanti 0:476c153c1126 191 }
diegocavalcanti 0:476c153c1126 192
diegocavalcanti 0:476c153c1126 193
diegocavalcanti 0:476c153c1126 194
diegocavalcanti 0:476c153c1126 195 for(int i = 19; i >= 0; i--) {
diegocavalcanti 0:476c153c1126 196 for(int j = 5; j >= 0; j--) {
diegocavalcanti 0:476c153c1126 197
diegocavalcanti 0:476c153c1126 198
diegocavalcanti 0:476c153c1126 199 bool verifica = verificadireita();
diegocavalcanti 0:476c153c1126 200 if(verifica){
diegocavalcanti 0:476c153c1126 201 if(
diegocavalcanti 0:476c153c1126 202 tela[16][4] == '#' ||
diegocavalcanti 0:476c153c1126 203 tela[17][3] == '#' ||
diegocavalcanti 0:476c153c1126 204 tela[17][4] == '#' ||
diegocavalcanti 0:476c153c1126 205 tela[17][5] == '#' ||
diegocavalcanti 0:476c153c1126 206 tela[18][4] == '#' ||
diegocavalcanti 0:476c153c1126 207 tela[19][3] == '#' ||
diegocavalcanti 0:476c153c1126 208 tela[19][5] == '#' ){
diegocavalcanti 0:476c153c1126 209
diegocavalcanti 0:476c153c1126 210
diegocavalcanti 0:476c153c1126 211 jogando=false;
diegocavalcanti 0:476c153c1126 212
diegocavalcanti 0:476c153c1126 213 break;
diegocavalcanti 0:476c153c1126 214
diegocavalcanti 0:476c153c1126 215 }else if(tela[i][j] == '#'){
diegocavalcanti 0:476c153c1126 216 tela[i][j] = ' ';
diegocavalcanti 0:476c153c1126 217 tela[i+mov][j] = '#';
diegocavalcanti 0:476c153c1126 218
diegocavalcanti 0:476c153c1126 219 }
diegocavalcanti 0:476c153c1126 220
diegocavalcanti 0:476c153c1126 221
diegocavalcanti 0:476c153c1126 222 }else {
diegocavalcanti 0:476c153c1126 223 if(
diegocavalcanti 0:476c153c1126 224 tela[16][1] == '#' ||
diegocavalcanti 0:476c153c1126 225 tela[17][0] == '#' ||
diegocavalcanti 0:476c153c1126 226 tela[17][1] == '#' ||
diegocavalcanti 0:476c153c1126 227 tela[17][2] == '#' ||
diegocavalcanti 0:476c153c1126 228 tela[18][1] == '#' ||
diegocavalcanti 0:476c153c1126 229 tela[19][0] == '#' ||
diegocavalcanti 0:476c153c1126 230 tela[19][2] == '#' ){
diegocavalcanti 0:476c153c1126 231
diegocavalcanti 0:476c153c1126 232 jogando=false;
diegocavalcanti 0:476c153c1126 233
diegocavalcanti 0:476c153c1126 234 break;
diegocavalcanti 0:476c153c1126 235
diegocavalcanti 0:476c153c1126 236 }else if(tela[i][j] == '#'){
diegocavalcanti 0:476c153c1126 237 tela[i][j] = ' ';
diegocavalcanti 0:476c153c1126 238 tela[i+mov][j] = '#';
diegocavalcanti 0:476c153c1126 239
diegocavalcanti 0:476c153c1126 240
diegocavalcanti 0:476c153c1126 241 }
diegocavalcanti 0:476c153c1126 242
diegocavalcanti 0:476c153c1126 243 }//IF
diegocavalcanti 0:476c153c1126 244 }//FOR
diegocavalcanti 0:476c153c1126 245
diegocavalcanti 0:476c153c1126 246 }//FOR
diegocavalcanti 0:476c153c1126 247
diegocavalcanti 0:476c153c1126 248
diegocavalcanti 0:476c153c1126 249
diegocavalcanti 0:476c153c1126 250
diegocavalcanti 0:476c153c1126 251 pc.printf("%d", pontuacao);
diegocavalcanti 0:476c153c1126 252 velocidade=velocidade-2;
diegocavalcanti 0:476c153c1126 253 Thread::wait(velocidade);
diegocavalcanti 0:476c153c1126 254 //ctrl.Clear();
diegocavalcanti 0:476c153c1126 255 pc.printf("\x1B[2J");
diegocavalcanti 0:476c153c1126 256 }
diegocavalcanti 0:476c153c1126 257 pc.printf("%s", "GAME OVER!");
diegocavalcanti 0:476c153c1126 258 pc.printf("%s", "SUA PONTUACAO: ");
diegocavalcanti 0:476c153c1126 259 pc.printf("%d", pontuacao);
diegocavalcanti 0:476c153c1126 260
diegocavalcanti 0:476c153c1126 261
diegocavalcanti 0:476c153c1126 262 }
diegocavalcanti 0:476c153c1126 263