Issue appears to occur when one of the obstacles x value reaches -4

Dependencies:   mbed

Committer:
equense
Date:
Fri Mar 27 10:23:53 2020 +0000
Revision:
0:e1f5bfbb6e53
commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
equense 0:e1f5bfbb6e53 1 #include "Car.h"
equense 0:e1f5bfbb6e53 2
equense 0:e1f5bfbb6e53 3 //Global Variables
equense 0:e1f5bfbb6e53 4 const int car[7][15]{
equense 0:e1f5bfbb6e53 5 { 0,0,0,0,1,1,1,1,0,0,0,0,0,0,0 },
equense 0:e1f5bfbb6e53 6 { 0,0,0,1,1,0,0,1,1,0,0,0,0,0,0 },
equense 0:e1f5bfbb6e53 7 { 1,1,1,1,0,0,0,0,1,1,0,0,0,0,0 },
equense 0:e1f5bfbb6e53 8 { 1,0,0,0,0,0,0,0,0,1,1,1,1,1,1 },
equense 0:e1f5bfbb6e53 9 { 1,0,0,0,0,0,0,0,0,0,0,0,0,0,1 },
equense 0:e1f5bfbb6e53 10 { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
equense 0:e1f5bfbb6e53 11 { 0,0,0,1,1,0,0,0,0,1,1,0,0,0,0 },
equense 0:e1f5bfbb6e53 12 };
equense 0:e1f5bfbb6e53 13
equense 0:e1f5bfbb6e53 14 volatile int x=1;
equense 0:e1f5bfbb6e53 15 volatile int y=1;
equense 0:e1f5bfbb6e53 16 volatile int xo = 84;
equense 0:e1f5bfbb6e53 17 volatile int yo = rand()%24+1;
equense 0:e1f5bfbb6e53 18 volatile int xo1 = 84+28;
equense 0:e1f5bfbb6e53 19 volatile int yo1 = rand()%24+25;
equense 0:e1f5bfbb6e53 20 volatile int xo2 = 84+56;
equense 0:e1f5bfbb6e53 21 volatile int yo2 = rand()%24+1;
equense 0:e1f5bfbb6e53 22 volatile int xo3 = 84+84;
equense 0:e1f5bfbb6e53 23 volatile int yo3 = rand()%24+25;
equense 0:e1f5bfbb6e53 24
equense 0:e1f5bfbb6e53 25 // Constructor and destructor
equense 0:e1f5bfbb6e53 26 Car::Car()
equense 0:e1f5bfbb6e53 27 {
equense 0:e1f5bfbb6e53 28
equense 0:e1f5bfbb6e53 29 }
equense 0:e1f5bfbb6e53 30
equense 0:e1f5bfbb6e53 31 Car::~Car()
equense 0:e1f5bfbb6e53 32 {
equense 0:e1f5bfbb6e53 33
equense 0:e1f5bfbb6e53 34 }
equense 0:e1f5bfbb6e53 35
equense 0:e1f5bfbb6e53 36 void Car::draw(N5110 &lcd)
equense 0:e1f5bfbb6e53 37 {
equense 0:e1f5bfbb6e53 38
equense 0:e1f5bfbb6e53 39 lcd.drawSprite(x,y,7,15,(int *)car);
equense 0:e1f5bfbb6e53 40 }
equense 0:e1f5bfbb6e53 41
equense 0:e1f5bfbb6e53 42 void Car::obstacle(N5110 &lcd)
equense 0:e1f5bfbb6e53 43 {
equense 0:e1f5bfbb6e53 44 lcd.drawRect(xo,yo,4,10,FILL_BLACK);
equense 0:e1f5bfbb6e53 45 lcd.drawRect(xo1,yo1,4,10,FILL_BLACK);
equense 0:e1f5bfbb6e53 46 lcd.drawRect(xo2,yo2,4,10,FILL_BLACK);
equense 0:e1f5bfbb6e53 47 lcd.drawRect(xo3,yo3,4,10,FILL_BLACK);
equense 0:e1f5bfbb6e53 48 }
equense 0:e1f5bfbb6e53 49
equense 0:e1f5bfbb6e53 50 void Car::obupdate()
equense 0:e1f5bfbb6e53 51 {
equense 0:e1f5bfbb6e53 52 xo--;
equense 0:e1f5bfbb6e53 53 xo1--;
equense 0:e1f5bfbb6e53 54 xo2--;
equense 0:e1f5bfbb6e53 55 xo3--;
equense 0:e1f5bfbb6e53 56 if(xo==-28){
equense 0:e1f5bfbb6e53 57 xo = 84;
equense 0:e1f5bfbb6e53 58 }
equense 0:e1f5bfbb6e53 59 if(xo1==-28){
equense 0:e1f5bfbb6e53 60 xo1 = 84;
equense 0:e1f5bfbb6e53 61 }
equense 0:e1f5bfbb6e53 62 if(xo2==-28){
equense 0:e1f5bfbb6e53 63 xo2 = 84;
equense 0:e1f5bfbb6e53 64 }
equense 0:e1f5bfbb6e53 65 if(xo3==-28){
equense 0:e1f5bfbb6e53 66 xo3 = 84;
equense 0:e1f5bfbb6e53 67 }
equense 0:e1f5bfbb6e53 68 printf("xo = %i\n",xo);
equense 0:e1f5bfbb6e53 69 printf("xo1 = %i\n",xo1);
equense 0:e1f5bfbb6e53 70 printf("xo2 = %i\n",xo2);
equense 0:e1f5bfbb6e53 71 printf("xo3 = %i\n",xo3);
equense 0:e1f5bfbb6e53 72 // Code appears to stop running when any one of the above variables reaches -4
equense 0:e1f5bfbb6e53 73
equense 0:e1f5bfbb6e53 74 }
equense 0:e1f5bfbb6e53 75
equense 0:e1f5bfbb6e53 76 void Car::update(Gamepad &pad)
equense 0:e1f5bfbb6e53 77 {
equense 0:e1f5bfbb6e53 78 Direction d = pad.get_direction();
equense 0:e1f5bfbb6e53 79 float mag = pad.get_mag();
equense 0:e1f5bfbb6e53 80
equense 0:e1f5bfbb6e53 81 if(d == E && mag > 0.3){
equense 0:e1f5bfbb6e53 82 x = x+2;
equense 0:e1f5bfbb6e53 83 wait_ms(10);
equense 0:e1f5bfbb6e53 84 }
equense 0:e1f5bfbb6e53 85 if(d == W && mag > 0.3){
equense 0:e1f5bfbb6e53 86 x = x-2;
equense 0:e1f5bfbb6e53 87 wait_ms(10);
equense 0:e1f5bfbb6e53 88 }
equense 0:e1f5bfbb6e53 89 if(d == N && mag > 0.3){
equense 0:e1f5bfbb6e53 90 y = y-2;
equense 0:e1f5bfbb6e53 91 wait_ms(10);
equense 0:e1f5bfbb6e53 92 }
equense 0:e1f5bfbb6e53 93 if(d == S && mag > 0.3){
equense 0:e1f5bfbb6e53 94 y = y+2;
equense 0:e1f5bfbb6e53 95 wait_ms(10);
equense 0:e1f5bfbb6e53 96 }
equense 0:e1f5bfbb6e53 97 //printf("x = %i\n",x);
equense 0:e1f5bfbb6e53 98 //printf("y = %i\n",y);
equense 0:e1f5bfbb6e53 99
equense 0:e1f5bfbb6e53 100 }
equense 0:e1f5bfbb6e53 101