Final Commit

Dependencies:   mbed

Committer:
JRM1986
Date:
Tue May 08 12:32:46 2018 +0000
Revision:
27:bd0f69a75d8b
Parent:
25:f03439ee32c6
Final Commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JRM1986 2:ea90cec2489a 1 #include "Food.h"
JRM1986 2:ea90cec2489a 2
JRM1986 25:f03439ee32c6 3 ///////////////// constructor/destructor /////////////////
JRM1986 2:ea90cec2489a 4
JRM1986 2:ea90cec2489a 5 Food::Food()
JRM1986 2:ea90cec2489a 6 {
JRM1986 2:ea90cec2489a 7
JRM1986 2:ea90cec2489a 8 }
JRM1986 2:ea90cec2489a 9
JRM1986 2:ea90cec2489a 10 Food::~Food()
JRM1986 2:ea90cec2489a 11 {
JRM1986 2:ea90cec2489a 12
JRM1986 3:50f01159c61d 13 }
JRM1986 15:4c97fe30f3b7 14
JRM1986 22:7f81fca01f02 15 ///////////////// global methods /////////////////
JRM1986 15:4c97fe30f3b7 16
JRM1986 15:4c97fe30f3b7 17 int g_frame_counter()
JRM1986 15:4c97fe30f3b7 18 {
JRM1986 15:4c97fe30f3b7 19
JRM1986 15:4c97fe30f3b7 20 extern int g_fc;
JRM1986 15:4c97fe30f3b7 21
JRM1986 15:4c97fe30f3b7 22 return g_fc;
JRM1986 15:4c97fe30f3b7 23
JRM1986 15:4c97fe30f3b7 24 }
JRM1986 15:4c97fe30f3b7 25
JRM1986 22:7f81fca01f02 26 ///////////////// public methods /////////////////
JRM1986 22:7f81fca01f02 27
JRM1986 22:7f81fca01f02 28
JRM1986 18:406fc298a7c4 29 void Food::init(bool collision)
JRM1986 3:50f01159c61d 30 {
JRM1986 22:7f81fca01f02 31
JRM1986 18:406fc298a7c4 32 int frame_count = g_frame_counter();
JRM1986 22:7f81fca01f02 33
JRM1986 21:63c5590cb2c2 34 set_food_position(frame_count, 150, collision);
JRM1986 18:406fc298a7c4 35
JRM1986 3:50f01159c61d 36 }
JRM1986 3:50f01159c61d 37
JRM1986 25:f03439ee32c6 38 void Food::update(bool collision, int n_frames)
JRM1986 3:50f01159c61d 39 {
JRM1986 22:7f81fca01f02 40 // increment frame counter
JRM1986 18:406fc298a7c4 41
JRM1986 15:4c97fe30f3b7 42 ++g_fc;
JRM1986 3:50f01159c61d 43
JRM1986 15:4c97fe30f3b7 44 int frame_count = g_frame_counter();
JRM1986 22:7f81fca01f02 45
JRM1986 25:f03439ee32c6 46 set_food_position(frame_count, n_frames, collision);
JRM1986 18:406fc298a7c4 47
JRM1986 5:27fcb9b36e7e 48 }
JRM1986 8:a2b431b9b3f7 49
JRM1986 8:a2b431b9b3f7 50 void Food::draw(N5110 &lcd)
JRM1986 7:c38800a428a6 51 {
JRM1986 5:27fcb9b36e7e 52
JRM1986 5:27fcb9b36e7e 53 lcd.setPixel(_x,_y,true);
JRM1986 5:27fcb9b36e7e 54
JRM1986 8:a2b431b9b3f7 55 }
JRM1986 8:a2b431b9b3f7 56
JRM1986 8:a2b431b9b3f7 57
JRM1986 8:a2b431b9b3f7 58 Vector2D Food::get_rand_pos()
JRM1986 8:a2b431b9b3f7 59 {
JRM1986 8:a2b431b9b3f7 60
JRM1986 8:a2b431b9b3f7 61 Vector2D r;
JRM1986 8:a2b431b9b3f7 62
JRM1986 8:a2b431b9b3f7 63 srand(time(NULL));
JRM1986 8:a2b431b9b3f7 64
JRM1986 22:7f81fca01f02 65 // get random variables within screen dimensions 0-83, 0-47
JRM1986 22:7f81fca01f02 66
JRM1986 22:7f81fca01f02 67 r.x = rand() % 83;
JRM1986 22:7f81fca01f02 68 r.y = rand() % 47;
JRM1986 8:a2b431b9b3f7 69
JRM1986 8:a2b431b9b3f7 70 return r;
JRM1986 8:a2b431b9b3f7 71
JRM1986 15:4c97fe30f3b7 72 }
JRM1986 15:4c97fe30f3b7 73
JRM1986 17:94dd8a691d4a 74 void Food::set_food_position(int set_frames, int number_frames, bool collision)
JRM1986 15:4c97fe30f3b7 75 {
JRM1986 21:63c5590cb2c2 76 //_number_frames = number_frames;
JRM1986 15:4c97fe30f3b7 77
JRM1986 15:4c97fe30f3b7 78 Vector2D pos = get_rand_pos();
JRM1986 17:94dd8a691d4a 79
JRM1986 22:7f81fca01f02 80 // check if collision with snake has occured
JRM1986 22:7f81fca01f02 81
JRM1986 17:94dd8a691d4a 82 if(collision) {
JRM1986 15:4c97fe30f3b7 83
JRM1986 17:94dd8a691d4a 84 _x = pos.x;
JRM1986 17:94dd8a691d4a 85 _y = pos.y;
JRM1986 17:94dd8a691d4a 86
JRM1986 22:7f81fca01f02 87
JRM1986 22:7f81fca01f02 88 // reset frame counter to 0
JRM1986 17:94dd8a691d4a 89 g_fc = 0;
JRM1986 17:94dd8a691d4a 90
JRM1986 17:94dd8a691d4a 91 }
JRM1986 22:7f81fca01f02 92
JRM1986 22:7f81fca01f02 93 // check if required number of frames has elapsed
JRM1986 17:94dd8a691d4a 94
JRM1986 18:406fc298a7c4 95 else if((set_frames == number_frames) || (set_frames == 0)) {
JRM1986 15:4c97fe30f3b7 96
JRM1986 15:4c97fe30f3b7 97 _x = pos.x;
JRM1986 15:4c97fe30f3b7 98 _y = pos.y;
JRM1986 15:4c97fe30f3b7 99
JRM1986 22:7f81fca01f02 100 // reset frame counter to 0
JRM1986 25:f03439ee32c6 101
JRM1986 25:f03439ee32c6 102 printf("Frames Past %i \n ", g_fc);
JRM1986 22:7f81fca01f02 103
JRM1986 15:4c97fe30f3b7 104 g_fc = 0;
JRM1986 15:4c97fe30f3b7 105
JRM1986 15:4c97fe30f3b7 106 }
JRM1986 15:4c97fe30f3b7 107
JRM1986 15:4c97fe30f3b7 108 else {
JRM1986 15:4c97fe30f3b7 109
JRM1986 15:4c97fe30f3b7 110 _x = _x;
JRM1986 15:4c97fe30f3b7 111 _y = _y;
JRM1986 15:4c97fe30f3b7 112
JRM1986 15:4c97fe30f3b7 113 }
JRM1986 15:4c97fe30f3b7 114
JRM1986 15:4c97fe30f3b7 115
JRM1986 15:4c97fe30f3b7 116 }
JRM1986 15:4c97fe30f3b7 117
JRM1986 15:4c97fe30f3b7 118 Vector2D Food::get_food_position()
JRM1986 15:4c97fe30f3b7 119 {
JRM1986 15:4c97fe30f3b7 120
JRM1986 15:4c97fe30f3b7 121 Vector2D p = {_x, _y};
JRM1986 15:4c97fe30f3b7 122
JRM1986 15:4c97fe30f3b7 123 return p;
JRM1986 15:4c97fe30f3b7 124
JRM1986 2:ea90cec2489a 125 }