
Final Commit
Dependencies: mbed
Food/Food.cpp@27:bd0f69a75d8b, 2018-05-08 (annotated)
- 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?
User | Revision | Line number | New 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 | } |