Mortal Kombat Game ELEC2645

Dependencies:   mbed N5110 ShiftReg Joystick

Committer:
ozy
Date:
Sun Apr 25 00:16:59 2021 +0000
Revision:
12:b4477a312158
Parent:
10:e83899f11e8a
Child:
13:eaf070d5f599
Code before enemy move_around function

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ozy 1:3bdadf6f6dbd 1 #include "Enemy.h"
ozy 1:3bdadf6f6dbd 2 #include "mbed.h"
ozy 12:b4477a312158 3 #include <stdlib.h>
ozy 1:3bdadf6f6dbd 4
ozy 1:3bdadf6f6dbd 5 Enemy::Enemy() {}
ozy 1:3bdadf6f6dbd 6
ozy 5:889ad974b64d 7 int Enemy::get_x() {
ozy 5:889ad974b64d 8 return _x;
ozy 5:889ad974b64d 9 }
ozy 5:889ad974b64d 10
ozy 5:889ad974b64d 11 int Enemy::get_y() {
ozy 5:889ad974b64d 12 return _y;
ozy 5:889ad974b64d 13 }
ozy 5:889ad974b64d 14
ozy 5:889ad974b64d 15 void Enemy::set_x(int x) {
ozy 5:889ad974b64d 16 _x = x;
ozy 5:889ad974b64d 17 }
ozy 5:889ad974b64d 18
ozy 5:889ad974b64d 19 void Enemy::set_y(int y) {
ozy 5:889ad974b64d 20 _y = y;
ozy 5:889ad974b64d 21 }
ozy 5:889ad974b64d 22
ozy 5:889ad974b64d 23 void Enemy::add_x(int x) {
ozy 5:889ad974b64d 24 _x += x;
ozy 5:889ad974b64d 25 }
ozy 5:889ad974b64d 26
ozy 5:889ad974b64d 27 void Enemy::add_y(int y) {
ozy 5:889ad974b64d 28 _y += y;
ozy 5:889ad974b64d 29 }
ozy 5:889ad974b64d 30
ozy 8:e2e2eb4ea0ca 31 void Enemy::init() {
ozy 8:e2e2eb4ea0ca 32 set_x(50);
ozy 7:737fb0c3dbef 33 set_y(34);
ozy 7:737fb0c3dbef 34 }
ozy 8:e2e2eb4ea0ca 35 void Enemy::draw(N5110 &lcd, int input) {
ozy 6:a1a7dc264fed 36
ozy 8:e2e2eb4ea0ca 37 const int look_left[12][10] = {
ozy 8:e2e2eb4ea0ca 38 { 0,0,1,1,1,0,0,0,0,0 },
ozy 8:e2e2eb4ea0ca 39 { 0,0,1,1,1,0,0,0,0,0 },
ozy 8:e2e2eb4ea0ca 40 { 0,0,0,1,1,1,1,1,1,0 },
ozy 8:e2e2eb4ea0ca 41 { 0,0,1,0,1,1,0,0,1,0 },
ozy 8:e2e2eb4ea0ca 42 { 1,1,1,0,1,1,0,1,1,1 },
ozy 1:3bdadf6f6dbd 43 { 0,0,0,0,1,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 44 { 0,0,0,1,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 45 { 0,0,1,1,0,0,1,1,0,0 },
ozy 8:e2e2eb4ea0ca 46 { 0,1,1,0,0,0,1,1,0,0 },
ozy 8:e2e2eb4ea0ca 47 { 0,0,1,1,0,0,0,1,1,0 },
ozy 8:e2e2eb4ea0ca 48 { 0,0,0,1,0,0,0,0,1,0 },
ozy 8:e2e2eb4ea0ca 49 { 0,1,1,1,0,0,0,1,1,0 },
ozy 1:3bdadf6f6dbd 50 };
ozy 1:3bdadf6f6dbd 51
ozy 8:e2e2eb4ea0ca 52 const int look_right[12][10] = {
ozy 8:e2e2eb4ea0ca 53 { 0,0,0,0,0,1,1,1,0,0 },
ozy 8:e2e2eb4ea0ca 54 { 0,0,0,0,0,1,1,1,0,0 },
ozy 8:e2e2eb4ea0ca 55 { 0,0,0,1,1,1,1,0,0,0 },
ozy 8:e2e2eb4ea0ca 56 { 0,0,1,1,1,1,1,0,1,0 },
ozy 8:e2e2eb4ea0ca 57 { 0,1,1,0,1,1,0,1,1,1 },
ozy 8:e2e2eb4ea0ca 58 { 0,0,0,0,1,1,0,0,1,0 },
ozy 8:e2e2eb4ea0ca 59 { 0,0,0,1,1,1,1,0,0,0 },
ozy 8:e2e2eb4ea0ca 60 { 0,0,1,1,0,0,1,1,0,0 },
ozy 8:e2e2eb4ea0ca 61 { 0,0,1,1,0,0,0,1,1,0 },
ozy 8:e2e2eb4ea0ca 62 { 0,1,1,0,0,0,1,1,0,0 },
ozy 8:e2e2eb4ea0ca 63 { 0,1,0,0,0,1,1,0,0,0 },
ozy 8:e2e2eb4ea0ca 64 { 0,1,1,0,1,1,1,1,0,0 },
ozy 8:e2e2eb4ea0ca 65 };
ozy 8:e2e2eb4ea0ca 66
ozy 8:e2e2eb4ea0ca 67 if (input == 1) {
ozy 8:e2e2eb4ea0ca 68 lcd.drawSprite(_x,_y,12,10,(int *)look_right);
ozy 8:e2e2eb4ea0ca 69 }
ozy 8:e2e2eb4ea0ca 70 else {
ozy 8:e2e2eb4ea0ca 71 lcd.drawSprite(_x,_y,12,10,(int *)look_left);
ozy 8:e2e2eb4ea0ca 72 }
ozy 1:3bdadf6f6dbd 73 }
ozy 1:3bdadf6f6dbd 74 // ************************************************************************
ozy 1:3bdadf6f6dbd 75
ozy 1:3bdadf6f6dbd 76
ozy 5:889ad974b64d 77 void Enemy::move_left(N5110 &lcd){
ozy 1:3bdadf6f6dbd 78 const int run_left[12][10] = {
ozy 1:3bdadf6f6dbd 79 { 0,0,1,1,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 80 { 0,0,1,1,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 81 { 0,0,0,1,1,1,1,1,1,0 },
ozy 1:3bdadf6f6dbd 82 { 0,0,1,0,1,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 83 { 1,1,1,0,1,1,0,1,1,1 },
ozy 1:3bdadf6f6dbd 84 { 0,0,0,0,1,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 85 { 0,0,0,1,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 86 { 0,0,1,1,0,0,1,1,0,0 },
ozy 1:3bdadf6f6dbd 87 { 0,1,1,0,0,0,1,1,1,1 },
ozy 1:3bdadf6f6dbd 88 { 0,0,1,1,0,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 89 { 0,0,0,1,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 90 { 0,0,0,0,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 91 };
ozy 1:3bdadf6f6dbd 92 lcd.drawSprite(_x,_y,12,10,(int *)run_left);
ozy 1:3bdadf6f6dbd 93 }
ozy 1:3bdadf6f6dbd 94
ozy 5:889ad974b64d 95 void Enemy::move_left2(N5110 &lcd){
ozy 1:3bdadf6f6dbd 96 const int run_left[12][10] = {
ozy 1:3bdadf6f6dbd 97 { 0,0,1,1,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 98 { 0,0,1,1,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 99 { 0,0,0,1,1,1,1,1,1,0 },
ozy 1:3bdadf6f6dbd 100 { 0,0,1,0,1,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 101 { 1,1,1,0,1,1,0,1,1,1 },
ozy 1:3bdadf6f6dbd 102 { 0,0,0,0,1,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 103 { 0,0,0,1,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 104 { 0,0,1,1,0,0,1,1,0,0 },
ozy 1:3bdadf6f6dbd 105 { 0,0,0,1,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 106 { 0,0,0,0,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 107 { 0,0,0,0,1,0,1,0,0,0 },
ozy 1:3bdadf6f6dbd 108 { 0,0,0,1,0,0,0,1,0,0 },
ozy 1:3bdadf6f6dbd 109 };
ozy 1:3bdadf6f6dbd 110 lcd.drawSprite(_x,_y,12,10,(int *)run_left);
ozy 1:3bdadf6f6dbd 111 }
ozy 1:3bdadf6f6dbd 112
ozy 1:3bdadf6f6dbd 113 // ************************************************************************
ozy 1:3bdadf6f6dbd 114
ozy 5:889ad974b64d 115 void Enemy::move_right(N5110 &lcd) {
ozy 1:3bdadf6f6dbd 116
ozy 1:3bdadf6f6dbd 117 const int run_right[12][10] = {
ozy 1:3bdadf6f6dbd 118 { 0,0,0,0,0,1,1,1,0,0 },
ozy 1:3bdadf6f6dbd 119 { 0,0,0,0,0,1,1,1,0,0 },
ozy 1:3bdadf6f6dbd 120 { 0,0,0,1,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 121 { 0,0,1,1,1,1,1,0,1,0 },
ozy 1:3bdadf6f6dbd 122 { 0,1,1,0,1,1,0,1,1,1 },
ozy 1:3bdadf6f6dbd 123 { 0,0,0,0,1,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 124 { 0,0,0,1,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 125 { 0,0,1,1,0,0,1,1,0,0 },
ozy 1:3bdadf6f6dbd 126 { 1,1,1,1,0,0,0,1,1,0 },
ozy 1:3bdadf6f6dbd 127 { 0,0,0,0,0,0,1,1,0,0 },
ozy 1:3bdadf6f6dbd 128 { 0,0,0,0,0,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 129 { 0,0,0,0,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 130 };
ozy 1:3bdadf6f6dbd 131 lcd.drawSprite(_x,_y,12,10,(int *)run_right);
ozy 1:3bdadf6f6dbd 132 }
ozy 1:3bdadf6f6dbd 133
ozy 5:889ad974b64d 134 void Enemy::move_right2(N5110 &lcd) {
ozy 1:3bdadf6f6dbd 135 const int midrun_right[12][10] = {
ozy 1:3bdadf6f6dbd 136 { 0,0,0,0,0,1,1,1,0,0 },
ozy 1:3bdadf6f6dbd 137 { 0,0,0,0,0,1,1,1,0,0 },
ozy 1:3bdadf6f6dbd 138 { 0,0,0,1,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 139 { 0,0,1,1,1,1,1,0,1,0 },
ozy 1:3bdadf6f6dbd 140 { 0,1,1,0,1,1,0,1,1,1 },
ozy 1:3bdadf6f6dbd 141 { 0,0,0,0,1,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 142 { 0,0,0,1,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 143 { 0,0,1,1,0,0,1,1,0,0 },
ozy 1:3bdadf6f6dbd 144 { 0,0,0,1,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 145 { 0,0,0,0,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 146 { 0,0,0,1,0,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 147 { 0,0,1,0,0,0,1,0,0,0 },
ozy 1:3bdadf6f6dbd 148 };
ozy 1:3bdadf6f6dbd 149 lcd.drawSprite(_x,_y,12,10,(int *)midrun_right);
ozy 1:3bdadf6f6dbd 150 }
ozy 1:3bdadf6f6dbd 151
ozy 1:3bdadf6f6dbd 152
ozy 5:889ad974b64d 153 void Enemy::sword_right(N5110 &lcd) {
ozy 1:3bdadf6f6dbd 154 const int swordsprite[12][10] = {
ozy 1:3bdadf6f6dbd 155 { 0,0,1,1,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 156 { 1,0,1,1,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 157 { 1,0,0,1,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 158 { 1,1,0,1,1,0,1,0,0,0 },
ozy 1:3bdadf6f6dbd 159 { 0,1,1,1,1,1,1,1,1,1 },
ozy 6:a1a7dc264fed 160 { 0,0,0,1,1,0,1,0,0,0 },
ozy 1:3bdadf6f6dbd 161 { 0,0,0,1,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 162 { 0,0,0,1,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 163 { 0,0,1,1,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 164 { 0,1,1,0,0,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 165 { 0,1,0,0,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 166 { 1,1,0,0,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 167 };
ozy 1:3bdadf6f6dbd 168 lcd.drawSprite(_x,_y,12,10,(int *)swordsprite);
ozy 1:3bdadf6f6dbd 169 }
ozy 1:3bdadf6f6dbd 170
ozy 1:3bdadf6f6dbd 171 // ************************************************************************
ozy 1:3bdadf6f6dbd 172
ozy 1:3bdadf6f6dbd 173
ozy 5:889ad974b64d 174 void Enemy::sword_left(N5110 &lcd) {
ozy 1:3bdadf6f6dbd 175 const int swordsprite[12][10] = {
ozy 1:3bdadf6f6dbd 176 { 0,0,0,0,1,1,1,1,0,0 },
ozy 1:3bdadf6f6dbd 177 { 0,0,0,0,1,1,1,1,0,1 },
ozy 1:3bdadf6f6dbd 178 { 0,0,0,0,0,1,1,0,0,1 },
ozy 1:3bdadf6f6dbd 179 { 0,0,0,1,0,1,1,0,1,1 },
ozy 1:3bdadf6f6dbd 180 { 1,1,1,1,1,1,1,1,1,0 },
ozy 6:a1a7dc264fed 181 { 0,0,0,1,0,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 182 { 0,0,0,0,0,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 183 { 0,0,0,0,0,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 184 { 0,0,0,0,1,1,1,1,0,0 },
ozy 1:3bdadf6f6dbd 185 { 0,0,0,1,1,0,0,1,1,0 },
ozy 1:3bdadf6f6dbd 186 { 0,0,0,0,1,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 187 { 0,0,0,0,0,1,0,0,1,1 },
ozy 1:3bdadf6f6dbd 188 };
ozy 1:3bdadf6f6dbd 189 lcd.drawSprite(_x,_y,12,10,(int *)swordsprite);
ozy 1:3bdadf6f6dbd 190 }
ozy 1:3bdadf6f6dbd 191
ozy 1:3bdadf6f6dbd 192 // ************************************************************************
ozy 1:3bdadf6f6dbd 193
ozy 1:3bdadf6f6dbd 194
ozy 5:889ad974b64d 195 void Enemy::kick_right(N5110 &lcd) {
ozy 1:3bdadf6f6dbd 196 const int kick[12][10] = {
ozy 1:3bdadf6f6dbd 197 { 0,1,1,0,0,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 198 { 0,1,1,0,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 199 { 0,0,0,1,1,1,1,0,0,1 },
ozy 1:3bdadf6f6dbd 200 { 0,0,1,1,1,0,0,0,1,1 },
ozy 1:3bdadf6f6dbd 201 { 0,1,1,1,1,1,1,1,0,0 },
ozy 1:3bdadf6f6dbd 202 { 0,1,0,0,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 203 { 1,1,1,0,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 204 { 0,1,0,0,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 205 { 0,1,0,1,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 206 { 0,0,0,1,0,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 207 { 0,0,1,1,0,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 208 { 0,0,1,1,0,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 209 };
ozy 1:3bdadf6f6dbd 210 lcd.drawSprite(_x,_y,12,10,(int *)kick);
ozy 1:3bdadf6f6dbd 211 }
ozy 1:3bdadf6f6dbd 212
ozy 1:3bdadf6f6dbd 213 // ************************************************************************
ozy 1:3bdadf6f6dbd 214
ozy 1:3bdadf6f6dbd 215
ozy 5:889ad974b64d 216 void Enemy::kick_left(N5110 &lcd) {
ozy 1:3bdadf6f6dbd 217 const int kick[12][10] = {
ozy 1:3bdadf6f6dbd 218 { 0,0,0,0,0,0,0,1,1,0 },
ozy 1:3bdadf6f6dbd 219 { 0,0,0,0,1,1,0,1,1,0 },
ozy 1:3bdadf6f6dbd 220 { 1,0,0,1,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 221 { 1,1,0,0,0,1,1,1,0,0 },
ozy 1:3bdadf6f6dbd 222 { 0,0,1,1,1,1,1,1,1,0 },
ozy 1:3bdadf6f6dbd 223 { 0,0,0,1,1,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 224 { 0,0,0,0,1,1,0,1,1,1 },
ozy 1:3bdadf6f6dbd 225 { 0,0,0,0,0,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 226 { 0,0,0,0,1,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 227 { 0,0,0,0,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 228 { 0,0,0,0,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 229 { 0,0,0,0,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 230 };
ozy 1:3bdadf6f6dbd 231 lcd.drawSprite(_x,_y,12,10,(int *)kick);
ozy 1:3bdadf6f6dbd 232 }
ozy 1:3bdadf6f6dbd 233
ozy 1:3bdadf6f6dbd 234 // ************************************************************************
ozy 12:b4477a312158 235
ozy 12:b4477a312158 236 void Enemy::twoway_punch(N5110 &lcd){
ozy 12:b4477a312158 237 const int punchpunch[12][10] = {
ozy 12:b4477a312158 238 { 0,0,0,0,0,0,0,0,0,0 },
ozy 12:b4477a312158 239 { 0,0,0,0,1,1,0,0,0,0 },
ozy 12:b4477a312158 240 { 0,0,0,0,1,1,0,0,0,0 },
ozy 12:b4477a312158 241 { 0,0,0,0,1,1,0,0,1,0 },
ozy 12:b4477a312158 242 { 1,1,1,1,1,1,1,1,1,1 },
ozy 12:b4477a312158 243 { 0,0,0,0,1,1,0,0,1,0 },
ozy 12:b4477a312158 244 { 0,0,0,0,1,1,0,0,0,0 },
ozy 12:b4477a312158 245 { 0,0,0,1,1,1,1,0,0,0 },
ozy 12:b4477a312158 246 { 0,0,1,1,0,0,1,1,0,0 },
ozy 12:b4477a312158 247 { 0,1,0,0,0,0,0,0,1,0 },
ozy 12:b4477a312158 248 { 0,1,0,0,0,0,0,0,1,0 },
ozy 12:b4477a312158 249 { 0,1,0,0,0,0,0,0,1,0 },
ozy 12:b4477a312158 250 };
ozy 12:b4477a312158 251
ozy 12:b4477a312158 252 lcd.drawSprite(_x,_y,12,10,(int *)punchpunch);
ozy 12:b4477a312158 253 }
ozy 12:b4477a312158 254
ozy 12:b4477a312158 255 void Enemy::randomize_moves(N5110 &lcd, int input) {
ozy 12:b4477a312158 256 int move_number = rand()%12;
ozy 12:b4477a312158 257 draw(lcd, input);
ozy 12:b4477a312158 258 // enemy state: looking to the right (input is 1)
ozy 12:b4477a312158 259 if(input == 1) {
ozy 12:b4477a312158 260 if (move_number == 0) {
ozy 12:b4477a312158 261 kick_right(lcd);
ozy 12:b4477a312158 262 }
ozy 12:b4477a312158 263 else if (move_number == 1) {
ozy 12:b4477a312158 264 sword_right(lcd);
ozy 12:b4477a312158 265 }
ozy 12:b4477a312158 266 else if (move_number == 2){
ozy 12:b4477a312158 267 twoway_punch(lcd);
ozy 12:b4477a312158 268 }
ozy 12:b4477a312158 269 else{draw(lcd, input);}
ozy 12:b4477a312158 270 }
ozy 12:b4477a312158 271 else if(input == 0) { // enemy state: looking to the left
ozy 12:b4477a312158 272 if (move_number == 0) {
ozy 12:b4477a312158 273 kick_left(lcd);
ozy 12:b4477a312158 274 }
ozy 12:b4477a312158 275 else if (move_number == 1) {
ozy 12:b4477a312158 276 sword_left(lcd);
ozy 12:b4477a312158 277 }
ozy 12:b4477a312158 278 else if (move_number == 2){
ozy 12:b4477a312158 279 twoway_punch(lcd);
ozy 12:b4477a312158 280 }
ozy 12:b4477a312158 281 else{draw(lcd, input);}
ozy 12:b4477a312158 282 }
ozy 12:b4477a312158 283 }
ozy 12:b4477a312158 284