Mortal Kombat Game ELEC2645

Dependencies:   mbed N5110 ShiftReg Joystick

Committer:
ozy
Date:
Mon Apr 26 23:58:35 2021 +0000
Revision:
15:7fd2d34f3be5
Parent:
14:7f23841685ad
Child:
16:4a1d916d97c5
Code after jump move D

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 14:7f23841685ad 31 void Enemy::init() {
ozy 14:7f23841685ad 32 // function to randomly initialize position of each enemy god
ozy 14:7f23841685ad 33 int rrandom = rand()%64;
ozy 15:7fd2d34f3be5 34 set_x(40);
ozy 14:7f23841685ad 35 set_y(34);
ozy 14:7f23841685ad 36
ozy 7:737fb0c3dbef 37 }
ozy 8:e2e2eb4ea0ca 38 void Enemy::draw(N5110 &lcd, int input) {
ozy 6:a1a7dc264fed 39
ozy 8:e2e2eb4ea0ca 40 const int look_left[12][10] = {
ozy 8:e2e2eb4ea0ca 41 { 0,0,1,1,1,0,0,0,0,0 },
ozy 8:e2e2eb4ea0ca 42 { 0,0,1,1,1,0,0,0,0,0 },
ozy 8:e2e2eb4ea0ca 43 { 0,0,0,1,1,1,1,1,1,0 },
ozy 8:e2e2eb4ea0ca 44 { 0,0,1,0,1,1,0,0,1,0 },
ozy 8:e2e2eb4ea0ca 45 { 1,1,1,0,1,1,0,1,1,1 },
ozy 1:3bdadf6f6dbd 46 { 0,0,0,0,1,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 47 { 0,0,0,1,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 48 { 0,0,1,1,0,0,1,1,0,0 },
ozy 8:e2e2eb4ea0ca 49 { 0,1,1,0,0,0,1,1,0,0 },
ozy 8:e2e2eb4ea0ca 50 { 0,0,1,1,0,0,0,1,1,0 },
ozy 8:e2e2eb4ea0ca 51 { 0,0,0,1,0,0,0,0,1,0 },
ozy 8:e2e2eb4ea0ca 52 { 0,1,1,1,0,0,0,1,1,0 },
ozy 1:3bdadf6f6dbd 53 };
ozy 1:3bdadf6f6dbd 54
ozy 8:e2e2eb4ea0ca 55 const int look_right[12][10] = {
ozy 8:e2e2eb4ea0ca 56 { 0,0,0,0,0,1,1,1,0,0 },
ozy 8:e2e2eb4ea0ca 57 { 0,0,0,0,0,1,1,1,0,0 },
ozy 8:e2e2eb4ea0ca 58 { 0,0,0,1,1,1,1,0,0,0 },
ozy 8:e2e2eb4ea0ca 59 { 0,0,1,1,1,1,1,0,1,0 },
ozy 8:e2e2eb4ea0ca 60 { 0,1,1,0,1,1,0,1,1,1 },
ozy 8:e2e2eb4ea0ca 61 { 0,0,0,0,1,1,0,0,1,0 },
ozy 8:e2e2eb4ea0ca 62 { 0,0,0,1,1,1,1,0,0,0 },
ozy 8:e2e2eb4ea0ca 63 { 0,0,1,1,0,0,1,1,0,0 },
ozy 8:e2e2eb4ea0ca 64 { 0,0,1,1,0,0,0,1,1,0 },
ozy 8:e2e2eb4ea0ca 65 { 0,1,1,0,0,0,1,1,0,0 },
ozy 8:e2e2eb4ea0ca 66 { 0,1,0,0,0,1,1,0,0,0 },
ozy 8:e2e2eb4ea0ca 67 { 0,1,1,0,1,1,1,1,0,0 },
ozy 8:e2e2eb4ea0ca 68 };
ozy 8:e2e2eb4ea0ca 69
ozy 8:e2e2eb4ea0ca 70 if (input == 1) {
ozy 8:e2e2eb4ea0ca 71 lcd.drawSprite(_x,_y,12,10,(int *)look_right);
ozy 8:e2e2eb4ea0ca 72 }
ozy 8:e2e2eb4ea0ca 73 else {
ozy 8:e2e2eb4ea0ca 74 lcd.drawSprite(_x,_y,12,10,(int *)look_left);
ozy 8:e2e2eb4ea0ca 75 }
ozy 13:eaf070d5f599 76
ozy 1:3bdadf6f6dbd 77 }
ozy 1:3bdadf6f6dbd 78 // ************************************************************************
ozy 1:3bdadf6f6dbd 79
ozy 1:3bdadf6f6dbd 80
ozy 5:889ad974b64d 81 void Enemy::move_left(N5110 &lcd){
ozy 1:3bdadf6f6dbd 82 const int run_left[12][10] = {
ozy 1:3bdadf6f6dbd 83 { 0,0,1,1,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 84 { 0,0,1,1,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 85 { 0,0,0,1,1,1,1,1,1,0 },
ozy 1:3bdadf6f6dbd 86 { 0,0,1,0,1,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 87 { 1,1,1,0,1,1,0,1,1,1 },
ozy 1:3bdadf6f6dbd 88 { 0,0,0,0,1,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 89 { 0,0,0,1,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 90 { 0,0,1,1,0,0,1,1,0,0 },
ozy 1:3bdadf6f6dbd 91 { 0,1,1,0,0,0,1,1,1,1 },
ozy 1:3bdadf6f6dbd 92 { 0,0,1,1,0,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 93 { 0,0,0,1,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 94 { 0,0,0,0,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 95 };
ozy 13:eaf070d5f599 96
ozy 14:7f23841685ad 97 const int midrun_left[12][10] = {
ozy 1:3bdadf6f6dbd 98 { 0,0,1,1,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 99 { 0,0,1,1,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 100 { 0,0,0,1,1,1,1,1,1,0 },
ozy 1:3bdadf6f6dbd 101 { 0,0,1,0,1,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 102 { 1,1,1,0,1,1,0,1,1,1 },
ozy 1:3bdadf6f6dbd 103 { 0,0,0,0,1,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 104 { 0,0,0,1,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 105 { 0,0,1,1,0,0,1,1,0,0 },
ozy 1:3bdadf6f6dbd 106 { 0,0,0,1,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 107 { 0,0,0,0,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 108 { 0,0,0,0,1,0,1,0,0,0 },
ozy 1:3bdadf6f6dbd 109 { 0,0,0,1,0,0,0,1,0,0 },
ozy 1:3bdadf6f6dbd 110 };
ozy 14:7f23841685ad 111 // code to toggle between both move left animations
ozy 14:7f23841685ad 112 int x = rand() % 2;
ozy 13:eaf070d5f599 113 if (x == 0) {
ozy 14:7f23841685ad 114 x = 1;
ozy 13:eaf070d5f599 115 lcd.drawSprite(_x,_y,12,10,(int *)run_left);
ozy 13:eaf070d5f599 116 }
ozy 13:eaf070d5f599 117 else if(x == 1) {
ozy 14:7f23841685ad 118 x = 0;
ozy 14:7f23841685ad 119 lcd.drawSprite(_x,_y,12,10,(int *)midrun_left);
ozy 13:eaf070d5f599 120 }
ozy 1:3bdadf6f6dbd 121 }
ozy 1:3bdadf6f6dbd 122
ozy 13:eaf070d5f599 123
ozy 1:3bdadf6f6dbd 124 // ************************************************************************
ozy 1:3bdadf6f6dbd 125
ozy 5:889ad974b64d 126 void Enemy::move_right(N5110 &lcd) {
ozy 1:3bdadf6f6dbd 127
ozy 1:3bdadf6f6dbd 128 const int run_right[12][10] = {
ozy 1:3bdadf6f6dbd 129 { 0,0,0,0,0,1,1,1,0,0 },
ozy 1:3bdadf6f6dbd 130 { 0,0,0,0,0,1,1,1,0,0 },
ozy 1:3bdadf6f6dbd 131 { 0,0,0,1,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 132 { 0,0,1,1,1,1,1,0,1,0 },
ozy 1:3bdadf6f6dbd 133 { 0,1,1,0,1,1,0,1,1,1 },
ozy 1:3bdadf6f6dbd 134 { 0,0,0,0,1,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 135 { 0,0,0,1,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 136 { 0,0,1,1,0,0,1,1,0,0 },
ozy 1:3bdadf6f6dbd 137 { 1,1,1,1,0,0,0,1,1,0 },
ozy 1:3bdadf6f6dbd 138 { 0,0,0,0,0,0,1,1,0,0 },
ozy 1:3bdadf6f6dbd 139 { 0,0,0,0,0,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 140 { 0,0,0,0,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 141 };
ozy 14:7f23841685ad 142 const int midrun_right[12][10] = {
ozy 1:3bdadf6f6dbd 143 { 0,0,0,0,0,1,1,1,0,0 },
ozy 1:3bdadf6f6dbd 144 { 0,0,0,0,0,1,1,1,0,0 },
ozy 1:3bdadf6f6dbd 145 { 0,0,0,1,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 146 { 0,0,1,1,1,1,1,0,1,0 },
ozy 1:3bdadf6f6dbd 147 { 0,1,1,0,1,1,0,1,1,1 },
ozy 1:3bdadf6f6dbd 148 { 0,0,0,0,1,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 149 { 0,0,0,1,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 150 { 0,0,1,1,0,0,1,1,0,0 },
ozy 1:3bdadf6f6dbd 151 { 0,0,0,1,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 152 { 0,0,0,0,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 153 { 0,0,0,1,0,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 154 { 0,0,1,0,0,0,1,0,0,0 },
ozy 1:3bdadf6f6dbd 155 };
ozy 14:7f23841685ad 156 // code to toggle between both move right animations
ozy 14:7f23841685ad 157 int x = rand() % 2;
ozy 14:7f23841685ad 158 if (x == 0) {
ozy 14:7f23841685ad 159 x = 1;
ozy 14:7f23841685ad 160 lcd.drawSprite(_x,_y,12,10,(int *)run_right);
ozy 14:7f23841685ad 161 }
ozy 14:7f23841685ad 162 else if(x == 1) {
ozy 14:7f23841685ad 163 x = 0;
ozy 14:7f23841685ad 164 lcd.drawSprite(_x,_y,12,10,(int *)midrun_right);
ozy 14:7f23841685ad 165 }
ozy 1:3bdadf6f6dbd 166 }
ozy 1:3bdadf6f6dbd 167
ozy 1:3bdadf6f6dbd 168
ozy 14:7f23841685ad 169
ozy 5:889ad974b64d 170 void Enemy::sword_right(N5110 &lcd) {
ozy 1:3bdadf6f6dbd 171 const int swordsprite[12][10] = {
ozy 1:3bdadf6f6dbd 172 { 0,0,1,1,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 173 { 1,0,1,1,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 174 { 1,0,0,1,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 175 { 1,1,0,1,1,0,1,0,0,0 },
ozy 1:3bdadf6f6dbd 176 { 0,1,1,1,1,1,1,1,1,1 },
ozy 6:a1a7dc264fed 177 { 0,0,0,1,1,0,1,0,0,0 },
ozy 1:3bdadf6f6dbd 178 { 0,0,0,1,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 179 { 0,0,0,1,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 180 { 0,0,1,1,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 181 { 0,1,1,0,0,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 182 { 0,1,0,0,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 183 { 1,1,0,0,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 184 };
ozy 1:3bdadf6f6dbd 185 lcd.drawSprite(_x,_y,12,10,(int *)swordsprite);
ozy 1:3bdadf6f6dbd 186 }
ozy 1:3bdadf6f6dbd 187
ozy 1:3bdadf6f6dbd 188 // ************************************************************************
ozy 1:3bdadf6f6dbd 189
ozy 1:3bdadf6f6dbd 190
ozy 5:889ad974b64d 191 void Enemy::sword_left(N5110 &lcd) {
ozy 1:3bdadf6f6dbd 192 const int swordsprite[12][10] = {
ozy 1:3bdadf6f6dbd 193 { 0,0,0,0,1,1,1,1,0,0 },
ozy 1:3bdadf6f6dbd 194 { 0,0,0,0,1,1,1,1,0,1 },
ozy 1:3bdadf6f6dbd 195 { 0,0,0,0,0,1,1,0,0,1 },
ozy 1:3bdadf6f6dbd 196 { 0,0,0,1,0,1,1,0,1,1 },
ozy 1:3bdadf6f6dbd 197 { 1,1,1,1,1,1,1,1,1,0 },
ozy 6:a1a7dc264fed 198 { 0,0,0,1,0,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 199 { 0,0,0,0,0,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 200 { 0,0,0,0,0,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 201 { 0,0,0,0,1,1,1,1,0,0 },
ozy 1:3bdadf6f6dbd 202 { 0,0,0,1,1,0,0,1,1,0 },
ozy 1:3bdadf6f6dbd 203 { 0,0,0,0,1,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 204 { 0,0,0,0,0,1,0,0,1,1 },
ozy 1:3bdadf6f6dbd 205 };
ozy 1:3bdadf6f6dbd 206 lcd.drawSprite(_x,_y,12,10,(int *)swordsprite);
ozy 1:3bdadf6f6dbd 207 }
ozy 1:3bdadf6f6dbd 208
ozy 1:3bdadf6f6dbd 209 // ************************************************************************
ozy 1:3bdadf6f6dbd 210
ozy 1:3bdadf6f6dbd 211
ozy 5:889ad974b64d 212 void Enemy::kick_right(N5110 &lcd) {
ozy 1:3bdadf6f6dbd 213 const int kick[12][10] = {
ozy 1:3bdadf6f6dbd 214 { 0,1,1,0,0,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 215 { 0,1,1,0,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 216 { 0,0,0,1,1,1,1,0,0,1 },
ozy 1:3bdadf6f6dbd 217 { 0,0,1,1,1,0,0,0,1,1 },
ozy 1:3bdadf6f6dbd 218 { 0,1,1,1,1,1,1,1,0,0 },
ozy 1:3bdadf6f6dbd 219 { 0,1,0,0,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 220 { 1,1,1,0,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 221 { 0,1,0,0,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 222 { 0,1,0,1,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 223 { 0,0,0,1,0,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 224 { 0,0,1,1,0,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 225 { 0,0,1,1,0,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 226 };
ozy 1:3bdadf6f6dbd 227 lcd.drawSprite(_x,_y,12,10,(int *)kick);
ozy 1:3bdadf6f6dbd 228 }
ozy 1:3bdadf6f6dbd 229
ozy 1:3bdadf6f6dbd 230 // ************************************************************************
ozy 1:3bdadf6f6dbd 231
ozy 1:3bdadf6f6dbd 232
ozy 5:889ad974b64d 233 void Enemy::kick_left(N5110 &lcd) {
ozy 1:3bdadf6f6dbd 234 const int kick[12][10] = {
ozy 1:3bdadf6f6dbd 235 { 0,0,0,0,0,0,0,1,1,0 },
ozy 1:3bdadf6f6dbd 236 { 0,0,0,0,1,1,0,1,1,0 },
ozy 1:3bdadf6f6dbd 237 { 1,0,0,1,1,1,1,0,0,0 },
ozy 1:3bdadf6f6dbd 238 { 1,1,0,0,0,1,1,1,0,0 },
ozy 1:3bdadf6f6dbd 239 { 0,0,1,1,1,1,1,1,1,0 },
ozy 1:3bdadf6f6dbd 240 { 0,0,0,1,1,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 241 { 0,0,0,0,1,1,0,1,1,1 },
ozy 1:3bdadf6f6dbd 242 { 0,0,0,0,0,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 243 { 0,0,0,0,1,1,0,0,1,0 },
ozy 1:3bdadf6f6dbd 244 { 0,0,0,0,1,0,0,0,0,0 },
ozy 1:3bdadf6f6dbd 245 { 0,0,0,0,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 246 { 0,0,0,0,1,1,0,0,0,0 },
ozy 1:3bdadf6f6dbd 247 };
ozy 1:3bdadf6f6dbd 248 lcd.drawSprite(_x,_y,12,10,(int *)kick);
ozy 1:3bdadf6f6dbd 249 }
ozy 1:3bdadf6f6dbd 250
ozy 1:3bdadf6f6dbd 251 // ************************************************************************
ozy 12:b4477a312158 252
ozy 12:b4477a312158 253 void Enemy::twoway_punch(N5110 &lcd){
ozy 12:b4477a312158 254 const int punchpunch[12][10] = {
ozy 12:b4477a312158 255 { 0,0,0,0,0,0,0,0,0,0 },
ozy 14:7f23841685ad 256 { 1,0,0,0,1,1,0,0,0,1 },
ozy 14:7f23841685ad 257 { 0,1,0,0,1,1,0,1,1,0 },
ozy 14:7f23841685ad 258 { 0,0,1,0,1,1,0,1,1,0 },
ozy 14:7f23841685ad 259 { 0,0,0,1,1,1,1,0,0,0 },
ozy 12:b4477a312158 260 { 0,0,0,0,1,1,0,0,0,0 },
ozy 12:b4477a312158 261 { 0,0,0,0,1,1,0,0,0,0 },
ozy 12:b4477a312158 262 { 0,0,0,1,1,1,1,0,0,0 },
ozy 12:b4477a312158 263 { 0,0,1,1,0,0,1,1,0,0 },
ozy 14:7f23841685ad 264 { 0,1,1,0,0,0,0,1,1,0 },
ozy 12:b4477a312158 265 { 0,1,0,0,0,0,0,0,1,0 },
ozy 12:b4477a312158 266 { 0,1,0,0,0,0,0,0,1,0 },
ozy 12:b4477a312158 267 };
ozy 12:b4477a312158 268
ozy 12:b4477a312158 269 lcd.drawSprite(_x,_y,12,10,(int *)punchpunch);
ozy 12:b4477a312158 270 }
ozy 12:b4477a312158 271
ozy 12:b4477a312158 272 void Enemy::randomize_moves(N5110 &lcd, int input) {
ozy 12:b4477a312158 273 int move_number = rand()%12;
ozy 12:b4477a312158 274 draw(lcd, input);
ozy 12:b4477a312158 275 // enemy state: looking to the right (input is 1)
ozy 12:b4477a312158 276 if(input == 1) {
ozy 12:b4477a312158 277 if (move_number == 0) {
ozy 12:b4477a312158 278 kick_right(lcd);
ozy 12:b4477a312158 279 }
ozy 12:b4477a312158 280 else if (move_number == 1) {
ozy 12:b4477a312158 281 sword_right(lcd);
ozy 12:b4477a312158 282 }
ozy 12:b4477a312158 283 else if (move_number == 2){
ozy 12:b4477a312158 284 twoway_punch(lcd);
ozy 12:b4477a312158 285 }
ozy 13:eaf070d5f599 286 else{draw(lcd, input);} // else have the enemy standing still but looking at fighter
ozy 12:b4477a312158 287 }
ozy 12:b4477a312158 288 else if(input == 0) { // enemy state: looking to the left
ozy 12:b4477a312158 289 if (move_number == 0) {
ozy 12:b4477a312158 290 kick_left(lcd);
ozy 12:b4477a312158 291 }
ozy 12:b4477a312158 292 else if (move_number == 1) {
ozy 12:b4477a312158 293 sword_left(lcd);
ozy 12:b4477a312158 294 }
ozy 12:b4477a312158 295 else if (move_number == 2){
ozy 12:b4477a312158 296 twoway_punch(lcd);
ozy 12:b4477a312158 297 }
ozy 12:b4477a312158 298 else{draw(lcd, input);}
ozy 12:b4477a312158 299 }
ozy 12:b4477a312158 300 }
ozy 12:b4477a312158 301
ozy 13:eaf070d5f599 302
ozy 13:eaf070d5f599 303
ozy 13:eaf070d5f599 304