
Final Commit
Dependencies: mbed
SnakeEngine/SnakeEngine.cpp@16:85ca9feccf3f, 2018-04-18 (annotated)
- 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?
User | Revision | Line number | New 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 |