Final Commit

Dependencies:   mbed

Committer:
JRM1986
Date:
Wed Apr 18 10:38:10 2018 +0000
Revision:
16:85ca9feccf3f
Parent:
14:c3a435597196
Child:
17:94dd8a691d4a
length counter works in conjuction with food/snake head collision detection

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JRM1986 2:ea90cec2489a 1 #include "SnakeEngine.h"
JRM1986 2:ea90cec2489a 2
JRM1986 2:ea90cec2489a 3
JRM1986 2:ea90cec2489a 4 SnakeEngine::SnakeEngine()
JRM1986 2:ea90cec2489a 5 {
JRM1986 2:ea90cec2489a 6
JRM1986 2:ea90cec2489a 7 }
JRM1986 2:ea90cec2489a 8
JRM1986 2:ea90cec2489a 9 SnakeEngine::~SnakeEngine()
JRM1986 2:ea90cec2489a 10 {
JRM1986 2:ea90cec2489a 11
JRM1986 7:c38800a428a6 12 }
JRM1986 16:85ca9feccf3f 13 /*
JRM1986 16:85ca9feccf3f 14 void SnakeEngine::draw_tail(N5110 &lcd)
JRM1986 16:85ca9feccf3f 15 {
JRM1986 16:85ca9feccf3f 16
JRM1986 16:85ca9feccf3f 17 if(detect_food_collision()) {
JRM1986 16:85ca9feccf3f 18
JRM1986 16:85ca9feccf3f 19 Vector2D tail_pos[100];
JRM1986 16:85ca9feccf3f 20 Vector2D pre;
JRM1986 16:85ca9feccf3f 21 Vector2D pre_pre;
JRM1986 16:85ca9feccf3f 22 tail_pos[0] = _snake.get_snake_position();
JRM1986 16:85ca9feccf3f 23 int i;
JRM1986 16:85ca9feccf3f 24 int length = g_tl;
JRM1986 16:85ca9feccf3f 25
JRM1986 16:85ca9feccf3f 26 for(i = 0; i <= length; i++) { // i may need to be 1
JRM1986 16:85ca9feccf3f 27
JRM1986 16:85ca9feccf3f 28 pre_pre = tail_pos[i];
JRM1986 16:85ca9feccf3f 29 tail_pos[i] = pre;
JRM1986 16:85ca9feccf3f 30 pre_pre = pre_pre;
JRM1986 16:85ca9feccf3f 31
JRM1986 16:85ca9feccf3f 32 lcd.setPixel(pre.x,pre.y,true);
JRM1986 16:85ca9feccf3f 33
JRM1986 16:85ca9feccf3f 34 }
JRM1986 16:85ca9feccf3f 35
JRM1986 16:85ca9feccf3f 36 }
JRM1986 16:85ca9feccf3f 37
JRM1986 16:85ca9feccf3f 38 else {
JRM1986 16:85ca9feccf3f 39
JRM1986 16:85ca9feccf3f 40 g_tl = g_tl;
JRM1986 16:85ca9feccf3f 41
JRM1986 16:85ca9feccf3f 42 }
JRM1986 16:85ca9feccf3f 43
JRM1986 16:85ca9feccf3f 44 }*/
JRM1986 10:62d8cb7742c3 45
JRM1986 9:561e5681b7a6 46
JRM1986 16:85ca9feccf3f 47
JRM1986 16:85ca9feccf3f 48
JRM1986 16:85ca9feccf3f 49 int g_tail_length()
JRM1986 16:85ca9feccf3f 50 {
JRM1986 16:85ca9feccf3f 51
JRM1986 16:85ca9feccf3f 52 extern int g_tl;
JRM1986 16:85ca9feccf3f 53
JRM1986 16:85ca9feccf3f 54 return g_tl;
JRM1986 16:85ca9feccf3f 55
JRM1986 16:85ca9feccf3f 56 }
JRM1986 16:85ca9feccf3f 57
JRM1986 14:c3a435597196 58 void SnakeEngine::init(int snake_position_x, int snake_position_y)
JRM1986 7:c38800a428a6 59 {
JRM1986 13:72bc2579e85e 60 _snake_position_x = snake_position_x;
JRM1986 13:72bc2579e85e 61 _snake_position_y = snake_position_y;
JRM1986 14:c3a435597196 62
JRM1986 14:c3a435597196 63 _snake.init(_snake_position_x, _snake_position_y);
JRM1986 9:561e5681b7a6 64
JRM1986 8:a2b431b9b3f7 65 }
JRM1986 8:a2b431b9b3f7 66
JRM1986 13:72bc2579e85e 67 void SnakeEngine::get_input(Gamepad &pad)
JRM1986 10:62d8cb7742c3 68 {
JRM1986 13:72bc2579e85e 69 _in = pad.get_direction();
JRM1986 10:62d8cb7742c3 70
JRM1986 10:62d8cb7742c3 71 }
JRM1986 10:62d8cb7742c3 72
JRM1986 10:62d8cb7742c3 73 void SnakeEngine::update(Gamepad &pad)
JRM1986 10:62d8cb7742c3 74 {
JRM1986 16:85ca9feccf3f 75 int length;
JRM1986 16:85ca9feccf3f 76 bool food_col;
JRM1986 10:62d8cb7742c3 77
JRM1986 13:72bc2579e85e 78 _snake.update(_in, _cur);
JRM1986 16:85ca9feccf3f 79 food_col = detect_food_collision(pad);
JRM1986 16:85ca9feccf3f 80 set_tail_length(food_col);
JRM1986 16:85ca9feccf3f 81 length = get_tail_length();
JRM1986 16:85ca9feccf3f 82 printf("Tail Length = %i \n", length);
JRM1986 10:62d8cb7742c3 83
JRM1986 10:62d8cb7742c3 84 }
JRM1986 10:62d8cb7742c3 85
JRM1986 10:62d8cb7742c3 86
JRM1986 8:a2b431b9b3f7 87 void SnakeEngine::draw(N5110 &lcd)
JRM1986 8:a2b431b9b3f7 88 {
JRM1986 8:a2b431b9b3f7 89
JRM1986 8:a2b431b9b3f7 90 lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_TRANSPARENT);
JRM1986 8:a2b431b9b3f7 91 lcd.setContrast(0.5);
JRM1986 8:a2b431b9b3f7 92 _food.update();
JRM1986 8:a2b431b9b3f7 93 _food.draw(lcd);
JRM1986 13:72bc2579e85e 94 _snake.update(_in, _cur);
JRM1986 10:62d8cb7742c3 95 _snake.draw(lcd);
JRM1986 9:561e5681b7a6 96
JRM1986 16:85ca9feccf3f 97 }
JRM1986 16:85ca9feccf3f 98
JRM1986 16:85ca9feccf3f 99 bool SnakeEngine::detect_food_collision(Gamepad &pad)
JRM1986 16:85ca9feccf3f 100 {
JRM1986 16:85ca9feccf3f 101 Vector2D snake_pos = _snake.get_snake_position();
JRM1986 16:85ca9feccf3f 102 Vector2D food_pos = _food.get_food_position();
JRM1986 16:85ca9feccf3f 103
JRM1986 16:85ca9feccf3f 104 bool success_flag = false;
JRM1986 16:85ca9feccf3f 105
JRM1986 16:85ca9feccf3f 106 if((snake_pos.x == food_pos.x) && (snake_pos.y == food_pos.y)) {
JRM1986 16:85ca9feccf3f 107
JRM1986 16:85ca9feccf3f 108 success_flag = true;
JRM1986 16:85ca9feccf3f 109
JRM1986 16:85ca9feccf3f 110 }
JRM1986 16:85ca9feccf3f 111
JRM1986 16:85ca9feccf3f 112 else {
JRM1986 16:85ca9feccf3f 113
JRM1986 16:85ca9feccf3f 114 success_flag = false;
JRM1986 16:85ca9feccf3f 115
JRM1986 16:85ca9feccf3f 116 }
JRM1986 16:85ca9feccf3f 117
JRM1986 16:85ca9feccf3f 118 return success_flag;
JRM1986 16:85ca9feccf3f 119
JRM1986 16:85ca9feccf3f 120 }
JRM1986 16:85ca9feccf3f 121
JRM1986 16:85ca9feccf3f 122 void SnakeEngine::set_tail_length(bool collision_detected)
JRM1986 16:85ca9feccf3f 123 {
JRM1986 16:85ca9feccf3f 124
JRM1986 16:85ca9feccf3f 125 if(collision_detected) {
JRM1986 16:85ca9feccf3f 126
JRM1986 16:85ca9feccf3f 127 ++g_tl;
JRM1986 16:85ca9feccf3f 128
JRM1986 16:85ca9feccf3f 129 }
JRM1986 16:85ca9feccf3f 130
JRM1986 16:85ca9feccf3f 131 else {
JRM1986 16:85ca9feccf3f 132
JRM1986 16:85ca9feccf3f 133 g_tl = g_tl;
JRM1986 16:85ca9feccf3f 134
JRM1986 16:85ca9feccf3f 135 }
JRM1986 16:85ca9feccf3f 136
JRM1986 16:85ca9feccf3f 137 }
JRM1986 16:85ca9feccf3f 138
JRM1986 16:85ca9feccf3f 139 int SnakeEngine::get_tail_length()
JRM1986 16:85ca9feccf3f 140 {
JRM1986 16:85ca9feccf3f 141
JRM1986 16:85ca9feccf3f 142 int length = g_tl;
JRM1986 16:85ca9feccf3f 143
JRM1986 16:85ca9feccf3f 144 return length;
JRM1986 16:85ca9feccf3f 145
JRM1986 16:85ca9feccf3f 146 }
JRM1986 16:85ca9feccf3f 147
JRM1986 16:85ca9feccf3f 148
JRM1986 16:85ca9feccf3f 149
JRM1986 16:85ca9feccf3f 150