pong

Dependencies:   mbed N5110

Committer:
2019US_JusufDelalic
Date:
Sun Jun 16 21:48:29 2019 +0000
Revision:
0:44bf5430d56b
pong

Who changed what in which revision?

UserRevisionLine numberNew contents of line
2019US_JusufDelalic 0:44bf5430d56b 1 #include "mbed.h"
2019US_JusufDelalic 0:44bf5430d56b 2 #include "N5110.h"
2019US_JusufDelalic 0:44bf5430d56b 3
2019US_JusufDelalic 0:44bf5430d56b 4 #define X_MAX 83
2019US_JusufDelalic 0:44bf5430d56b 5 #define Y_MAX 47
2019US_JusufDelalic 0:44bf5430d56b 6
2019US_JusufDelalic 0:44bf5430d56b 7 #define dp23 P0_0
2019US_JusufDelalic 0:44bf5430d56b 8
2019US_JusufDelalic 0:44bf5430d56b 9 DigitalIn taster(dp1);
2019US_JusufDelalic 0:44bf5430d56b 10 bool off = true;
2019US_JusufDelalic 0:44bf5430d56b 11
2019US_JusufDelalic 0:44bf5430d56b 12 N5110 display(dp4, dp24, dp23, dp25, dp2, dp6, dp18);
2019US_JusufDelalic 0:44bf5430d56b 13
2019US_JusufDelalic 0:44bf5430d56b 14
2019US_JusufDelalic 0:44bf5430d56b 15 class Lopta;
2019US_JusufDelalic 0:44bf5430d56b 16
2019US_JusufDelalic 0:44bf5430d56b 17 class Reket;
2019US_JusufDelalic 0:44bf5430d56b 18
2019US_JusufDelalic 0:44bf5430d56b 19 class Ekran;
2019US_JusufDelalic 0:44bf5430d56b 20
2019US_JusufDelalic 0:44bf5430d56b 21 enum FillType {
2019US_JusufDelalic 0:44bf5430d56b 22 FILL_TRANSPARENT, ///< Transparent with outline
2019US_JusufDelalic 0:44bf5430d56b 23 FILL_BLACK, ///< Filled black
2019US_JusufDelalic 0:44bf5430d56b 24 FILL_WHITE, ///< Filled white (no outline)
2019US_JusufDelalic 0:44bf5430d56b 25 };
2019US_JusufDelalic 0:44bf5430d56b 26
2019US_JusufDelalic 0:44bf5430d56b 27
2019US_JusufDelalic 0:44bf5430d56b 28 AnalogIn lijeviVRy(dp10); //joystick
2019US_JusufDelalic 0:44bf5430d56b 29 AnalogIn desniVRy(dp11);
2019US_JusufDelalic 0:44bf5430d56b 30 DigitalIn lijeviSW(dp9);
2019US_JusufDelalic 0:44bf5430d56b 31 DigitalIn desniSW(dp13);
2019US_JusufDelalic 0:44bf5430d56b 32
2019US_JusufDelalic 0:44bf5430d56b 33 enum Pozicija {
2019US_JusufDelalic 0:44bf5430d56b 34 Gore = 1, Centar = 0, Dolje = -1
2019US_JusufDelalic 0:44bf5430d56b 35 } pozicijaLijevi = Centar, pozicijaDesni = Centar; // provejriti je li dekalsrisano.,.........
2019US_JusufDelalic 0:44bf5430d56b 36
2019US_JusufDelalic 0:44bf5430d56b 37 float lijeviJoy = lijeviVRy; // vrijednost od 0 do 1
2019US_JusufDelalic 0:44bf5430d56b 38 float desniJoy = desniVRy; // vrijednost od 0 do 1
2019US_JusufDelalic 0:44bf5430d56b 39
2019US_JusufDelalic 0:44bf5430d56b 40 DigitalOut enableLed(dp14);
2019US_JusufDelalic 0:44bf5430d56b 41
2019US_JusufDelalic 0:44bf5430d56b 42 int tasterPressed(bool &off)
2019US_JusufDelalic 0:44bf5430d56b 43 {
2019US_JusufDelalic 0:44bf5430d56b 44 if (off && taster) {
2019US_JusufDelalic 0:44bf5430d56b 45 off = false;
2019US_JusufDelalic 0:44bf5430d56b 46 return 1;
2019US_JusufDelalic 0:44bf5430d56b 47 } else if (!taster)
2019US_JusufDelalic 0:44bf5430d56b 48 off = true;
2019US_JusufDelalic 0:44bf5430d56b 49
2019US_JusufDelalic 0:44bf5430d56b 50 return 0;
2019US_JusufDelalic 0:44bf5430d56b 51 }
2019US_JusufDelalic 0:44bf5430d56b 52
2019US_JusufDelalic 0:44bf5430d56b 53
2019US_JusufDelalic 0:44bf5430d56b 54 void azurirajPozicijuLijevi()
2019US_JusufDelalic 0:44bf5430d56b 55 {
2019US_JusufDelalic 0:44bf5430d56b 56 lijeviJoy = lijeviVRy;
2019US_JusufDelalic 0:44bf5430d56b 57 Pozicija novaPozicija;
2019US_JusufDelalic 0:44bf5430d56b 58
2019US_JusufDelalic 0:44bf5430d56b 59 if (lijeviJoy < 1.0 / 3.0 + 0.08) novaPozicija = Dolje;
2019US_JusufDelalic 0:44bf5430d56b 60 else if (lijeviJoy > 2.0 / 3.0 - 0.08) novaPozicija = Gore;
2019US_JusufDelalic 0:44bf5430d56b 61 else
2019US_JusufDelalic 0:44bf5430d56b 62 novaPozicija = Centar;
2019US_JusufDelalic 0:44bf5430d56b 63
2019US_JusufDelalic 0:44bf5430d56b 64 if (novaPozicija != pozicijaLijevi)
2019US_JusufDelalic 0:44bf5430d56b 65 pozicijaLijevi = novaPozicija;
2019US_JusufDelalic 0:44bf5430d56b 66
2019US_JusufDelalic 0:44bf5430d56b 67 }
2019US_JusufDelalic 0:44bf5430d56b 68
2019US_JusufDelalic 0:44bf5430d56b 69 void azurirajPozicijuDesni()
2019US_JusufDelalic 0:44bf5430d56b 70 {
2019US_JusufDelalic 0:44bf5430d56b 71 desniJoy = desniVRy;
2019US_JusufDelalic 0:44bf5430d56b 72 Pozicija novaPozicija;
2019US_JusufDelalic 0:44bf5430d56b 73
2019US_JusufDelalic 0:44bf5430d56b 74 if (desniJoy < 1.0 / 3.0 + 0.08) novaPozicija = Dolje;
2019US_JusufDelalic 0:44bf5430d56b 75 else if (desniJoy > 2.0 / 3.0 - 0.08) novaPozicija = Gore;
2019US_JusufDelalic 0:44bf5430d56b 76 else
2019US_JusufDelalic 0:44bf5430d56b 77 novaPozicija = Centar;
2019US_JusufDelalic 0:44bf5430d56b 78
2019US_JusufDelalic 0:44bf5430d56b 79 if (novaPozicija != pozicijaDesni)
2019US_JusufDelalic 0:44bf5430d56b 80 pozicijaDesni = novaPozicija;
2019US_JusufDelalic 0:44bf5430d56b 81 };
2019US_JusufDelalic 0:44bf5430d56b 82
2019US_JusufDelalic 0:44bf5430d56b 83
2019US_JusufDelalic 0:44bf5430d56b 84 class Lopta
2019US_JusufDelalic 0:44bf5430d56b 85 {
2019US_JusufDelalic 0:44bf5430d56b 86 int x, y; // koordinate centra
2019US_JusufDelalic 0:44bf5430d56b 87 int radius; // poluprecnik lopte
2019US_JusufDelalic 0:44bf5430d56b 88 int delta_x, delta_y; // pomjeraj - ovisi o modu igre ? // ili wait promijeniti?
2019US_JusufDelalic 0:44bf5430d56b 89
2019US_JusufDelalic 0:44bf5430d56b 90 public:
2019US_JusufDelalic 0:44bf5430d56b 91
2019US_JusufDelalic 0:44bf5430d56b 92 Lopta(int x, int y, int radius, int delta_x, int delta_y) : x(x), y(y), radius(radius), delta_x(delta_x),
2019US_JusufDelalic 0:44bf5430d56b 93 delta_y(delta_y) {}
2019US_JusufDelalic 0:44bf5430d56b 94
2019US_JusufDelalic 0:44bf5430d56b 95 int getX() const
2019US_JusufDelalic 0:44bf5430d56b 96 {
2019US_JusufDelalic 0:44bf5430d56b 97 return x;
2019US_JusufDelalic 0:44bf5430d56b 98 }
2019US_JusufDelalic 0:44bf5430d56b 99
2019US_JusufDelalic 0:44bf5430d56b 100 void setX(int x)
2019US_JusufDelalic 0:44bf5430d56b 101 {
2019US_JusufDelalic 0:44bf5430d56b 102 Lopta::x = x;
2019US_JusufDelalic 0:44bf5430d56b 103 }
2019US_JusufDelalic 0:44bf5430d56b 104
2019US_JusufDelalic 0:44bf5430d56b 105 int getY() const
2019US_JusufDelalic 0:44bf5430d56b 106 {
2019US_JusufDelalic 0:44bf5430d56b 107 return y;
2019US_JusufDelalic 0:44bf5430d56b 108 }
2019US_JusufDelalic 0:44bf5430d56b 109
2019US_JusufDelalic 0:44bf5430d56b 110 void setY(int y)
2019US_JusufDelalic 0:44bf5430d56b 111 {
2019US_JusufDelalic 0:44bf5430d56b 112 Lopta::y = y;
2019US_JusufDelalic 0:44bf5430d56b 113 }
2019US_JusufDelalic 0:44bf5430d56b 114
2019US_JusufDelalic 0:44bf5430d56b 115 int getRadius() const
2019US_JusufDelalic 0:44bf5430d56b 116 {
2019US_JusufDelalic 0:44bf5430d56b 117 return radius;
2019US_JusufDelalic 0:44bf5430d56b 118 }
2019US_JusufDelalic 0:44bf5430d56b 119
2019US_JusufDelalic 0:44bf5430d56b 120
2019US_JusufDelalic 0:44bf5430d56b 121 int getDelta_x() const
2019US_JusufDelalic 0:44bf5430d56b 122 {
2019US_JusufDelalic 0:44bf5430d56b 123 return delta_x;
2019US_JusufDelalic 0:44bf5430d56b 124 }
2019US_JusufDelalic 0:44bf5430d56b 125
2019US_JusufDelalic 0:44bf5430d56b 126 void setDelta_x(int delta_x)
2019US_JusufDelalic 0:44bf5430d56b 127 {
2019US_JusufDelalic 0:44bf5430d56b 128 Lopta::delta_x = delta_x;
2019US_JusufDelalic 0:44bf5430d56b 129 }
2019US_JusufDelalic 0:44bf5430d56b 130
2019US_JusufDelalic 0:44bf5430d56b 131 int getDelta_y() const
2019US_JusufDelalic 0:44bf5430d56b 132 {
2019US_JusufDelalic 0:44bf5430d56b 133 return delta_y;
2019US_JusufDelalic 0:44bf5430d56b 134 }
2019US_JusufDelalic 0:44bf5430d56b 135
2019US_JusufDelalic 0:44bf5430d56b 136 void setDelta_y(int delta_y)
2019US_JusufDelalic 0:44bf5430d56b 137 {
2019US_JusufDelalic 0:44bf5430d56b 138 Lopta::delta_y = delta_y;
2019US_JusufDelalic 0:44bf5430d56b 139 }
2019US_JusufDelalic 0:44bf5430d56b 140
2019US_JusufDelalic 0:44bf5430d56b 141 void pomjeri(N5110 &display)
2019US_JusufDelalic 0:44bf5430d56b 142 {
2019US_JusufDelalic 0:44bf5430d56b 143 display.drawCircle(x, y, radius, FILL_BLACK); // brisemo li staru vrijendost
2019US_JusufDelalic 0:44bf5430d56b 144 x += delta_x; // crta staru vrijednost i azurira koordinate
2019US_JusufDelalic 0:44bf5430d56b 145 y += delta_y;
2019US_JusufDelalic 0:44bf5430d56b 146 }
2019US_JusufDelalic 0:44bf5430d56b 147
2019US_JusufDelalic 0:44bf5430d56b 148 void nacrtaj(N5110 &display) // crtamo na zeljenoj koordinati koju navodimu paremtrima
2019US_JusufDelalic 0:44bf5430d56b 149 {
2019US_JusufDelalic 0:44bf5430d56b 150 display.drawCircle(x, y, radius, FILL_BLACK);
2019US_JusufDelalic 0:44bf5430d56b 151 }
2019US_JusufDelalic 0:44bf5430d56b 152
2019US_JusufDelalic 0:44bf5430d56b 153 void obrniY()
2019US_JusufDelalic 0:44bf5430d56b 154 {
2019US_JusufDelalic 0:44bf5430d56b 155 delta_y *= -1;
2019US_JusufDelalic 0:44bf5430d56b 156 }
2019US_JusufDelalic 0:44bf5430d56b 157
2019US_JusufDelalic 0:44bf5430d56b 158
2019US_JusufDelalic 0:44bf5430d56b 159 bool isUdarilaDesniReket(Reket &desniReket);
2019US_JusufDelalic 0:44bf5430d56b 160
2019US_JusufDelalic 0:44bf5430d56b 161 bool isUdarilaLijeviReket(Reket &lijeviReket);
2019US_JusufDelalic 0:44bf5430d56b 162
2019US_JusufDelalic 0:44bf5430d56b 163 bool udarilaGornjiOkvir()
2019US_JusufDelalic 0:44bf5430d56b 164 {
2019US_JusufDelalic 0:44bf5430d56b 165
2019US_JusufDelalic 0:44bf5430d56b 166 return y - radius <= 0;
2019US_JusufDelalic 0:44bf5430d56b 167
2019US_JusufDelalic 0:44bf5430d56b 168 }
2019US_JusufDelalic 0:44bf5430d56b 169
2019US_JusufDelalic 0:44bf5430d56b 170 bool udarilaDonjiOkvir()
2019US_JusufDelalic 0:44bf5430d56b 171 {
2019US_JusufDelalic 0:44bf5430d56b 172
2019US_JusufDelalic 0:44bf5430d56b 173 return y + radius >= Y_MAX;
2019US_JusufDelalic 0:44bf5430d56b 174
2019US_JusufDelalic 0:44bf5430d56b 175 }
2019US_JusufDelalic 0:44bf5430d56b 176
2019US_JusufDelalic 0:44bf5430d56b 177 // u ovisnosti od ugla odbijanja lopte (ako je udarila reket) ili ako je udarila u okvir, azuriraju se vrijednosti pomaka
2019US_JusufDelalic 0:44bf5430d56b 178 void promijeniKretanje(Reket &lijeviReket, Reket &desniReket);
2019US_JusufDelalic 0:44bf5430d56b 179
2019US_JusufDelalic 0:44bf5430d56b 180 // ugao pod kojim se vraca prilikom odbijanja od reket, poziva se samo ako znamo da je lopta udarila u reket
2019US_JusufDelalic 0:44bf5430d56b 181 int dajUgao(int y_R, int h)
2019US_JusufDelalic 0:44bf5430d56b 182 {
2019US_JusufDelalic 0:44bf5430d56b 183
2019US_JusufDelalic 0:44bf5430d56b 184 if (y <= y_R - h + 4. / 10 * h) return 60;
2019US_JusufDelalic 0:44bf5430d56b 185 else if (y <= y_R - h + 8. / 10 * h) return 45;
2019US_JusufDelalic 0:44bf5430d56b 186 else if (y <= y_R - h + 12. / 10 * h) return 0;
2019US_JusufDelalic 0:44bf5430d56b 187 else if (y <= y_R - h + 16. / 10 * h) return -45;
2019US_JusufDelalic 0:44bf5430d56b 188 return -60;
2019US_JusufDelalic 0:44bf5430d56b 189
2019US_JusufDelalic 0:44bf5430d56b 190 }
2019US_JusufDelalic 0:44bf5430d56b 191
2019US_JusufDelalic 0:44bf5430d56b 192
2019US_JusufDelalic 0:44bf5430d56b 193 void neIzlaziVanOkvira()
2019US_JusufDelalic 0:44bf5430d56b 194 {
2019US_JusufDelalic 0:44bf5430d56b 195
2019US_JusufDelalic 0:44bf5430d56b 196 if (x + radius >= X_MAX)
2019US_JusufDelalic 0:44bf5430d56b 197 x = X_MAX - radius;
2019US_JusufDelalic 0:44bf5430d56b 198
2019US_JusufDelalic 0:44bf5430d56b 199 if (x - radius <= 0)
2019US_JusufDelalic 0:44bf5430d56b 200 x = radius;
2019US_JusufDelalic 0:44bf5430d56b 201
2019US_JusufDelalic 0:44bf5430d56b 202 if (y + radius >= Y_MAX)
2019US_JusufDelalic 0:44bf5430d56b 203 y = Y_MAX - radius;
2019US_JusufDelalic 0:44bf5430d56b 204
2019US_JusufDelalic 0:44bf5430d56b 205 if (y - radius <= 0)
2019US_JusufDelalic 0:44bf5430d56b 206 y = radius;
2019US_JusufDelalic 0:44bf5430d56b 207
2019US_JusufDelalic 0:44bf5430d56b 208
2019US_JusufDelalic 0:44bf5430d56b 209 }
2019US_JusufDelalic 0:44bf5430d56b 210
2019US_JusufDelalic 0:44bf5430d56b 211 };
2019US_JusufDelalic 0:44bf5430d56b 212
2019US_JusufDelalic 0:44bf5430d56b 213
2019US_JusufDelalic 0:44bf5430d56b 214 class Reket
2019US_JusufDelalic 0:44bf5430d56b 215 {
2019US_JusufDelalic 0:44bf5430d56b 216 int x, y; // koordinate centra
2019US_JusufDelalic 0:44bf5430d56b 217 int h, d; // visina reketa od centra-> pozitivna vrijednost, d -> debljina reketa (2 piksela zasad)
2019US_JusufDelalic 0:44bf5430d56b 218 int bodovi; // ostvareni bodovi igraca
2019US_JusufDelalic 0:44bf5430d56b 219
2019US_JusufDelalic 0:44bf5430d56b 220 public:
2019US_JusufDelalic 0:44bf5430d56b 221
2019US_JusufDelalic 0:44bf5430d56b 222 Reket(int x, int y, int h, int d) : x(x), y(y), h(h), d(d), bodovi(0) {}
2019US_JusufDelalic 0:44bf5430d56b 223
2019US_JusufDelalic 0:44bf5430d56b 224 void setX(int x)
2019US_JusufDelalic 0:44bf5430d56b 225 {
2019US_JusufDelalic 0:44bf5430d56b 226 Reket::x = x;
2019US_JusufDelalic 0:44bf5430d56b 227 }
2019US_JusufDelalic 0:44bf5430d56b 228
2019US_JusufDelalic 0:44bf5430d56b 229 int getY() const
2019US_JusufDelalic 0:44bf5430d56b 230 {
2019US_JusufDelalic 0:44bf5430d56b 231 return y;
2019US_JusufDelalic 0:44bf5430d56b 232 }
2019US_JusufDelalic 0:44bf5430d56b 233
2019US_JusufDelalic 0:44bf5430d56b 234 void setY(int y)
2019US_JusufDelalic 0:44bf5430d56b 235 {
2019US_JusufDelalic 0:44bf5430d56b 236 Reket::y = y;
2019US_JusufDelalic 0:44bf5430d56b 237 }
2019US_JusufDelalic 0:44bf5430d56b 238
2019US_JusufDelalic 0:44bf5430d56b 239 int getH() const
2019US_JusufDelalic 0:44bf5430d56b 240 {
2019US_JusufDelalic 0:44bf5430d56b 241 return h;
2019US_JusufDelalic 0:44bf5430d56b 242 }
2019US_JusufDelalic 0:44bf5430d56b 243
2019US_JusufDelalic 0:44bf5430d56b 244 int getBodovi() const
2019US_JusufDelalic 0:44bf5430d56b 245 {
2019US_JusufDelalic 0:44bf5430d56b 246 return bodovi;
2019US_JusufDelalic 0:44bf5430d56b 247 }
2019US_JusufDelalic 0:44bf5430d56b 248
2019US_JusufDelalic 0:44bf5430d56b 249 int getD() const
2019US_JusufDelalic 0:44bf5430d56b 250 {
2019US_JusufDelalic 0:44bf5430d56b 251 return d;
2019US_JusufDelalic 0:44bf5430d56b 252 }
2019US_JusufDelalic 0:44bf5430d56b 253
2019US_JusufDelalic 0:44bf5430d56b 254 void pomjeri(N5110 &display, int delta)
2019US_JusufDelalic 0:44bf5430d56b 255 {
2019US_JusufDelalic 0:44bf5430d56b 256 // delta predstavlja inkrement prilikom razicitih modova
2019US_JusufDelalic 0:44bf5430d56b 257 display.drawRect(x - d / 2, y - h, d, 2 * h, FILL_BLACK);
2019US_JusufDelalic 0:44bf5430d56b 258 y += delta;
2019US_JusufDelalic 0:44bf5430d56b 259 }
2019US_JusufDelalic 0:44bf5430d56b 260
2019US_JusufDelalic 0:44bf5430d56b 261 void nacrtaj(N5110 &display)
2019US_JusufDelalic 0:44bf5430d56b 262 {
2019US_JusufDelalic 0:44bf5430d56b 263 display.drawRect(x - d / 2, y - h, d, 2 * h, FILL_BLACK);
2019US_JusufDelalic 0:44bf5430d56b 264 }
2019US_JusufDelalic 0:44bf5430d56b 265
2019US_JusufDelalic 0:44bf5430d56b 266 // da li je lijevi reket osvojio poen
2019US_JusufDelalic 0:44bf5430d56b 267 bool osvojioPoenLijeviReket(Lopta &lopta, Reket &desniReket);
2019US_JusufDelalic 0:44bf5430d56b 268
2019US_JusufDelalic 0:44bf5430d56b 269 bool osvojioPoenDesniReket(Lopta &lopta, Reket &lijeviReket);
2019US_JusufDelalic 0:44bf5430d56b 270
2019US_JusufDelalic 0:44bf5430d56b 271 void dodajPoen()
2019US_JusufDelalic 0:44bf5430d56b 272 {
2019US_JusufDelalic 0:44bf5430d56b 273
2019US_JusufDelalic 0:44bf5430d56b 274 ++bodovi;
2019US_JusufDelalic 0:44bf5430d56b 275
2019US_JusufDelalic 0:44bf5430d56b 276 }
2019US_JusufDelalic 0:44bf5430d56b 277
2019US_JusufDelalic 0:44bf5430d56b 278 void neIzlaziVanOkvira()
2019US_JusufDelalic 0:44bf5430d56b 279 {
2019US_JusufDelalic 0:44bf5430d56b 280
2019US_JusufDelalic 0:44bf5430d56b 281 if (y + h >= Y_MAX)
2019US_JusufDelalic 0:44bf5430d56b 282 y = Y_MAX - h;
2019US_JusufDelalic 0:44bf5430d56b 283
2019US_JusufDelalic 0:44bf5430d56b 284 if (y - h <= 0)
2019US_JusufDelalic 0:44bf5430d56b 285 y = h;
2019US_JusufDelalic 0:44bf5430d56b 286
2019US_JusufDelalic 0:44bf5430d56b 287
2019US_JusufDelalic 0:44bf5430d56b 288 }
2019US_JusufDelalic 0:44bf5430d56b 289
2019US_JusufDelalic 0:44bf5430d56b 290 };
2019US_JusufDelalic 0:44bf5430d56b 291
2019US_JusufDelalic 0:44bf5430d56b 292
2019US_JusufDelalic 0:44bf5430d56b 293 bool Lopta::isUdarilaDesniReket(Reket &desniReket)
2019US_JusufDelalic 0:44bf5430d56b 294 {
2019US_JusufDelalic 0:44bf5430d56b 295
2019US_JusufDelalic 0:44bf5430d56b 296 return ((x + radius >= X_MAX - desniReket.getD()) && (delta_x > 0) &&
2019US_JusufDelalic 0:44bf5430d56b 297 (y + radius >= desniReket.getY() - desniReket.getH()) &&
2019US_JusufDelalic 0:44bf5430d56b 298 (y - radius <= desniReket.getY() + desniReket.getH()));
2019US_JusufDelalic 0:44bf5430d56b 299
2019US_JusufDelalic 0:44bf5430d56b 300 }
2019US_JusufDelalic 0:44bf5430d56b 301
2019US_JusufDelalic 0:44bf5430d56b 302 bool Lopta::isUdarilaLijeviReket(Reket &lijeviReket)
2019US_JusufDelalic 0:44bf5430d56b 303 {
2019US_JusufDelalic 0:44bf5430d56b 304
2019US_JusufDelalic 0:44bf5430d56b 305 return ((x - radius <= lijeviReket.getD()) && (delta_x < 0) &&
2019US_JusufDelalic 0:44bf5430d56b 306 (y + radius >= lijeviReket.getY() - lijeviReket.getH()) &&
2019US_JusufDelalic 0:44bf5430d56b 307 (y - radius <= lijeviReket.getY() + lijeviReket.getH()));
2019US_JusufDelalic 0:44bf5430d56b 308
2019US_JusufDelalic 0:44bf5430d56b 309 }
2019US_JusufDelalic 0:44bf5430d56b 310
2019US_JusufDelalic 0:44bf5430d56b 311
2019US_JusufDelalic 0:44bf5430d56b 312 // OVA METODA SE POZIVA ZA KRETANJE LOPTE
2019US_JusufDelalic 0:44bf5430d56b 313
2019US_JusufDelalic 0:44bf5430d56b 314 void Lopta::promijeniKretanje(Reket &lijeviReket, Reket &desniReket)
2019US_JusufDelalic 0:44bf5430d56b 315 {
2019US_JusufDelalic 0:44bf5430d56b 316
2019US_JusufDelalic 0:44bf5430d56b 317 int ugao(0);
2019US_JusufDelalic 0:44bf5430d56b 318
2019US_JusufDelalic 0:44bf5430d56b 319 if (isUdarilaLijeviReket(lijeviReket)) {
2019US_JusufDelalic 0:44bf5430d56b 320
2019US_JusufDelalic 0:44bf5430d56b 321 ugao = dajUgao(lijeviReket.getY(), lijeviReket.getH());
2019US_JusufDelalic 0:44bf5430d56b 322
2019US_JusufDelalic 0:44bf5430d56b 323 if (ugao == 0) {
2019US_JusufDelalic 0:44bf5430d56b 324
2019US_JusufDelalic 0:44bf5430d56b 325 delta_x = 1;
2019US_JusufDelalic 0:44bf5430d56b 326 delta_y = 0;
2019US_JusufDelalic 0:44bf5430d56b 327
2019US_JusufDelalic 0:44bf5430d56b 328 } else if (ugao == 45) {
2019US_JusufDelalic 0:44bf5430d56b 329
2019US_JusufDelalic 0:44bf5430d56b 330 delta_x = 1;
2019US_JusufDelalic 0:44bf5430d56b 331 delta_y = -1;
2019US_JusufDelalic 0:44bf5430d56b 332
2019US_JusufDelalic 0:44bf5430d56b 333 } else if (ugao == 60) {
2019US_JusufDelalic 0:44bf5430d56b 334
2019US_JusufDelalic 0:44bf5430d56b 335 delta_x = 1;
2019US_JusufDelalic 0:44bf5430d56b 336 delta_y = -2;
2019US_JusufDelalic 0:44bf5430d56b 337
2019US_JusufDelalic 0:44bf5430d56b 338 } else if (ugao == -45) {
2019US_JusufDelalic 0:44bf5430d56b 339
2019US_JusufDelalic 0:44bf5430d56b 340 delta_x = 1;
2019US_JusufDelalic 0:44bf5430d56b 341 delta_y = 1;
2019US_JusufDelalic 0:44bf5430d56b 342
2019US_JusufDelalic 0:44bf5430d56b 343 } else if (ugao == -60) {
2019US_JusufDelalic 0:44bf5430d56b 344
2019US_JusufDelalic 0:44bf5430d56b 345 delta_x = 1;
2019US_JusufDelalic 0:44bf5430d56b 346 delta_y = 2;
2019US_JusufDelalic 0:44bf5430d56b 347
2019US_JusufDelalic 0:44bf5430d56b 348 }
2019US_JusufDelalic 0:44bf5430d56b 349
2019US_JusufDelalic 0:44bf5430d56b 350 } else if (isUdarilaDesniReket(desniReket)) {
2019US_JusufDelalic 0:44bf5430d56b 351
2019US_JusufDelalic 0:44bf5430d56b 352 ugao = 180 - dajUgao(desniReket.getY(), desniReket.getH());
2019US_JusufDelalic 0:44bf5430d56b 353
2019US_JusufDelalic 0:44bf5430d56b 354 if (ugao == 180) {
2019US_JusufDelalic 0:44bf5430d56b 355
2019US_JusufDelalic 0:44bf5430d56b 356 delta_x = -1;
2019US_JusufDelalic 0:44bf5430d56b 357 delta_y = 0;
2019US_JusufDelalic 0:44bf5430d56b 358
2019US_JusufDelalic 0:44bf5430d56b 359 } else if (ugao == 135) {
2019US_JusufDelalic 0:44bf5430d56b 360
2019US_JusufDelalic 0:44bf5430d56b 361 delta_x = -1;
2019US_JusufDelalic 0:44bf5430d56b 362 delta_y = -1;
2019US_JusufDelalic 0:44bf5430d56b 363
2019US_JusufDelalic 0:44bf5430d56b 364 } else if (ugao == 120) {
2019US_JusufDelalic 0:44bf5430d56b 365
2019US_JusufDelalic 0:44bf5430d56b 366 delta_x = -1;
2019US_JusufDelalic 0:44bf5430d56b 367 delta_y = -2;
2019US_JusufDelalic 0:44bf5430d56b 368
2019US_JusufDelalic 0:44bf5430d56b 369 } else if (ugao == 225) {
2019US_JusufDelalic 0:44bf5430d56b 370
2019US_JusufDelalic 0:44bf5430d56b 371 delta_x = -1;
2019US_JusufDelalic 0:44bf5430d56b 372 delta_y = 1;
2019US_JusufDelalic 0:44bf5430d56b 373
2019US_JusufDelalic 0:44bf5430d56b 374 } else if (ugao == 240) {
2019US_JusufDelalic 0:44bf5430d56b 375
2019US_JusufDelalic 0:44bf5430d56b 376 delta_x = -1;
2019US_JusufDelalic 0:44bf5430d56b 377 delta_y = 2;
2019US_JusufDelalic 0:44bf5430d56b 378
2019US_JusufDelalic 0:44bf5430d56b 379 }
2019US_JusufDelalic 0:44bf5430d56b 380
2019US_JusufDelalic 0:44bf5430d56b 381 } else if (udarilaGornjiOkvir() || udarilaDonjiOkvir())
2019US_JusufDelalic 0:44bf5430d56b 382 obrniY();
2019US_JusufDelalic 0:44bf5430d56b 383
2019US_JusufDelalic 0:44bf5430d56b 384
2019US_JusufDelalic 0:44bf5430d56b 385 }
2019US_JusufDelalic 0:44bf5430d56b 386
2019US_JusufDelalic 0:44bf5430d56b 387
2019US_JusufDelalic 0:44bf5430d56b 388 bool Reket::osvojioPoenLijeviReket(Lopta &lopta, Reket &desniReket)
2019US_JusufDelalic 0:44bf5430d56b 389 {
2019US_JusufDelalic 0:44bf5430d56b 390
2019US_JusufDelalic 0:44bf5430d56b 391 return (lopta.getX() + lopta.getRadius() >= X_MAX && lopta.getY() - lopta.getRadius() >= 0 &&
2019US_JusufDelalic 0:44bf5430d56b 392 lopta.getY() + lopta.getRadius() <= Y_MAX) && !lopta.isUdarilaDesniReket(desniReket);
2019US_JusufDelalic 0:44bf5430d56b 393
2019US_JusufDelalic 0:44bf5430d56b 394 }
2019US_JusufDelalic 0:44bf5430d56b 395
2019US_JusufDelalic 0:44bf5430d56b 396 bool Reket::osvojioPoenDesniReket(Lopta &lopta, Reket &lijeviReket)
2019US_JusufDelalic 0:44bf5430d56b 397 {
2019US_JusufDelalic 0:44bf5430d56b 398
2019US_JusufDelalic 0:44bf5430d56b 399 return (lopta.getX() - lopta.getRadius() <= 0 && lopta.getY() - lopta.getRadius() >= 0 &&
2019US_JusufDelalic 0:44bf5430d56b 400 lopta.getY() + lopta.getRadius() <= Y_MAX) && !lopta.isUdarilaLijeviReket(lijeviReket);
2019US_JusufDelalic 0:44bf5430d56b 401
2019US_JusufDelalic 0:44bf5430d56b 402 }
2019US_JusufDelalic 0:44bf5430d56b 403
2019US_JusufDelalic 0:44bf5430d56b 404
2019US_JusufDelalic 0:44bf5430d56b 405 class Ekran
2019US_JusufDelalic 0:44bf5430d56b 406 {
2019US_JusufDelalic 0:44bf5430d56b 407 N5110 display;
2019US_JusufDelalic 0:44bf5430d56b 408
2019US_JusufDelalic 0:44bf5430d56b 409 public:
2019US_JusufDelalic 0:44bf5430d56b 410
2019US_JusufDelalic 0:44bf5430d56b 411
2019US_JusufDelalic 0:44bf5430d56b 412 Ekran(PinName vcc, PinName sce, PinName rst, PinName dc, PinName mosi, PinName sclk, PinName led) :
2019US_JusufDelalic 0:44bf5430d56b 413 display(vcc,
2019US_JusufDelalic 0:44bf5430d56b 414 sce,
2019US_JusufDelalic 0:44bf5430d56b 415 rst,
2019US_JusufDelalic 0:44bf5430d56b 416 dc,
2019US_JusufDelalic 0:44bf5430d56b 417 mosi,
2019US_JusufDelalic 0:44bf5430d56b 418 sclk,
2019US_JusufDelalic 0:44bf5430d56b 419 led) {}
2019US_JusufDelalic 0:44bf5430d56b 420
2019US_JusufDelalic 0:44bf5430d56b 421 void init()
2019US_JusufDelalic 0:44bf5430d56b 422 {
2019US_JusufDelalic 0:44bf5430d56b 423
2019US_JusufDelalic 0:44bf5430d56b 424 display.init();
2019US_JusufDelalic 0:44bf5430d56b 425
2019US_JusufDelalic 0:44bf5430d56b 426 }
2019US_JusufDelalic 0:44bf5430d56b 427
2019US_JusufDelalic 0:44bf5430d56b 428 void refresh()
2019US_JusufDelalic 0:44bf5430d56b 429 {
2019US_JusufDelalic 0:44bf5430d56b 430
2019US_JusufDelalic 0:44bf5430d56b 431
2019US_JusufDelalic 0:44bf5430d56b 432 display.refresh();
2019US_JusufDelalic 0:44bf5430d56b 433
2019US_JusufDelalic 0:44bf5430d56b 434 }
2019US_JusufDelalic 0:44bf5430d56b 435
2019US_JusufDelalic 0:44bf5430d56b 436 void clear()
2019US_JusufDelalic 0:44bf5430d56b 437 {
2019US_JusufDelalic 0:44bf5430d56b 438
2019US_JusufDelalic 0:44bf5430d56b 439 display.clear();
2019US_JusufDelalic 0:44bf5430d56b 440
2019US_JusufDelalic 0:44bf5430d56b 441 }
2019US_JusufDelalic 0:44bf5430d56b 442
2019US_JusufDelalic 0:44bf5430d56b 443 void turnOff()
2019US_JusufDelalic 0:44bf5430d56b 444 {
2019US_JusufDelalic 0:44bf5430d56b 445 display.turnOff();
2019US_JusufDelalic 0:44bf5430d56b 446 }
2019US_JusufDelalic 0:44bf5430d56b 447
2019US_JusufDelalic 0:44bf5430d56b 448 N5110 &getDisplay()
2019US_JusufDelalic 0:44bf5430d56b 449 {
2019US_JusufDelalic 0:44bf5430d56b 450
2019US_JusufDelalic 0:44bf5430d56b 451 return this->display;
2019US_JusufDelalic 0:44bf5430d56b 452
2019US_JusufDelalic 0:44bf5430d56b 453 }
2019US_JusufDelalic 0:44bf5430d56b 454
2019US_JusufDelalic 0:44bf5430d56b 455 void nacrtajMrezu()
2019US_JusufDelalic 0:44bf5430d56b 456 {
2019US_JusufDelalic 0:44bf5430d56b 457 display.drawLine(X_MAX / 2, 0, X_MAX / 2, Y_MAX, 2);
2019US_JusufDelalic 0:44bf5430d56b 458 }
2019US_JusufDelalic 0:44bf5430d56b 459
2019US_JusufDelalic 0:44bf5430d56b 460
2019US_JusufDelalic 0:44bf5430d56b 461 void InitialScreen() // ispisuje imena
2019US_JusufDelalic 0:44bf5430d56b 462 {
2019US_JusufDelalic 0:44bf5430d56b 463
2019US_JusufDelalic 0:44bf5430d56b 464 clear();
2019US_JusufDelalic 0:44bf5430d56b 465 char ime1[] = "Jusuf Delalic";
2019US_JusufDelalic 0:44bf5430d56b 466 char ime2[] = "Medin Paldum";
2019US_JusufDelalic 0:44bf5430d56b 467
2019US_JusufDelalic 0:44bf5430d56b 468 display.printString(ime1, 3, 2);
2019US_JusufDelalic 0:44bf5430d56b 469 display.printString(ime2, 6, 3);
2019US_JusufDelalic 0:44bf5430d56b 470 refresh();
2019US_JusufDelalic 0:44bf5430d56b 471 }
2019US_JusufDelalic 0:44bf5430d56b 472
2019US_JusufDelalic 0:44bf5430d56b 473
2019US_JusufDelalic 0:44bf5430d56b 474 // opcija ovisi od joysitcka
2019US_JusufDelalic 0:44bf5430d56b 475 void StartMenu(int opcija) // 1 = start, 0 = exit
2019US_JusufDelalic 0:44bf5430d56b 476 {
2019US_JusufDelalic 0:44bf5430d56b 477 display.clear();
2019US_JusufDelalic 0:44bf5430d56b 478 // opcija je broj koji govori na kojem nivou je joystick
2019US_JusufDelalic 0:44bf5430d56b 479
2019US_JusufDelalic 0:44bf5430d56b 480 char startMenu[] = "Start menu";
2019US_JusufDelalic 0:44bf5430d56b 481 char exitOption[] = "Exit";
2019US_JusufDelalic 0:44bf5430d56b 482 char start[] = "Start";
2019US_JusufDelalic 0:44bf5430d56b 483
2019US_JusufDelalic 0:44bf5430d56b 484 display.printString(startMenu, 12, 0);
2019US_JusufDelalic 0:44bf5430d56b 485
2019US_JusufDelalic 0:44bf5430d56b 486 display.printString(start, 42, 2);
2019US_JusufDelalic 0:44bf5430d56b 487
2019US_JusufDelalic 0:44bf5430d56b 488 display.printString(exitOption, 42, 3);
2019US_JusufDelalic 0:44bf5430d56b 489
2019US_JusufDelalic 0:44bf5430d56b 490
2019US_JusufDelalic 0:44bf5430d56b 491 if (opcija == 1) {
2019US_JusufDelalic 0:44bf5430d56b 492 display.drawLine(27, 16, 39, 16, 2); //linija na start
2019US_JusufDelalic 0:44bf5430d56b 493 } else {
2019US_JusufDelalic 0:44bf5430d56b 494 display.drawLine(27, 28, 39, 28, 2); // linija na exit
2019US_JusufDelalic 0:44bf5430d56b 495 }
2019US_JusufDelalic 0:44bf5430d56b 496
2019US_JusufDelalic 0:44bf5430d56b 497 display.refresh();
2019US_JusufDelalic 0:44bf5430d56b 498 }
2019US_JusufDelalic 0:44bf5430d56b 499
2019US_JusufDelalic 0:44bf5430d56b 500
2019US_JusufDelalic 0:44bf5430d56b 501 void SelectMode(int opcija) // 1 - single, 2 - multi
2019US_JusufDelalic 0:44bf5430d56b 502 {
2019US_JusufDelalic 0:44bf5430d56b 503
2019US_JusufDelalic 0:44bf5430d56b 504 display.clear();
2019US_JusufDelalic 0:44bf5430d56b 505
2019US_JusufDelalic 0:44bf5430d56b 506
2019US_JusufDelalic 0:44bf5430d56b 507 display.printString("Select mode", 12, 0);
2019US_JusufDelalic 0:44bf5430d56b 508 display.printString("Single", 42, 2);
2019US_JusufDelalic 0:44bf5430d56b 509 display.printString("Multi", 42, 3);
2019US_JusufDelalic 0:44bf5430d56b 510
2019US_JusufDelalic 0:44bf5430d56b 511 if (opcija == 1) {
2019US_JusufDelalic 0:44bf5430d56b 512 display.drawLine(27, 16, 39, 16, 2); // linija na single
2019US_JusufDelalic 0:44bf5430d56b 513
2019US_JusufDelalic 0:44bf5430d56b 514 } else { // izmjena
2019US_JusufDelalic 0:44bf5430d56b 515 display.drawLine(27, 28, 39, 28, 2); // linija na multi
2019US_JusufDelalic 0:44bf5430d56b 516
2019US_JusufDelalic 0:44bf5430d56b 517
2019US_JusufDelalic 0:44bf5430d56b 518 }
2019US_JusufDelalic 0:44bf5430d56b 519
2019US_JusufDelalic 0:44bf5430d56b 520 display.refresh();
2019US_JusufDelalic 0:44bf5430d56b 521
2019US_JusufDelalic 0:44bf5430d56b 522 };
2019US_JusufDelalic 0:44bf5430d56b 523
2019US_JusufDelalic 0:44bf5430d56b 524
2019US_JusufDelalic 0:44bf5430d56b 525 void SelectDifficulty(int opcija) // 1 - east, 2 - medium, 3 - hard
2019US_JusufDelalic 0:44bf5430d56b 526 {
2019US_JusufDelalic 0:44bf5430d56b 527
2019US_JusufDelalic 0:44bf5430d56b 528 display.clear();
2019US_JusufDelalic 0:44bf5430d56b 529 char select[] = "Select mode";
2019US_JusufDelalic 0:44bf5430d56b 530 char easy[] = "Easy";
2019US_JusufDelalic 0:44bf5430d56b 531 char medium[] = "Medium";
2019US_JusufDelalic 0:44bf5430d56b 532 char hard[] = "Hard";
2019US_JusufDelalic 0:44bf5430d56b 533
2019US_JusufDelalic 0:44bf5430d56b 534 display.printString(select, 12, 0);
2019US_JusufDelalic 0:44bf5430d56b 535
2019US_JusufDelalic 0:44bf5430d56b 536 display.printString(easy, 36, 2);
2019US_JusufDelalic 0:44bf5430d56b 537
2019US_JusufDelalic 0:44bf5430d56b 538 display.printString(medium, 36,3);
2019US_JusufDelalic 0:44bf5430d56b 539
2019US_JusufDelalic 0:44bf5430d56b 540 display.printString(hard, 36, 4);
2019US_JusufDelalic 0:44bf5430d56b 541
2019US_JusufDelalic 0:44bf5430d56b 542 switch (opcija) {
2019US_JusufDelalic 0:44bf5430d56b 543 case 1:
2019US_JusufDelalic 0:44bf5430d56b 544 display.drawLine(21, 21, 33, 21, 2); //easy
2019US_JusufDelalic 0:44bf5430d56b 545 break;
2019US_JusufDelalic 0:44bf5430d56b 546
2019US_JusufDelalic 0:44bf5430d56b 547 case 2:
2019US_JusufDelalic 0:44bf5430d56b 548 display.drawLine(21, 27, 33, 27, 2); //medium
2019US_JusufDelalic 0:44bf5430d56b 549 break;
2019US_JusufDelalic 0:44bf5430d56b 550
2019US_JusufDelalic 0:44bf5430d56b 551 default:
2019US_JusufDelalic 0:44bf5430d56b 552 display.drawLine(21, 33, 33, 33, 2); //hard
2019US_JusufDelalic 0:44bf5430d56b 553 break;
2019US_JusufDelalic 0:44bf5430d56b 554 }
2019US_JusufDelalic 0:44bf5430d56b 555
2019US_JusufDelalic 0:44bf5430d56b 556 display.refresh();
2019US_JusufDelalic 0:44bf5430d56b 557
2019US_JusufDelalic 0:44bf5430d56b 558 }
2019US_JusufDelalic 0:44bf5430d56b 559
2019US_JusufDelalic 0:44bf5430d56b 560
2019US_JusufDelalic 0:44bf5430d56b 561 void postaviCentrirano(Reket &lijeviReket, Reket &desniReket, Lopta &lopta)
2019US_JusufDelalic 0:44bf5430d56b 562 {
2019US_JusufDelalic 0:44bf5430d56b 563
2019US_JusufDelalic 0:44bf5430d56b 564 display.clear();
2019US_JusufDelalic 0:44bf5430d56b 565
2019US_JusufDelalic 0:44bf5430d56b 566 lijeviReket.setX(lijeviReket.getD() / 2);
2019US_JusufDelalic 0:44bf5430d56b 567 lijeviReket.setY(Y_MAX / 2);
2019US_JusufDelalic 0:44bf5430d56b 568
2019US_JusufDelalic 0:44bf5430d56b 569 desniReket.setX(X_MAX - desniReket.getD() / 2);
2019US_JusufDelalic 0:44bf5430d56b 570 desniReket.setY(Y_MAX / 2);
2019US_JusufDelalic 0:44bf5430d56b 571
2019US_JusufDelalic 0:44bf5430d56b 572 lopta.setX(X_MAX / 2);
2019US_JusufDelalic 0:44bf5430d56b 573 lopta.setY(Y_MAX / 2);
2019US_JusufDelalic 0:44bf5430d56b 574
2019US_JusufDelalic 0:44bf5430d56b 575 lijeviReket.nacrtaj(display);
2019US_JusufDelalic 0:44bf5430d56b 576
2019US_JusufDelalic 0:44bf5430d56b 577 desniReket.nacrtaj(display);
2019US_JusufDelalic 0:44bf5430d56b 578 lopta.nacrtaj(display);
2019US_JusufDelalic 0:44bf5430d56b 579
2019US_JusufDelalic 0:44bf5430d56b 580 display.refresh();
2019US_JusufDelalic 0:44bf5430d56b 581
2019US_JusufDelalic 0:44bf5430d56b 582
2019US_JusufDelalic 0:44bf5430d56b 583 }
2019US_JusufDelalic 0:44bf5430d56b 584
2019US_JusufDelalic 0:44bf5430d56b 585 void ispisiBodove(Reket &lijeviReket, Reket &desniReket)
2019US_JusufDelalic 0:44bf5430d56b 586 {
2019US_JusufDelalic 0:44bf5430d56b 587
2019US_JusufDelalic 0:44bf5430d56b 588 int xLijevo = 3 / 8 * X_MAX - 6;
2019US_JusufDelalic 0:44bf5430d56b 589 int xDesno = 5 / 8 * X_MAX;
2019US_JusufDelalic 0:44bf5430d56b 590
2019US_JusufDelalic 0:44bf5430d56b 591
2019US_JusufDelalic 0:44bf5430d56b 592 // ne clear jer imamo rekete i loptu
2019US_JusufDelalic 0:44bf5430d56b 593
2019US_JusufDelalic 0:44bf5430d56b 594 if (lijeviReket.getBodovi() >=
2019US_JusufDelalic 0:44bf5430d56b 595 10) { // ispisivanje rezultata
2019US_JusufDelalic 0:44bf5430d56b 596 // (pazimo kada je u pitanju dvocifren broj)
2019US_JusufDelalic 0:44bf5430d56b 597
2019US_JusufDelalic 0:44bf5430d56b 598 display.printChar(xLijevo + 6, 0, '1');
2019US_JusufDelalic 0:44bf5430d56b 599 display.printChar(xLijevo + 6, 0, '0' + lijeviReket.getBodovi() % 10);
2019US_JusufDelalic 0:44bf5430d56b 600
2019US_JusufDelalic 0:44bf5430d56b 601 } else {
2019US_JusufDelalic 0:44bf5430d56b 602 display.printChar(xLijevo + 6, 0, '0' + lijeviReket.getBodovi());
2019US_JusufDelalic 0:44bf5430d56b 603 display.refresh();
2019US_JusufDelalic 0:44bf5430d56b 604 }
2019US_JusufDelalic 0:44bf5430d56b 605
2019US_JusufDelalic 0:44bf5430d56b 606
2019US_JusufDelalic 0:44bf5430d56b 607 if (desniReket.getBodovi() >= 10) {
2019US_JusufDelalic 0:44bf5430d56b 608 display.printChar(xDesno, 0, '1' + lijeviReket.getBodovi() % 10);
2019US_JusufDelalic 0:44bf5430d56b 609 display.printChar(xDesno + 6, 0, '0' + lijeviReket.getBodovi() % 10);
2019US_JusufDelalic 0:44bf5430d56b 610 } else {
2019US_JusufDelalic 0:44bf5430d56b 611 display.printChar(xDesno, 0, '0' + desniReket.getBodovi());
2019US_JusufDelalic 0:44bf5430d56b 612 }
2019US_JusufDelalic 0:44bf5430d56b 613
2019US_JusufDelalic 0:44bf5430d56b 614 display.refresh();
2019US_JusufDelalic 0:44bf5430d56b 615 }
2019US_JusufDelalic 0:44bf5430d56b 616
2019US_JusufDelalic 0:44bf5430d56b 617
2019US_JusufDelalic 0:44bf5430d56b 618 void GameOver(int mode, int winner) // mode 1 -> igrac; mode 2 -> computer
2019US_JusufDelalic 0:44bf5430d56b 619 {
2019US_JusufDelalic 0:44bf5430d56b 620 display.clear();
2019US_JusufDelalic 0:44bf5430d56b 621 // winner = {1,2}
2019US_JusufDelalic 0:44bf5430d56b 622 display.printString("Game over", 15, 0);
2019US_JusufDelalic 0:44bf5430d56b 623
2019US_JusufDelalic 0:44bf5430d56b 624
2019US_JusufDelalic 0:44bf5430d56b 625 if (mode == 1) {
2019US_JusufDelalic 0:44bf5430d56b 626 if (winner == 1) {
2019US_JusufDelalic 0:44bf5430d56b 627 display.printString("Player won", 12, 2);
2019US_JusufDelalic 0:44bf5430d56b 628
2019US_JusufDelalic 0:44bf5430d56b 629 } else {
2019US_JusufDelalic 0:44bf5430d56b 630 display.printString("Computer won", 6, 2);
2019US_JusufDelalic 0:44bf5430d56b 631
2019US_JusufDelalic 0:44bf5430d56b 632 }
2019US_JusufDelalic 0:44bf5430d56b 633
2019US_JusufDelalic 0:44bf5430d56b 634 } else {
2019US_JusufDelalic 0:44bf5430d56b 635 if (winner == 1) {
2019US_JusufDelalic 0:44bf5430d56b 636 display.printString("Player 1 won", 6, 2);
2019US_JusufDelalic 0:44bf5430d56b 637
2019US_JusufDelalic 0:44bf5430d56b 638 } else {
2019US_JusufDelalic 0:44bf5430d56b 639 display.printString("Player 2 won", 6, 2);
2019US_JusufDelalic 0:44bf5430d56b 640
2019US_JusufDelalic 0:44bf5430d56b 641 }
2019US_JusufDelalic 0:44bf5430d56b 642
2019US_JusufDelalic 0:44bf5430d56b 643 }
2019US_JusufDelalic 0:44bf5430d56b 644
2019US_JusufDelalic 0:44bf5430d56b 645 display.refresh();
2019US_JusufDelalic 0:44bf5430d56b 646
2019US_JusufDelalic 0:44bf5430d56b 647 }
2019US_JusufDelalic 0:44bf5430d56b 648
2019US_JusufDelalic 0:44bf5430d56b 649 /* Prilikom ispisivanja teksta na ekran pretpostavili smo da kao koordinate pocetka saljemo donji lijevi pixel */
2019US_JusufDelalic 0:44bf5430d56b 650 };
2019US_JusufDelalic 0:44bf5430d56b 651
2019US_JusufDelalic 0:44bf5430d56b 652
2019US_JusufDelalic 0:44bf5430d56b 653
2019US_JusufDelalic 0:44bf5430d56b 654
2019US_JusufDelalic 0:44bf5430d56b 655
2019US_JusufDelalic 0:44bf5430d56b 656
2019US_JusufDelalic 0:44bf5430d56b 657
2019US_JusufDelalic 0:44bf5430d56b 658
2019US_JusufDelalic 0:44bf5430d56b 659
2019US_JusufDelalic 0:44bf5430d56b 660
2019US_JusufDelalic 0:44bf5430d56b 661
2019US_JusufDelalic 0:44bf5430d56b 662
2019US_JusufDelalic 0:44bf5430d56b 663
2019US_JusufDelalic 0:44bf5430d56b 664
2019US_JusufDelalic 0:44bf5430d56b 665
2019US_JusufDelalic 0:44bf5430d56b 666
2019US_JusufDelalic 0:44bf5430d56b 667 class Pong
2019US_JusufDelalic 0:44bf5430d56b 668 {
2019US_JusufDelalic 0:44bf5430d56b 669
2019US_JusufDelalic 0:44bf5430d56b 670 int tokIgre; // pocetak igre
2019US_JusufDelalic 0:44bf5430d56b 671 int mode; // signle player
2019US_JusufDelalic 0:44bf5430d56b 672 int tezina; // easy / medium / hard
2019US_JusufDelalic 0:44bf5430d56b 673 int zapocetiIgru; // start/exit
2019US_JusufDelalic 0:44bf5430d56b 674 int pobjednik;
2019US_JusufDelalic 0:44bf5430d56b 675
2019US_JusufDelalic 0:44bf5430d56b 676 Lopta lopta;
2019US_JusufDelalic 0:44bf5430d56b 677 Reket lijeviReket, desniReket; // lijevi - Pl1 / desni - Pl2
2019US_JusufDelalic 0:44bf5430d56b 678
2019US_JusufDelalic 0:44bf5430d56b 679 Ekran display;
2019US_JusufDelalic 0:44bf5430d56b 680
2019US_JusufDelalic 0:44bf5430d56b 681 public:
2019US_JusufDelalic 0:44bf5430d56b 682
2019US_JusufDelalic 0:44bf5430d56b 683 Pong(int &tokIgre, Lopta &lopta, Reket &lijeviReket, Reket &desniReket, Ekran &display) :
2019US_JusufDelalic 0:44bf5430d56b 684 tokIgre(tokIgre), lopta(lopta), lijeviReket(lijeviReket), desniReket(desniReket), display(display)
2019US_JusufDelalic 0:44bf5430d56b 685 {
2019US_JusufDelalic 0:44bf5430d56b 686 tokIgre = 0;
2019US_JusufDelalic 0:44bf5430d56b 687 mode = 1;
2019US_JusufDelalic 0:44bf5430d56b 688 tezina = 1;
2019US_JusufDelalic 0:44bf5430d56b 689 zapocetiIgru = 1;
2019US_JusufDelalic 0:44bf5430d56b 690 pobjednik = 0;
2019US_JusufDelalic 0:44bf5430d56b 691 }
2019US_JusufDelalic 0:44bf5430d56b 692
2019US_JusufDelalic 0:44bf5430d56b 693 void setMode(int mode)
2019US_JusufDelalic 0:44bf5430d56b 694 {
2019US_JusufDelalic 0:44bf5430d56b 695 Pong::mode = mode;
2019US_JusufDelalic 0:44bf5430d56b 696 }
2019US_JusufDelalic 0:44bf5430d56b 697
2019US_JusufDelalic 0:44bf5430d56b 698 void setTezina(int tezina)
2019US_JusufDelalic 0:44bf5430d56b 699 {
2019US_JusufDelalic 0:44bf5430d56b 700 Pong::tezina = tezina;
2019US_JusufDelalic 0:44bf5430d56b 701 }
2019US_JusufDelalic 0:44bf5430d56b 702
2019US_JusufDelalic 0:44bf5430d56b 703 void setPobjednik(int pobjednik)
2019US_JusufDelalic 0:44bf5430d56b 704 {
2019US_JusufDelalic 0:44bf5430d56b 705 Pong::pobjednik = pobjednik;
2019US_JusufDelalic 0:44bf5430d56b 706 }
2019US_JusufDelalic 0:44bf5430d56b 707
2019US_JusufDelalic 0:44bf5430d56b 708
2019US_JusufDelalic 0:44bf5430d56b 709 void setZapocetiIgru(int zapocetiIgru)
2019US_JusufDelalic 0:44bf5430d56b 710 {
2019US_JusufDelalic 0:44bf5430d56b 711 Pong::zapocetiIgru = zapocetiIgru;
2019US_JusufDelalic 0:44bf5430d56b 712 }
2019US_JusufDelalic 0:44bf5430d56b 713
2019US_JusufDelalic 0:44bf5430d56b 714 void inicijalnoStanje()
2019US_JusufDelalic 0:44bf5430d56b 715 {
2019US_JusufDelalic 0:44bf5430d56b 716 // display.InitialScreen(display);
2019US_JusufDelalic 0:44bf5430d56b 717 wait(3);
2019US_JusufDelalic 0:44bf5430d56b 718 ++tokIgre;
2019US_JusufDelalic 0:44bf5430d56b 719 }
2019US_JusufDelalic 0:44bf5430d56b 720
2019US_JusufDelalic 0:44bf5430d56b 721 void startGameStanje(int odabir)
2019US_JusufDelalic 0:44bf5430d56b 722 {
2019US_JusufDelalic 0:44bf5430d56b 723 // display.StartMenu(odabir); // izmjena - true
2019US_JusufDelalic 0:44bf5430d56b 724 }
2019US_JusufDelalic 0:44bf5430d56b 725
2019US_JusufDelalic 0:44bf5430d56b 726 void modeStanje(int mode)
2019US_JusufDelalic 0:44bf5430d56b 727 {
2019US_JusufDelalic 0:44bf5430d56b 728 // display.SelectMode(mode);
2019US_JusufDelalic 0:44bf5430d56b 729 // pritisnut taster
2019US_JusufDelalic 0:44bf5430d56b 730 this->mode = mode;
2019US_JusufDelalic 0:44bf5430d56b 731 }
2019US_JusufDelalic 0:44bf5430d56b 732
2019US_JusufDelalic 0:44bf5430d56b 733 void tezinaStanje(int tezina)
2019US_JusufDelalic 0:44bf5430d56b 734 {
2019US_JusufDelalic 0:44bf5430d56b 735 // display.SelectDifficulty(tezina);
2019US_JusufDelalic 0:44bf5430d56b 736 // pritisnut taster
2019US_JusufDelalic 0:44bf5430d56b 737 this->tezina = tezina;
2019US_JusufDelalic 0:44bf5430d56b 738 }
2019US_JusufDelalic 0:44bf5430d56b 739
2019US_JusufDelalic 0:44bf5430d56b 740 void igraStanje()
2019US_JusufDelalic 0:44bf5430d56b 741 {
2019US_JusufDelalic 0:44bf5430d56b 742 if (lijeviReket.getBodovi() >= 11 || desniReket.getBodovi() >= 11) {
2019US_JusufDelalic 0:44bf5430d56b 743 tokIgre++;
2019US_JusufDelalic 0:44bf5430d56b 744 } else {
2019US_JusufDelalic 0:44bf5430d56b 745
2019US_JusufDelalic 0:44bf5430d56b 746 int osvojioBod = 1; // centrirati loptu i rekete
2019US_JusufDelalic 0:44bf5430d56b 747 bool centrirano = true;
2019US_JusufDelalic 0:44bf5430d56b 748 if (lijeviReket.osvojioPoenLijeviReket(lopta, desniReket)) {
2019US_JusufDelalic 0:44bf5430d56b 749 lijeviReket.dodajPoen();
2019US_JusufDelalic 0:44bf5430d56b 750 osvojioBod = 1;
2019US_JusufDelalic 0:44bf5430d56b 751 centrirano = true;
2019US_JusufDelalic 0:44bf5430d56b 752
2019US_JusufDelalic 0:44bf5430d56b 753 } else if (desniReket.osvojioPoenDesniReket(lopta, lijeviReket)) {
2019US_JusufDelalic 0:44bf5430d56b 754 desniReket.dodajPoen();
2019US_JusufDelalic 0:44bf5430d56b 755 osvojioBod = 1;
2019US_JusufDelalic 0:44bf5430d56b 756 centrirano = true;
2019US_JusufDelalic 0:44bf5430d56b 757 }
2019US_JusufDelalic 0:44bf5430d56b 758
2019US_JusufDelalic 0:44bf5430d56b 759 if (centrirano) {
2019US_JusufDelalic 0:44bf5430d56b 760 if (tasterPressed(off)) {
2019US_JusufDelalic 0:44bf5430d56b 761 centrirano = false;
2019US_JusufDelalic 0:44bf5430d56b 762 if (osvojioBod == 1) {
2019US_JusufDelalic 0:44bf5430d56b 763 lopta.setDelta_x(-1);
2019US_JusufDelalic 0:44bf5430d56b 764 lopta.setDelta_y(-1);
2019US_JusufDelalic 0:44bf5430d56b 765 } else if (osvojioBod == 2) {
2019US_JusufDelalic 0:44bf5430d56b 766 lopta.setDelta_x(1);
2019US_JusufDelalic 0:44bf5430d56b 767 lopta.setDelta_y(1);
2019US_JusufDelalic 0:44bf5430d56b 768 }
2019US_JusufDelalic 0:44bf5430d56b 769 }
2019US_JusufDelalic 0:44bf5430d56b 770 }
2019US_JusufDelalic 0:44bf5430d56b 771 lopta.promijeniKretanje(lijeviReket, desniReket);
2019US_JusufDelalic 0:44bf5430d56b 772 // lopta.pomjeri(display.getDisplay());
2019US_JusufDelalic 0:44bf5430d56b 773
2019US_JusufDelalic 0:44bf5430d56b 774 lijeviReket.setY(lijeviReket.getY() + pozicijaLijevi);
2019US_JusufDelalic 0:44bf5430d56b 775 desniReket.setY(desniReket.getY() + pozicijaDesni);
2019US_JusufDelalic 0:44bf5430d56b 776
2019US_JusufDelalic 0:44bf5430d56b 777 // lijeviReket.pomjeri(display.getDisplay(), mode);
2019US_JusufDelalic 0:44bf5430d56b 778 // desniReket.pomjeri(display.getDisplay(), mode);
2019US_JusufDelalic 0:44bf5430d56b 779 }
2019US_JusufDelalic 0:44bf5430d56b 780
2019US_JusufDelalic 0:44bf5430d56b 781
2019US_JusufDelalic 0:44bf5430d56b 782 }
2019US_JusufDelalic 0:44bf5430d56b 783
2019US_JusufDelalic 0:44bf5430d56b 784 void gameOverStanje()
2019US_JusufDelalic 0:44bf5430d56b 785 {
2019US_JusufDelalic 0:44bf5430d56b 786 // display.GameOver(mode, pobjednik);
2019US_JusufDelalic 0:44bf5430d56b 787 wait(3);
2019US_JusufDelalic 0:44bf5430d56b 788
2019US_JusufDelalic 0:44bf5430d56b 789 tokIgre = 1; // vrati na odabir
2019US_JusufDelalic 0:44bf5430d56b 790 mode = 1; // signle player
2019US_JusufDelalic 0:44bf5430d56b 791 tezina = 1; // easy / medium / hard
2019US_JusufDelalic 0:44bf5430d56b 792 zapocetiIgru = 1; // start/exit
2019US_JusufDelalic 0:44bf5430d56b 793 pobjednik = 0;
2019US_JusufDelalic 0:44bf5430d56b 794 }
2019US_JusufDelalic 0:44bf5430d56b 795
2019US_JusufDelalic 0:44bf5430d56b 796 void izadjiStanje()
2019US_JusufDelalic 0:44bf5430d56b 797 {
2019US_JusufDelalic 0:44bf5430d56b 798 // display.getDisplay().clear();
2019US_JusufDelalic 0:44bf5430d56b 799 }
2019US_JusufDelalic 0:44bf5430d56b 800
2019US_JusufDelalic 0:44bf5430d56b 801
2019US_JusufDelalic 0:44bf5430d56b 802 };
2019US_JusufDelalic 0:44bf5430d56b 803
2019US_JusufDelalic 0:44bf5430d56b 804
2019US_JusufDelalic 0:44bf5430d56b 805 Ekran ekran(dp4, dp24, dp23, dp25, dp2, dp6, dp18);
2019US_JusufDelalic 0:44bf5430d56b 806 //Pong igra(tokIgre, lopta, lijevi, desni, ekran);
2019US_JusufDelalic 0:44bf5430d56b 807
2019US_JusufDelalic 0:44bf5430d56b 808
2019US_JusufDelalic 0:44bf5430d56b 809
2019US_JusufDelalic 0:44bf5430d56b 810
2019US_JusufDelalic 0:44bf5430d56b 811
2019US_JusufDelalic 0:44bf5430d56b 812
2019US_JusufDelalic 0:44bf5430d56b 813
2019US_JusufDelalic 0:44bf5430d56b 814
2019US_JusufDelalic 0:44bf5430d56b 815
2019US_JusufDelalic 0:44bf5430d56b 816
2019US_JusufDelalic 0:44bf5430d56b 817
2019US_JusufDelalic 0:44bf5430d56b 818
2019US_JusufDelalic 0:44bf5430d56b 819
2019US_JusufDelalic 0:44bf5430d56b 820
2019US_JusufDelalic 0:44bf5430d56b 821
2019US_JusufDelalic 0:44bf5430d56b 822
2019US_JusufDelalic 0:44bf5430d56b 823
2019US_JusufDelalic 0:44bf5430d56b 824
2019US_JusufDelalic 0:44bf5430d56b 825
2019US_JusufDelalic 0:44bf5430d56b 826
2019US_JusufDelalic 0:44bf5430d56b 827
2019US_JusufDelalic 0:44bf5430d56b 828
2019US_JusufDelalic 0:44bf5430d56b 829
2019US_JusufDelalic 0:44bf5430d56b 830
2019US_JusufDelalic 0:44bf5430d56b 831
2019US_JusufDelalic 0:44bf5430d56b 832 int main()
2019US_JusufDelalic 0:44bf5430d56b 833 {
2019US_JusufDelalic 0:44bf5430d56b 834
2019US_JusufDelalic 0:44bf5430d56b 835 enableLed = 1; // gasimo ledice
2019US_JusufDelalic 0:44bf5430d56b 836 lijeviSW.mode(PullUp);
2019US_JusufDelalic 0:44bf5430d56b 837 desniSW.mode(PullUp);
2019US_JusufDelalic 0:44bf5430d56b 838
2019US_JusufDelalic 0:44bf5430d56b 839 ekran.init();
2019US_JusufDelalic 0:44bf5430d56b 840 ekran.clear();
2019US_JusufDelalic 0:44bf5430d56b 841
2019US_JusufDelalic 0:44bf5430d56b 842 int tokIgre = 0;
2019US_JusufDelalic 0:44bf5430d56b 843 Reket lijevi(1, Y_MAX / 2, 6, 2); // kreiramo desni, lijevi reket i loptu
2019US_JusufDelalic 0:44bf5430d56b 844 Reket desni(82, Y_MAX / 2, 6, 2);
2019US_JusufDelalic 0:44bf5430d56b 845 Lopta lopta(X_MAX / 2, Y_MAX / 2, 1, 0, 0);
2019US_JusufDelalic 0:44bf5430d56b 846
2019US_JusufDelalic 0:44bf5430d56b 847
2019US_JusufDelalic 0:44bf5430d56b 848 int biranjeOpcije = 1;
2019US_JusufDelalic 0:44bf5430d56b 849
2019US_JusufDelalic 0:44bf5430d56b 850 ekran.InitialScreen(); // ----------------------------------------------------------------------------------------------------------------------------
2019US_JusufDelalic 0:44bf5430d56b 851 wait(3);
2019US_JusufDelalic 0:44bf5430d56b 852
2019US_JusufDelalic 0:44bf5430d56b 853
2019US_JusufDelalic 0:44bf5430d56b 854 pozicijaLijevi = Centar;
2019US_JusufDelalic 0:44bf5430d56b 855 pozicijaDesni = Centar;
2019US_JusufDelalic 0:44bf5430d56b 856
2019US_JusufDelalic 0:44bf5430d56b 857 tokIgre++;
2019US_JusufDelalic 0:44bf5430d56b 858
2019US_JusufDelalic 0:44bf5430d56b 859 bool pritisnutTaster = false;
2019US_JusufDelalic 0:44bf5430d56b 860
2019US_JusufDelalic 0:44bf5430d56b 861 int mode = 1; // single player
2019US_JusufDelalic 0:44bf5430d56b 862 int winner = 1; // player1
2019US_JusufDelalic 0:44bf5430d56b 863 int difficulty = 1; // easy
2019US_JusufDelalic 0:44bf5430d56b 864
2019US_JusufDelalic 0:44bf5430d56b 865 //bool poIelaIgra = false;
2019US_JusufDelalic 0:44bf5430d56b 866
2019US_JusufDelalic 0:44bf5430d56b 867 while (1) {
2019US_JusufDelalic 0:44bf5430d56b 868
2019US_JusufDelalic 0:44bf5430d56b 869 biranjeOpcije = 1; // start
2019US_JusufDelalic 0:44bf5430d56b 870 // Start/Exit
2019US_JusufDelalic 0:44bf5430d56b 871 while (tokIgre == 1) {
2019US_JusufDelalic 0:44bf5430d56b 872
2019US_JusufDelalic 0:44bf5430d56b 873 pritisnutTaster = tasterPressed(off);
2019US_JusufDelalic 0:44bf5430d56b 874 pozicijaLijevi = Centar;
2019US_JusufDelalic 0:44bf5430d56b 875 pozicijaDesni = Centar;
2019US_JusufDelalic 0:44bf5430d56b 876
2019US_JusufDelalic 0:44bf5430d56b 877
2019US_JusufDelalic 0:44bf5430d56b 878 ekran.clear();
2019US_JusufDelalic 0:44bf5430d56b 879 ekran.StartMenu(biranjeOpcije);
2019US_JusufDelalic 0:44bf5430d56b 880 wait(0.5);
2019US_JusufDelalic 0:44bf5430d56b 881
2019US_JusufDelalic 0:44bf5430d56b 882 ekran.refresh();
2019US_JusufDelalic 0:44bf5430d56b 883
2019US_JusufDelalic 0:44bf5430d56b 884
2019US_JusufDelalic 0:44bf5430d56b 885 azurirajPozicijuLijevi();
2019US_JusufDelalic 0:44bf5430d56b 886
2019US_JusufDelalic 0:44bf5430d56b 887 if (pozicijaLijevi % 2 != 0) {
2019US_JusufDelalic 0:44bf5430d56b 888
2019US_JusufDelalic 0:44bf5430d56b 889 if (biranjeOpcije == 1)
2019US_JusufDelalic 0:44bf5430d56b 890 biranjeOpcije = 0;
2019US_JusufDelalic 0:44bf5430d56b 891
2019US_JusufDelalic 0:44bf5430d56b 892 else biranjeOpcije = 1;
2019US_JusufDelalic 0:44bf5430d56b 893
2019US_JusufDelalic 0:44bf5430d56b 894 }
2019US_JusufDelalic 0:44bf5430d56b 895
2019US_JusufDelalic 0:44bf5430d56b 896 if (pritisnutTaster) {
2019US_JusufDelalic 0:44bf5430d56b 897 if (biranjeOpcije == 0) {
2019US_JusufDelalic 0:44bf5430d56b 898 ekran.clear();
2019US_JusufDelalic 0:44bf5430d56b 899 ekran.turnOff();
2019US_JusufDelalic 0:44bf5430d56b 900 return 0;
2019US_JusufDelalic 0:44bf5430d56b 901
2019US_JusufDelalic 0:44bf5430d56b 902 } else {
2019US_JusufDelalic 0:44bf5430d56b 903
2019US_JusufDelalic 0:44bf5430d56b 904 ++tokIgre;
2019US_JusufDelalic 0:44bf5430d56b 905 }
2019US_JusufDelalic 0:44bf5430d56b 906
2019US_JusufDelalic 0:44bf5430d56b 907 }
2019US_JusufDelalic 0:44bf5430d56b 908
2019US_JusufDelalic 0:44bf5430d56b 909 }
2019US_JusufDelalic 0:44bf5430d56b 910
2019US_JusufDelalic 0:44bf5430d56b 911
2019US_JusufDelalic 0:44bf5430d56b 912 biranjeOpcije = 1;
2019US_JusufDelalic 0:44bf5430d56b 913 // Singleplayer, Multiplayer
2019US_JusufDelalic 0:44bf5430d56b 914 while (tokIgre == 2) {
2019US_JusufDelalic 0:44bf5430d56b 915
2019US_JusufDelalic 0:44bf5430d56b 916 ekran.clear();
2019US_JusufDelalic 0:44bf5430d56b 917
2019US_JusufDelalic 0:44bf5430d56b 918 pritisnutTaster = tasterPressed(off);
2019US_JusufDelalic 0:44bf5430d56b 919 // single player
2019US_JusufDelalic 0:44bf5430d56b 920 pozicijaLijevi = Centar;
2019US_JusufDelalic 0:44bf5430d56b 921 pozicijaDesni = Centar;
2019US_JusufDelalic 0:44bf5430d56b 922
2019US_JusufDelalic 0:44bf5430d56b 923
2019US_JusufDelalic 0:44bf5430d56b 924 ekran.SelectMode(biranjeOpcije);
2019US_JusufDelalic 0:44bf5430d56b 925 ekran.refresh();
2019US_JusufDelalic 0:44bf5430d56b 926 wait(0.5);
2019US_JusufDelalic 0:44bf5430d56b 927
2019US_JusufDelalic 0:44bf5430d56b 928
2019US_JusufDelalic 0:44bf5430d56b 929 azurirajPozicijuLijevi();
2019US_JusufDelalic 0:44bf5430d56b 930
2019US_JusufDelalic 0:44bf5430d56b 931 if (pozicijaLijevi % 2 != 0) {
2019US_JusufDelalic 0:44bf5430d56b 932
2019US_JusufDelalic 0:44bf5430d56b 933 if (biranjeOpcije == 1)
2019US_JusufDelalic 0:44bf5430d56b 934 biranjeOpcije = 0;
2019US_JusufDelalic 0:44bf5430d56b 935 else biranjeOpcije = 1;
2019US_JusufDelalic 0:44bf5430d56b 936
2019US_JusufDelalic 0:44bf5430d56b 937 }
2019US_JusufDelalic 0:44bf5430d56b 938
2019US_JusufDelalic 0:44bf5430d56b 939
2019US_JusufDelalic 0:44bf5430d56b 940 if (pritisnutTaster) {
2019US_JusufDelalic 0:44bf5430d56b 941 if (biranjeOpcije == 0) mode = 2; // multiplayer
2019US_JusufDelalic 0:44bf5430d56b 942 else if (biranjeOpcije == 1) mode = 1; // single player
2019US_JusufDelalic 0:44bf5430d56b 943
2019US_JusufDelalic 0:44bf5430d56b 944
2019US_JusufDelalic 0:44bf5430d56b 945 ++tokIgre;
2019US_JusufDelalic 0:44bf5430d56b 946 }
2019US_JusufDelalic 0:44bf5430d56b 947
2019US_JusufDelalic 0:44bf5430d56b 948
2019US_JusufDelalic 0:44bf5430d56b 949 }
2019US_JusufDelalic 0:44bf5430d56b 950
2019US_JusufDelalic 0:44bf5430d56b 951
2019US_JusufDelalic 0:44bf5430d56b 952 biranjeOpcije = 0;
2019US_JusufDelalic 0:44bf5430d56b 953 // Easy - 1, Medium - 2, Hard - 3
2019US_JusufDelalic 0:44bf5430d56b 954 while (tokIgre == 3) {
2019US_JusufDelalic 0:44bf5430d56b 955
2019US_JusufDelalic 0:44bf5430d56b 956 ekran.clear();
2019US_JusufDelalic 0:44bf5430d56b 957 pritisnutTaster = tasterPressed(off);
2019US_JusufDelalic 0:44bf5430d56b 958
2019US_JusufDelalic 0:44bf5430d56b 959 pozicijaLijevi = Centar;
2019US_JusufDelalic 0:44bf5430d56b 960 pozicijaDesni = Centar;
2019US_JusufDelalic 0:44bf5430d56b 961
2019US_JusufDelalic 0:44bf5430d56b 962
2019US_JusufDelalic 0:44bf5430d56b 963 if (biranjeOpcije == 0) {
2019US_JusufDelalic 0:44bf5430d56b 964 ekran.SelectDifficulty(1);
2019US_JusufDelalic 0:44bf5430d56b 965
2019US_JusufDelalic 0:44bf5430d56b 966 } else if (biranjeOpcije == 1) {
2019US_JusufDelalic 0:44bf5430d56b 967 ekran.SelectDifficulty(3);
2019US_JusufDelalic 0:44bf5430d56b 968
2019US_JusufDelalic 0:44bf5430d56b 969 } else if (biranjeOpcije == 2) {
2019US_JusufDelalic 0:44bf5430d56b 970 ekran.SelectDifficulty(biranjeOpcije);
2019US_JusufDelalic 0:44bf5430d56b 971
2019US_JusufDelalic 0:44bf5430d56b 972 }
2019US_JusufDelalic 0:44bf5430d56b 973
2019US_JusufDelalic 0:44bf5430d56b 974 azurirajPozicijuLijevi(); // mozda na ticker...
2019US_JusufDelalic 0:44bf5430d56b 975
2019US_JusufDelalic 0:44bf5430d56b 976 if (pozicijaLijevi == Dolje)
2019US_JusufDelalic 0:44bf5430d56b 977 biranjeOpcije++;
2019US_JusufDelalic 0:44bf5430d56b 978
2019US_JusufDelalic 0:44bf5430d56b 979 else if (pozicijaLijevi == Gore)
2019US_JusufDelalic 0:44bf5430d56b 980 biranjeOpcije--;
2019US_JusufDelalic 0:44bf5430d56b 981
2019US_JusufDelalic 0:44bf5430d56b 982 while (biranjeOpcije < 0)
2019US_JusufDelalic 0:44bf5430d56b 983 biranjeOpcije += 3;
2019US_JusufDelalic 0:44bf5430d56b 984
2019US_JusufDelalic 0:44bf5430d56b 985 biranjeOpcije %= 3;
2019US_JusufDelalic 0:44bf5430d56b 986
2019US_JusufDelalic 0:44bf5430d56b 987
2019US_JusufDelalic 0:44bf5430d56b 988 if (pritisnutTaster) {
2019US_JusufDelalic 0:44bf5430d56b 989 //igra.setTezina(biranjeOpcije + 1);
2019US_JusufDelalic 0:44bf5430d56b 990 if (biranjeOpcije == 0) difficulty = 1;
2019US_JusufDelalic 0:44bf5430d56b 991 else if (biranjeOpcije == 1) difficulty = 3;
2019US_JusufDelalic 0:44bf5430d56b 992 else difficulty = 2;
2019US_JusufDelalic 0:44bf5430d56b 993
2019US_JusufDelalic 0:44bf5430d56b 994 ekran.clear();
2019US_JusufDelalic 0:44bf5430d56b 995 ekran.refresh();
2019US_JusufDelalic 0:44bf5430d56b 996 ++tokIgre;
2019US_JusufDelalic 0:44bf5430d56b 997 }
2019US_JusufDelalic 0:44bf5430d56b 998
2019US_JusufDelalic 0:44bf5430d56b 999 ekran.refresh();
2019US_JusufDelalic 0:44bf5430d56b 1000 wait(0.5);
2019US_JusufDelalic 0:44bf5430d56b 1001
2019US_JusufDelalic 0:44bf5430d56b 1002
2019US_JusufDelalic 0:44bf5430d56b 1003 }
2019US_JusufDelalic 0:44bf5430d56b 1004
2019US_JusufDelalic 0:44bf5430d56b 1005 // pocetno stanje igre...
2019US_JusufDelalic 0:44bf5430d56b 1006 if (tokIgre == 4) {
2019US_JusufDelalic 0:44bf5430d56b 1007
2019US_JusufDelalic 0:44bf5430d56b 1008 ekran.clear();
2019US_JusufDelalic 0:44bf5430d56b 1009 ekran.postaviCentrirano(lijevi, desni, lopta);
2019US_JusufDelalic 0:44bf5430d56b 1010 ekran.ispisiBodove(lijevi, desni);
2019US_JusufDelalic 0:44bf5430d56b 1011 ekran.refresh();
2019US_JusufDelalic 0:44bf5430d56b 1012
2019US_JusufDelalic 0:44bf5430d56b 1013 wait(1.5);
2019US_JusufDelalic 0:44bf5430d56b 1014
2019US_JusufDelalic 0:44bf5430d56b 1015 lopta.setDelta_x(2);
2019US_JusufDelalic 0:44bf5430d56b 1016 lopta.setDelta_y(2);
2019US_JusufDelalic 0:44bf5430d56b 1017 }
2019US_JusufDelalic 0:44bf5430d56b 1018
2019US_JusufDelalic 0:44bf5430d56b 1019
2019US_JusufDelalic 0:44bf5430d56b 1020 while (tokIgre == 4) {
2019US_JusufDelalic 0:44bf5430d56b 1021
2019US_JusufDelalic 0:44bf5430d56b 1022
2019US_JusufDelalic 0:44bf5430d56b 1023 if (mode == 1) {
2019US_JusufDelalic 0:44bf5430d56b 1024
2019US_JusufDelalic 0:44bf5430d56b 1025 // Single player
2019US_JusufDelalic 0:44bf5430d56b 1026 ekran.clear();
2019US_JusufDelalic 0:44bf5430d56b 1027 if (lijevi.osvojioPoenLijeviReket(lopta, desni) || desni.osvojioPoenDesniReket(lopta, lijevi)) {
2019US_JusufDelalic 0:44bf5430d56b 1028
2019US_JusufDelalic 0:44bf5430d56b 1029 ekran.clear();
2019US_JusufDelalic 0:44bf5430d56b 1030 ekran.postaviCentrirano(lijevi, desni, lopta);
2019US_JusufDelalic 0:44bf5430d56b 1031 lopta.setDelta_x(2);
2019US_JusufDelalic 0:44bf5430d56b 1032 lopta.setDelta_y(2);
2019US_JusufDelalic 0:44bf5430d56b 1033
2019US_JusufDelalic 0:44bf5430d56b 1034
2019US_JusufDelalic 0:44bf5430d56b 1035 if (lijevi.osvojioPoenLijeviReket(lopta, desni))
2019US_JusufDelalic 0:44bf5430d56b 1036 lijevi.dodajPoen();
2019US_JusufDelalic 0:44bf5430d56b 1037
2019US_JusufDelalic 0:44bf5430d56b 1038 else desni.dodajPoen();
2019US_JusufDelalic 0:44bf5430d56b 1039
2019US_JusufDelalic 0:44bf5430d56b 1040 ekran.ispisiBodove(lijevi, desni);
2019US_JusufDelalic 0:44bf5430d56b 1041 ekran.refresh();
2019US_JusufDelalic 0:44bf5430d56b 1042
2019US_JusufDelalic 0:44bf5430d56b 1043 wait(1.5); // prikazujemo centrirano 1.5 sekundi nakon cega lopta pocinje kretanje prema nekom od igraca
2019US_JusufDelalic 0:44bf5430d56b 1044
2019US_JusufDelalic 0:44bf5430d56b 1045 }
2019US_JusufDelalic 0:44bf5430d56b 1046
2019US_JusufDelalic 0:44bf5430d56b 1047
2019US_JusufDelalic 0:44bf5430d56b 1048 if (lijevi.getBodovi() >= 11 || desni.getBodovi() >= 11)
2019US_JusufDelalic 0:44bf5430d56b 1049 ++tokIgre;
2019US_JusufDelalic 0:44bf5430d56b 1050
2019US_JusufDelalic 0:44bf5430d56b 1051 if (tokIgre != 4)
2019US_JusufDelalic 0:44bf5430d56b 1052 break;
2019US_JusufDelalic 0:44bf5430d56b 1053
2019US_JusufDelalic 0:44bf5430d56b 1054 azurirajPozicijuLijevi();
2019US_JusufDelalic 0:44bf5430d56b 1055
2019US_JusufDelalic 0:44bf5430d56b 1056 int delta_lijevi = pozicijaLijevi * 2;
2019US_JusufDelalic 0:44bf5430d56b 1057 int delta_desni;
2019US_JusufDelalic 0:44bf5430d56b 1058
2019US_JusufDelalic 0:44bf5430d56b 1059 if (lopta.getY() > desni.getY())
2019US_JusufDelalic 0:44bf5430d56b 1060 delta_desni = 2; // idi dolje
2019US_JusufDelalic 0:44bf5430d56b 1061
2019US_JusufDelalic 0:44bf5430d56b 1062 else if (lopta.getY() > desni.getY())
2019US_JusufDelalic 0:44bf5430d56b 1063 delta_desni = -2; // idi gore
2019US_JusufDelalic 0:44bf5430d56b 1064
2019US_JusufDelalic 0:44bf5430d56b 1065 else delta_desni = 0;
2019US_JusufDelalic 0:44bf5430d56b 1066
2019US_JusufDelalic 0:44bf5430d56b 1067 lopta.promijeniKretanje(lijevi, desni);
2019US_JusufDelalic 0:44bf5430d56b 1068
2019US_JusufDelalic 0:44bf5430d56b 1069
2019US_JusufDelalic 0:44bf5430d56b 1070 lopta.neIzlaziVanOkvira();
2019US_JusufDelalic 0:44bf5430d56b 1071 lijevi.neIzlaziVanOkvira();
2019US_JusufDelalic 0:44bf5430d56b 1072 desni.neIzlaziVanOkvira();
2019US_JusufDelalic 0:44bf5430d56b 1073
2019US_JusufDelalic 0:44bf5430d56b 1074 ekran.clear();
2019US_JusufDelalic 0:44bf5430d56b 1075
2019US_JusufDelalic 0:44bf5430d56b 1076 lijevi.pomjeri(ekran.getDisplay(), delta_lijevi);
2019US_JusufDelalic 0:44bf5430d56b 1077 desni.pomjeri(ekran.getDisplay(), delta_desni);
2019US_JusufDelalic 0:44bf5430d56b 1078 lopta.pomjeri(ekran.getDisplay());
2019US_JusufDelalic 0:44bf5430d56b 1079 ekran.ispisiBodove(lijevi, desni);
2019US_JusufDelalic 0:44bf5430d56b 1080
2019US_JusufDelalic 0:44bf5430d56b 1081 if (difficulty == 2) {
2019US_JusufDelalic 0:44bf5430d56b 1082
2019US_JusufDelalic 0:44bf5430d56b 1083 lopta.setDelta_y(lopta.getDelta_y() * 1.5);
2019US_JusufDelalic 0:44bf5430d56b 1084 lopta.setDelta_x(lopta.getDelta_x() * 1.5);
2019US_JusufDelalic 0:44bf5430d56b 1085
2019US_JusufDelalic 0:44bf5430d56b 1086 delta_desni *= 1.5;
2019US_JusufDelalic 0:44bf5430d56b 1087 } else if (difficulty == 3) {
2019US_JusufDelalic 0:44bf5430d56b 1088
2019US_JusufDelalic 0:44bf5430d56b 1089 lopta.setDelta_y(lopta.getDelta_y() * 2.5);
2019US_JusufDelalic 0:44bf5430d56b 1090 lopta.setDelta_x(lopta.getDelta_x() * 2.5);
2019US_JusufDelalic 0:44bf5430d56b 1091
2019US_JusufDelalic 0:44bf5430d56b 1092 delta_desni *= 2.5;
2019US_JusufDelalic 0:44bf5430d56b 1093
2019US_JusufDelalic 0:44bf5430d56b 1094 }
2019US_JusufDelalic 0:44bf5430d56b 1095
2019US_JusufDelalic 0:44bf5430d56b 1096 ekran.refresh();
2019US_JusufDelalic 0:44bf5430d56b 1097 wait(0.2);
2019US_JusufDelalic 0:44bf5430d56b 1098
2019US_JusufDelalic 0:44bf5430d56b 1099 } else {
2019US_JusufDelalic 0:44bf5430d56b 1100
2019US_JusufDelalic 0:44bf5430d56b 1101 ekran.clear();
2019US_JusufDelalic 0:44bf5430d56b 1102
2019US_JusufDelalic 0:44bf5430d56b 1103
2019US_JusufDelalic 0:44bf5430d56b 1104 if (lijevi.osvojioPoenLijeviReket(lopta, desni) || desni.osvojioPoenDesniReket(lopta, lijevi)) {
2019US_JusufDelalic 0:44bf5430d56b 1105
2019US_JusufDelalic 0:44bf5430d56b 1106 ekran.clear();
2019US_JusufDelalic 0:44bf5430d56b 1107 ekran.postaviCentrirano(lijevi, desni, lopta);
2019US_JusufDelalic 0:44bf5430d56b 1108 lopta.setDelta_x(2);
2019US_JusufDelalic 0:44bf5430d56b 1109 lopta.setDelta_y(2);
2019US_JusufDelalic 0:44bf5430d56b 1110
2019US_JusufDelalic 0:44bf5430d56b 1111 if (lijevi.osvojioPoenLijeviReket(lopta, desni))
2019US_JusufDelalic 0:44bf5430d56b 1112 lijevi.dodajPoen();
2019US_JusufDelalic 0:44bf5430d56b 1113
2019US_JusufDelalic 0:44bf5430d56b 1114 else desni.dodajPoen();
2019US_JusufDelalic 0:44bf5430d56b 1115
2019US_JusufDelalic 0:44bf5430d56b 1116 ekran.ispisiBodove(lijevi, desni);
2019US_JusufDelalic 0:44bf5430d56b 1117 ekran.refresh();
2019US_JusufDelalic 0:44bf5430d56b 1118
2019US_JusufDelalic 0:44bf5430d56b 1119 wait(1.5); // prikazujemo centrirano 1.5 sekundi nakon cega lopta pocinje kretanje prema nekom od igraca
2019US_JusufDelalic 0:44bf5430d56b 1120
2019US_JusufDelalic 0:44bf5430d56b 1121 }
2019US_JusufDelalic 0:44bf5430d56b 1122
2019US_JusufDelalic 0:44bf5430d56b 1123
2019US_JusufDelalic 0:44bf5430d56b 1124 if (lijevi.getBodovi() >= 11 || desni.getBodovi() >= 11)
2019US_JusufDelalic 0:44bf5430d56b 1125 ++tokIgre;
2019US_JusufDelalic 0:44bf5430d56b 1126
2019US_JusufDelalic 0:44bf5430d56b 1127 if (tokIgre != 4)
2019US_JusufDelalic 0:44bf5430d56b 1128 break;
2019US_JusufDelalic 0:44bf5430d56b 1129
2019US_JusufDelalic 0:44bf5430d56b 1130
2019US_JusufDelalic 0:44bf5430d56b 1131 azurirajPozicijuDesni();
2019US_JusufDelalic 0:44bf5430d56b 1132 azurirajPozicijuLijevi();
2019US_JusufDelalic 0:44bf5430d56b 1133
2019US_JusufDelalic 0:44bf5430d56b 1134 int delta_lijevi = pozicijaLijevi * 2;// neka funkcija od lijevog joysticka koja se poziva tickerom
2019US_JusufDelalic 0:44bf5430d56b 1135 int delta_desni = pozicijaDesni * 2;// neka funkcija od desnog joysticka koja se poziva tickerom
2019US_JusufDelalic 0:44bf5430d56b 1136 lopta.promijeniKretanje(lijevi, desni);
2019US_JusufDelalic 0:44bf5430d56b 1137
2019US_JusufDelalic 0:44bf5430d56b 1138 lopta.neIzlaziVanOkvira();
2019US_JusufDelalic 0:44bf5430d56b 1139 lijevi.neIzlaziVanOkvira();
2019US_JusufDelalic 0:44bf5430d56b 1140 desni.neIzlaziVanOkvira();
2019US_JusufDelalic 0:44bf5430d56b 1141
2019US_JusufDelalic 0:44bf5430d56b 1142
2019US_JusufDelalic 0:44bf5430d56b 1143 ekran.clear();
2019US_JusufDelalic 0:44bf5430d56b 1144
2019US_JusufDelalic 0:44bf5430d56b 1145 lijevi.pomjeri(ekran.getDisplay(), delta_lijevi);
2019US_JusufDelalic 0:44bf5430d56b 1146 desni.pomjeri(ekran.getDisplay(), delta_desni);
2019US_JusufDelalic 0:44bf5430d56b 1147 lopta.pomjeri(ekran.getDisplay());
2019US_JusufDelalic 0:44bf5430d56b 1148 ekran.ispisiBodove(lijevi, desni);
2019US_JusufDelalic 0:44bf5430d56b 1149
2019US_JusufDelalic 0:44bf5430d56b 1150 ekran.refresh();
2019US_JusufDelalic 0:44bf5430d56b 1151
2019US_JusufDelalic 0:44bf5430d56b 1152 if (difficulty == 2) {
2019US_JusufDelalic 0:44bf5430d56b 1153
2019US_JusufDelalic 0:44bf5430d56b 1154 lopta.setDelta_y(lopta.getDelta_y() * 1.5);
2019US_JusufDelalic 0:44bf5430d56b 1155 lopta.setDelta_x(lopta.getDelta_x() * 1.5);
2019US_JusufDelalic 0:44bf5430d56b 1156
2019US_JusufDelalic 0:44bf5430d56b 1157 delta_desni *= 1.5;
2019US_JusufDelalic 0:44bf5430d56b 1158 delta_lijevi *= 1.5;
2019US_JusufDelalic 0:44bf5430d56b 1159
2019US_JusufDelalic 0:44bf5430d56b 1160
2019US_JusufDelalic 0:44bf5430d56b 1161 } else if (difficulty == 3) {
2019US_JusufDelalic 0:44bf5430d56b 1162
2019US_JusufDelalic 0:44bf5430d56b 1163 lopta.setDelta_y(lopta.getDelta_y() * 2.5);
2019US_JusufDelalic 0:44bf5430d56b 1164 lopta.setDelta_x(lopta.getDelta_x() * 2.5);
2019US_JusufDelalic 0:44bf5430d56b 1165
2019US_JusufDelalic 0:44bf5430d56b 1166 delta_desni *= 2.5;
2019US_JusufDelalic 0:44bf5430d56b 1167 delta_lijevi *= 2.5;
2019US_JusufDelalic 0:44bf5430d56b 1168
2019US_JusufDelalic 0:44bf5430d56b 1169
2019US_JusufDelalic 0:44bf5430d56b 1170 }
2019US_JusufDelalic 0:44bf5430d56b 1171
2019US_JusufDelalic 0:44bf5430d56b 1172 wait(0.3);
2019US_JusufDelalic 0:44bf5430d56b 1173
2019US_JusufDelalic 0:44bf5430d56b 1174 }
2019US_JusufDelalic 0:44bf5430d56b 1175
2019US_JusufDelalic 0:44bf5430d56b 1176
2019US_JusufDelalic 0:44bf5430d56b 1177 }
2019US_JusufDelalic 0:44bf5430d56b 1178 biranjeOpcije = 1;
2019US_JusufDelalic 0:44bf5430d56b 1179 // Game Over
2019US_JusufDelalic 0:44bf5430d56b 1180 if (tokIgre == 5) {
2019US_JusufDelalic 0:44bf5430d56b 1181
2019US_JusufDelalic 0:44bf5430d56b 1182 ekran.clear();
2019US_JusufDelalic 0:44bf5430d56b 1183 if (lijevi.getBodovi() == 11)
2019US_JusufDelalic 0:44bf5430d56b 1184 winner = 1;
2019US_JusufDelalic 0:44bf5430d56b 1185 else winner = 2;
2019US_JusufDelalic 0:44bf5430d56b 1186
2019US_JusufDelalic 0:44bf5430d56b 1187 ekran.GameOver(mode, winner);
2019US_JusufDelalic 0:44bf5430d56b 1188 ekran.refresh();
2019US_JusufDelalic 0:44bf5430d56b 1189 wait(3);
2019US_JusufDelalic 0:44bf5430d56b 1190 tokIgre = 1;
2019US_JusufDelalic 0:44bf5430d56b 1191 }
2019US_JusufDelalic 0:44bf5430d56b 1192
2019US_JusufDelalic 0:44bf5430d56b 1193
2019US_JusufDelalic 0:44bf5430d56b 1194 } // kraj beskonacne while petlje
2019US_JusufDelalic 0:44bf5430d56b 1195
2019US_JusufDelalic 0:44bf5430d56b 1196 } // kraj main -a