Snake
Dependencies: mbed wave_player 4DGL-uLCD-SE MMA8452
graphics.cpp@3:2fe73b263a9a, 2020-11-23 (annotated)
- Committer:
- congvu
- Date:
- Mon Nov 23 05:54:49 2020 +0000
- Revision:
- 3:2fe73b263a9a
- Parent:
- 2:4947d6a82971
ECE2035;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DCchico | 2:4947d6a82971 | 1 | // Copyright 2020 Georgia Tech. All rights reserved. |
DCchico | 2:4947d6a82971 | 2 | // The materials provided by the instructor in this course are for |
DCchico | 2:4947d6a82971 | 3 | // the use of the students currently enrolled in the course. |
DCchico | 2:4947d6a82971 | 4 | // Copyrighted course materials may not be further disseminated. |
DCchico | 2:4947d6a82971 | 5 | // This file must not be made publicly available anywhere. |
DCchico | 2:4947d6a82971 | 6 | |
DCchico | 1:10330bce85cb | 7 | #include "graphics.h" |
DCchico | 1:10330bce85cb | 8 | |
DCchico | 1:10330bce85cb | 9 | #include "globals.h" |
DCchico | 1:10330bce85cb | 10 | |
congvu | 3:2fe73b263a9a | 11 | #define YELLOW 0xFFFF00 |
congvu | 3:2fe73b263a9a | 12 | #define BROWN 0xD2691E |
congvu | 3:2fe73b263a9a | 13 | #define DIRT BROWN |
congvu | 3:2fe73b263a9a | 14 | |
congvu | 3:2fe73b263a9a | 15 | const char head[121] = { |
congvu | 3:2fe73b263a9a | 16 | 'G','G','G','G','G','G','G','G','G','G','G', |
congvu | 3:2fe73b263a9a | 17 | 'G','G','G','G','G','G','G','G','G','G','G', |
congvu | 3:2fe73b263a9a | 18 | 'G','R','R','R','G','G','R','R','R','G','G', |
congvu | 3:2fe73b263a9a | 19 | 'G','R','R','R','G','G','R','R','R','G','G', |
congvu | 3:2fe73b263a9a | 20 | 'G','R','R','R','G','G','R','R','R','G','G', |
congvu | 3:2fe73b263a9a | 21 | 'G','G','G','G','G','G','G','G','G','G','G', |
congvu | 3:2fe73b263a9a | 22 | 'G','R','R','R','G','G','R','R','R','G','G', |
congvu | 3:2fe73b263a9a | 23 | 'G','R','R','R','G','G','R','R','R','G','G', |
congvu | 3:2fe73b263a9a | 24 | 'G','R','R','R','G','G','R','R','R','G','G', |
congvu | 3:2fe73b263a9a | 25 | 'G','G','G','G','G','G','G','G','G','G','G', |
congvu | 3:2fe73b263a9a | 26 | 'G','G','G','G','G','G','G','G','G','G','G', |
congvu | 3:2fe73b263a9a | 27 | }; |
congvu | 3:2fe73b263a9a | 28 | |
congvu | 3:2fe73b263a9a | 29 | const char tail[121] = { |
congvu | 3:2fe73b263a9a | 30 | 'G','G','G','G','G','G','G','G','G','G','G', |
congvu | 3:2fe73b263a9a | 31 | 'G','G','G','G','G','G','G','G','G','G','G', |
congvu | 3:2fe73b263a9a | 32 | 'G','Y','Y','Y','G','G','G','Y','Y','Y','G', |
congvu | 3:2fe73b263a9a | 33 | 'G','Y','Y','Y','G','G','G','Y','Y','Y','G', |
congvu | 3:2fe73b263a9a | 34 | 'G','Y','Y','Y','G','G','G','Y','Y','Y','G', |
congvu | 3:2fe73b263a9a | 35 | 'G','G','G','G','G','G','G','G','G','G','G', |
congvu | 3:2fe73b263a9a | 36 | 'G','G','G','G','G','G','G','G','G','G','G', |
congvu | 3:2fe73b263a9a | 37 | 'G','Y','Y','Y','G','G','Y','Y','Y','G','G', |
congvu | 3:2fe73b263a9a | 38 | 'G','Y','Y','Y','G','G','Y','Y','Y','G','G', |
congvu | 3:2fe73b263a9a | 39 | 'G','Y','Y','Y','G','G','Y','Y','Y','G','G', |
congvu | 3:2fe73b263a9a | 40 | 'G','G','G','G','G','G','G','G','G','G','G', |
congvu | 3:2fe73b263a9a | 41 | }; |
congvu | 3:2fe73b263a9a | 42 | |
DCchico | 1:10330bce85cb | 43 | void draw_nothing(int u, int v) |
DCchico | 1:10330bce85cb | 44 | { |
DCchico | 1:10330bce85cb | 45 | uLCD.filled_rectangle(u, v, u+10, v+10, BLACK); |
DCchico | 1:10330bce85cb | 46 | } |
DCchico | 1:10330bce85cb | 47 | |
DCchico | 1:10330bce85cb | 48 | void draw_img(int u, int v, const char* img) |
DCchico | 1:10330bce85cb | 49 | { |
DCchico | 1:10330bce85cb | 50 | int colors[11*11]; |
DCchico | 1:10330bce85cb | 51 | for (int i = 0; i < 11*11; i++) |
DCchico | 1:10330bce85cb | 52 | { |
DCchico | 1:10330bce85cb | 53 | if (img[i] == 'R') colors[i] = RED; |
DCchico | 1:10330bce85cb | 54 | else if (img[i] == 'Y') colors[i] = 0xFFFF00; // Yellow |
DCchico | 1:10330bce85cb | 55 | else if (img[i] == 'G') colors[i] = GREEN; |
DCchico | 1:10330bce85cb | 56 | else if (img[i] == 'D') colors[i] = 0xD2691E; // "Dirt" |
DCchico | 1:10330bce85cb | 57 | else if (img[i] == '5') colors[i] = LGREY; // 50% grey |
DCchico | 1:10330bce85cb | 58 | else if (img[i] == '3') colors[i] = DGREY; |
DCchico | 1:10330bce85cb | 59 | else colors[i] = BLACK; |
DCchico | 1:10330bce85cb | 60 | } |
DCchico | 1:10330bce85cb | 61 | uLCD.BLIT(u, v, 11, 11, colors); |
DCchico | 1:10330bce85cb | 62 | wait_us(250); // Recovery time! |
DCchico | 1:10330bce85cb | 63 | } |
DCchico | 1:10330bce85cb | 64 | |
DCchico | 1:10330bce85cb | 65 | void draw_wall(int u, int v) |
DCchico | 1:10330bce85cb | 66 | { |
congvu | 3:2fe73b263a9a | 67 | uLCD.filled_rectangle(u, v, u+10, v+10, LGREY); |
DCchico | 1:10330bce85cb | 68 | } |
DCchico | 1:10330bce85cb | 69 | |
DCchico | 1:10330bce85cb | 70 | void draw_plant(int u, int v) |
DCchico | 1:10330bce85cb | 71 | { |
DCchico | 1:10330bce85cb | 72 | uLCD.filled_rectangle(u, v, u+10, v+10, GREEN); |
DCchico | 1:10330bce85cb | 73 | } |
DCchico | 1:10330bce85cb | 74 | |
DCchico | 1:10330bce85cb | 75 | void draw_goodie(int u, int v) |
DCchico | 1:10330bce85cb | 76 | { |
congvu | 3:2fe73b263a9a | 77 | uLCD.filled_rectangle(u, v, u+10, v+10, 0xD2691E); //DIRT |
DCchico | 1:10330bce85cb | 78 | } |
DCchico | 1:10330bce85cb | 79 | |
DCchico | 1:10330bce85cb | 80 | void draw_snake_body(int u, int v) |
DCchico | 1:10330bce85cb | 81 | { |
DCchico | 1:10330bce85cb | 82 | uLCD.filled_rectangle(u, v, u+10, v+10, GREEN); |
DCchico | 1:10330bce85cb | 83 | } |
DCchico | 1:10330bce85cb | 84 | |
DCchico | 1:10330bce85cb | 85 | void draw_snake_head(int u, int v) |
DCchico | 1:10330bce85cb | 86 | { |
DCchico | 1:10330bce85cb | 87 | //May need to design a snake head sprite |
DCchico | 1:10330bce85cb | 88 | //Tile still need to be designed on paper |
congvu | 3:2fe73b263a9a | 89 | |
DCchico | 1:10330bce85cb | 90 | uLCD.filled_rectangle(u, v, u+10, v+10, GREEN); |
congvu | 3:2fe73b263a9a | 91 | draw_img(u,v, head); |
congvu | 3:2fe73b263a9a | 92 | // uLCD.filled_rectangle(u+1, v+1, u+3, v+3, RED); |
congvu | 3:2fe73b263a9a | 93 | // uLCD.filled_rectangle(u+7, v+1, u+9, v+3, RED); |
congvu | 3:2fe73b263a9a | 94 | // uLCD.filled_rectangle(u+1, v+7, u+3, v+9, RED); |
congvu | 3:2fe73b263a9a | 95 | // uLCD.filled_rectangle(u+7, v+7, u+9, v+9, RED); |
congvu | 3:2fe73b263a9a | 96 | |
DCchico | 1:10330bce85cb | 97 | } |
DCchico | 1:10330bce85cb | 98 | |
DCchico | 1:10330bce85cb | 99 | void draw_snake_tail(int u, int v) |
DCchico | 1:10330bce85cb | 100 | { |
DCchico | 1:10330bce85cb | 101 | //May need to design a snake tail sprite |
DCchico | 1:10330bce85cb | 102 | //Tile still need to be designed on paper |
congvu | 3:2fe73b263a9a | 103 | |
DCchico | 1:10330bce85cb | 104 | uLCD.filled_rectangle(u, v, u+10, v+10, GREEN); |
congvu | 3:2fe73b263a9a | 105 | draw_img(u,v, tail); |
congvu | 3:2fe73b263a9a | 106 | // uLCD.filled_rectangle(u+1, v+1, u+3, v+3, 0xFFFF00); //YELLOW |
congvu | 3:2fe73b263a9a | 107 | // uLCD.filled_rectangle(u+7, v+1, u+9, v+3, 0xFFFF00); |
congvu | 3:2fe73b263a9a | 108 | // uLCD.filled_rectangle(u+1, v+7, u+3, v+9, 0xFFFF00); |
congvu | 3:2fe73b263a9a | 109 | // uLCD.filled_rectangle(u+7, v+7, u+9, v+9, 0xFFFF00); |
DCchico | 1:10330bce85cb | 110 | } |
DCchico | 1:10330bce85cb | 111 | |
DCchico | 1:10330bce85cb | 112 |