private Sprite[] roidSpace = new Sprite[3];
Π ΠΌΠ΅ΡΠΎΠ΄Π΅ start() Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΡΠ°ΠΉΡΠΎΠ² Π°ΡΡΠ΅ΡΠΎΠΈΠ΄Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ:
Image img = Image.createImage(Β«/Roid.pngΒ»);
roidSprite[0] = new Sprite(img, 42, 35);
roidSprite[1] = new Sprite(img, 42, 35);
roidSprite[2] = new Sprite(img, 42, 35);ΠΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π°ΡΡΠ΅ΡΠΎΠΈΠ΄Π° (Roid.png) ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΡΠΏΡΠ°ΠΉΡΠ°. Π’Π°ΠΊΠΆΠ΅ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ ΠΈ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΠΠ:
ufoSprite.setPosition((getWidth() β ufoSprite.getWidth()) / 2, (getHeight() β ufoSprite.getHeight()) / 2);
Π₯ΠΎΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΡΡΠ°Π½Π½ΡΠΌ, Π½ΠΎ ΠΎΠ½ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΠ³ΠΎ, ΠΏΡΠΎΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΏΡΠ°ΠΉΡ Π² ΡΠ΅Π½ΡΡΠ΅ ΡΠΊΡΠ°Π½Π°, ΡΡΠΎΠ±Ρ ΠΠΠ ΡΡΠ°Π·Ρ Π½Π΅ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ Π°ΡΡΠ΅ΡΠΎΠΈΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ°ΡΡΡΠ΅Ρ ΠΈΠ· ΡΠΎΡΠΊΠΈ (0,0). Π ΠΌΠ΅ΡΠΎΠ΄Π΅ update() Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π½ΠΎΠ²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°. ΠΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠ΅Π½Π° Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π°:
int keyState = getKeyStates();
if ((keyState & LEFT_PRESSED) != 0)
ufoXSpeedβ;
else if ((keyState & RIGHT_PRESSED) != 0)
ufoXSpeed++;
if ((keyState & UP_PRESSED) != 0)
ufoYSpeedβ;
else if ((keyState & DOWN_PRESSED) != 0)
ufoYSpeed++;
ufoXSpeed = Math.min(Math.max(ufoXSpeed, -8), 8); //Π‘ΠΊΠΎΡΠΎΡΡΡ ΠΠΠ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ -8 Π΄ΠΎ 8
ufoYSpeed = Math.min(Math.max(ufoYSpeed, -8), 8);ΠΡΠΎΡ ΠΊΠΎΠ΄ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π½Π°ΠΆΠ°ΡΠΈΡ ΡΠ΅ΡΡΡΠ΅Ρ ΠΊΠ»Π°Π²ΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΡΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΊΠΎΡΠΎΡΡΡ ΠΠΠ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΈ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΊΠΎΡΠΎΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° 8 Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π±ΡΠ»Π° Π½Π°ΠΆΠ°ΡΠ° ΡΠ° ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ ΠΊΠ»Π°Π²ΠΈΡΠ°. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΡΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°, ΠΠΠ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ:
ufoSprite.move(ufoXSpeed, ufoYSpeed); checkBounds(ufoSprite);
ΠΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ move() ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ ΡΠΏΡΠ°ΠΉΡ, Π° ΠΌΠ΅ΡΠΎΠ΄ checkBounds() ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π½Π΅ Π²ΡΡΠ΅Π» Π»ΠΈ ΠΠΠ Π·Π° Π³ΡΠ°Π½ΠΈΡΡ ΡΠΊΡΠ°Π½Π°. ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π°ΡΡ, Π½ΠΎ Π΅Π΅ ΠΊΠΎΠ΄ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΈ Π΄Π»Ρ Π°ΡΡΠ΅ΡΠΎΠΈΠ΄ΠΎΠ². ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄, Π΅ΡΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ. ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΡΠ°ΠΉΡΠΎΠ² Π°ΡΡΠ΅ΡΠΎΠΈΠ΄ΠΎΠ² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΈΠΊΠ»Π΅, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π½Π°ΡΠ°Π»ΠΎ ΡΠΈΠΊΠ»Π°:
for (int i = 0; i < 3; i++) {
ΠΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π² ΡΠΈΠΊΠ»Π΅, β ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ Π°ΡΡΠ΅ΡΠΎΠΈΠ΄Ρ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π½Π΅ Π²ΡΡΠ»ΠΈ Π»ΠΈ ΠΎΠ½ΠΈ Π·Π° Π³ΡΠ°Π½ΠΈΡΡ ΡΠΊΡΠ°Π½Π°:
roidSprite[i].move(i + 1, 1 β i); checkBounds(roidSprite[i]);
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ Ρ ΠΈΡΡΠΎΡΡΡ Π² ΡΡΠΎΠΌ ΠΊΠΎΠ΄Π΅ β ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π°ΡΡΠ΅ΡΠΎΠΈΠ΄ΠΎΠ². Π§ΡΠΎΠ±Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π°ΡΡΠ΅ΡΠΎΠΈΠ΄ Π΄Π²ΠΈΠ³Π°Π»ΡΡ ΡΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΠΎΡΠΎΠ±ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΡΡ, Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ . ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅ΠΉΠΌΠΎΠ² Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ:
if (i == 1)
roidSprite[i].prevFrame();
else
roidSprite[i].nextFrame();ΠΠ΄Π΅Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΡΠΎΡΠΎΠΉ Π°ΡΡΠ΅ΡΠΎΠΈΠ΄ Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ, ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΌ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΠ»ΠΈΡΡΡΠ²Π°ΡΡ ΡΡΠ΅ΠΉΠΌΡ ΡΠΏΡΠ°ΠΉΡΠ° Π² ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄ΡΡΠ³ΠΈΡ . ΠΡΡΠ°Π²ΡΠ°ΡΡΡ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π° Π² ΡΠΈΠΊΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π°ΡΡΠ΅ΡΠΎΠΈΠ΄ΠΎΠ² ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΈΡ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ Ρ ΠΠΠ:
if (ufoSprite.collidesWith(roidSprite[i], true)) {
// Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡΠΈΠΉ Π·Π²ΡΠΊ
AlertType.ERROR.playSound(display);
// Π²Π΅ΡΠ½ΡΡΡ ΡΠΏΡΠ°ΠΉΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Π½ΡΠ»ΠΈΡΡ ΡΠΊΠΎΡΠΎΡΡΠΈ
ufoSprite.setPosition((getWidth() β ufoSprite.getWidth()) / 2, //Π‘ΠΏΡΠ°ΠΉΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ΅Π½ΡΡΠ΅ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΊΡΠ°Π½Π°, Π΅Π³ΠΎ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π²Π½Π° 0
(getHeight() β ufoSprite.getHeight()) / 2);
ufoXSpeed = ufoYSpeed = 0;
for (int j = 0; j < 3; j++)
roidSprite[j].setPosition(0, 0);
// Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΡΠΏΡΠ°ΠΉΡΡ Π°ΡΡΠ΅ΡΠΎΠΈΠ΄ΠΎΠ²
break;
}
}ΠΡΠ»ΠΈ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ, ΡΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π·Π²ΡΠΊ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ (ΠΎΠ½ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ΅Π»Π΅ΡΠΎΠ½Π°), Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ AlertType. Π Π³Π»Π°Π²Π΅ 8 Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠ΅ Π·Π²ΡΠΊΠΈ Π² ΠΈΠ³ΡΠ°Ρ . Π ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡ ΠΠΠ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Π½ΡΠ»ΠΈΡ Π΅Π³ΠΎ ΡΠΊΠΎΡΠΎΡΡΡ. ΠΡΠ»ΠΈ Π±Ρ Π²Ρ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΡ ΠΈΠ³ΡΡ, ΡΠΎ Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ Π²Ρ Π±Ρ ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΠΈ ΡΠΈΡΠ»ΠΎ ΠΆΠΈΠ·Π½Π΅ΠΉ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ»ΠΈ, Π½Π΅ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π° Π»ΠΈ ΠΈΠ³ΡΠ°. ΠΠΎ Π² ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π²Ρ ΠΏΡΠΎΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΏΡΠ°ΠΉΡΠΎΠ², ΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ. ΠΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΌΠΈΠ΄Π»Π΅ΡΠΎΠΌ UFO Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ draw() Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ β ΠΊΠΎΠ΄, ΡΠΈΡΡΡΡΠΈΠΉ Π°ΡΡΠ΅ΡΠΎΠΈΠ΄Ρ:
for (int i = 0; i < 3; i++) roidSprite[i].paint(g);
ΠΠ° ΡΡΠΎΠΌ Π²Π΅ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄ ΠΌΠΈΠ΄Π»Π΅ΡΠ° UFO 2 Π·Π°Π²Π΅ΡΡΠ΅Π½. Π Π»ΠΈΡΡΠΈΠ½Π³Π΅ 6.1 ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ΄ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° UFOCanvas. ΠΠΈΡΡΠΈΠ½Π³ 6.1. ΠΠ»Π°ΡΡ UFOCanvas, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΉ ΡΠΎΠ»Ρ Ρ ΠΎΠ»ΡΡΠ° Π΄Π»Ρ ΠΌΠΈΠ΄Π»Π΅ΡΠ° UFO 2
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import java.util.*;
import java.io.*;
public class UFOCanvas extends GameCanvas implements Runnable {
private Display display;
private boolean sleeping;
private long frameDelay;
private Random rand;
private Sprite ufoSprite;
private int ufoXSpeed, ufoYSpeed;
private Sprite[] roidSprite = new Sprite[3]; //Π ΠΈΠ³ΡΠ΅ UFO 2 Π΅ΡΡΡ 3 ΡΠΏΡΠ°ΠΉΡΠ° Π°ΡΡΠ΅ΡΠΎΠΈΠ΄Π°
public UFOCanvas(Display d) {
super(true);
display = d;
// ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ°ΡΡΠΎΡΡ ΠΊΠ°Π΄ΡΠΎΠ² (30 fps)
frameDelay = 33;
}
public void start() {
// ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Ρ ΠΎΠ»ΡΡ ΠΊΠ°ΠΊ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠΊΡΠ°Π½
display.setCurrent(this);
// ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π»
rand = new Random();
// ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΡΠ°ΠΉΡΡ ΠΠΠ ΠΈ Π°ΡΡΠ΅ΡΠΎΠΈΠ΄ΠΎΠ²
ufoXSpeed = ufoYSpeed = 0;
try {
ufoSprite = new Sprite(Image.createImage("/Saucer.png"));
ufoSprite.setPosition((getWidth() β ufoSprite.getWidth()) / 2,
(getHeight() β ufoSprite.getHeight()) / 2);
Image img = Image.createImage("/Roid.png");
roidSprite[0] = new Sprite(img, 42, 35);
roidSprite[1] = new Sprite(img, 42, 35);
roidSprite[2] = new Sprite(img, 42, 35);
}
catch (IOException e) {
System.err.println("Failed loading images!");
}
// Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΠΎΡΠΎΠΊ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ
sleeping = false;
Thread t = new Thread(this);
t.start();
}
public void stop() {
// ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ
sleeping = true;
}
public void run() {
Graphics g = getGraphics();
// ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΠΊΠ»
while (!sleeping) {
update();
draw(g);
try {
Thread.sleep(frameDelay);
}
catch (InterruptedException ie) {}
}
}
private void update() {
// ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΠΠ
int keyState = getKeyStates();
if ((keyState & LEFT_PRESSED) != 0) //ΠΠ»Π°Π²ΠΈΡΠΈ ΡΠΎ ΡΡΡΠ΅Π»ΠΊΠ°ΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΠΠΠ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΡΠ΅ΡΡΡΠ΅ΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌ
ufoXSpeedβ;
else if ((keyState & RIGHT_PRESSED) != 0)
ufoXSpeed++;
if ((keyState & UP_PRESSED) != 0)
ufoYSpeedβ;
else if ((keyState & DOWN_PRESSED) != 0)
ufoYSpeed++;
ufoXSpeed = Math.min(Math.max(ufoXSpeed, -8), 8);
ufoYSpeed = Math.min(Math.max(ufoYSpeed, -8), 8);
// ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΡΠΏΡΠ°ΠΉΡ ΠΠΠ
ufoSprite.move(ufoXSpeed, ufoYSpeed);
checkBounds(ufoSprite);
// ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠΏΡΠ°ΠΉΡΡ Π°ΡΡΠ΅ΡΠΎΠΈΠ΄ΠΎΠ²
for (int i = 0; i < 3; i++) {
// ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΡΠΏΡΠ°ΠΉΡΡ Π°ΡΡΠ΅ΡΠΎΠΈΠ΄ΠΎΠ²
roidSprite[i].move(i + 1, 1 β i);
checkBounds(roidSprite[i]); //ΠΡΠ° ΡΡΡΠΎΠΊΠ° ΠΊΠΎΠ΄Π° ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ Π°ΡΡΠ΅ΡΠΎΠΈΠ΄Π° ΠΏΡΠΈ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ Π³ΡΠ°Π½ΠΈΡ ΡΠΊΡΠ°Π½Π°
// ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠΉ ΡΡΠ΅ΠΉΠΌ Π°ΡΡΠ΅ΡΠΎΠΈΠ΄Π°
if (i == 1) //ΠΠ½Π΄Π΅ΠΊΡ Π°ΡΡΠ΅ΡΠΎΠΈΠ΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ
roidSprite[i].prevFrame();
else
roidSprite[i].nextFrame();
// ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΠΠ Ρ Π°ΡΡΠ΅ΡΠΎΠΈΠ΄ΠΎΠΌ
if (ufoSprite.collidesWith(roidSprite[i], true)) { //ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° collidesWith() ΡΠ°Π²Π΅Π½ true, ΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΈΠΊΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ
// Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡΠΈΠΉ Π·Π²ΡΠΊ
AlertType.ERROR.playSound(display);
// Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
ufoSprite.setPosition((getWidth() β ufoSprite.getWidth()) / 2,
(getHeight() β ufoSprite.getHeight()) / 2);
ufoXSpeed = ufoYSpeed = 0;
for (int j = 0; j < 3; j++)
roidSprite[j].setPosition(0, 0);
// Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΡΠΏΡΠ°ΠΉΡΡ Π°ΡΡΠ΅ΡΠΎΠΈΠ΄ΠΎΠ²
break;
}
}
}
private void draw(Graphics g) {
// Clear the display
g.setColor(0x000000);
g.fillRect(0, 0, getWidth(), getHeight());
// Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΡΠ°ΠΉΡ ΠΠΠ
ufoSprite.paint(g);
// Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΡΠ°ΠΉΡΡ Π°ΡΡΠ΅ΡΠΎΠΈΠ΄ΠΎΠ²
for (int i = 0; i < 3; i++)
roidSprite[i].paint(g);
// ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π±ΡΡΠ΅ΡΠ° Π½Π° ΡΠΊΡΠ°Π½Π΅
flushGraphics();
}
private void checkBounds(Sprite sprite) {
// ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΏΡΠ°ΠΉΡΠ°
if (sprite.getX() < -sprite.getWidth())
sprite.setPosition(getWidth(), sprite.getY());
else if (sprite.getX() > getWidth())
sprite.setPosition(-sprite.getWidth(), sprite.getY());
if (sprite.getY() < -sprite.getHeight())
sprite.setPosition(sprite.getX(), getHeight());
else if (sprite.getY() > getHeight())
sprite.setPosition(sprite.getX(), -sprite.getHeight());
}
}ΠΡ ΡΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΡΠΎΠ½ΠΊΠΎΡΡΡΠΌΠΈ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΈΠ·Π±Π°Π²Π»Ρ Π²Π°Ρ ΠΎΡ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΡ ΡΠ°ΡΡΡΠΆΠ΄Π΅Π½ΠΈΠΉ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΈΠ΄Π»Π΅Ρ UFO 2 Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π΅Π΅, ΡΠ΅ΠΌ Π²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π»Π΅ΡΠ°ΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ. ΠΠ° ΡΠΈΡ. 6.4 ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΌΠΈΠ΄Π»Π΅Ρ UFO 2.
Π ΠΈΡ. 6.4. Π ΠΌΠΈΠ΄Π»Π΅ΡΠ΅ UFO 2 Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π»Π΅ΡΠ°ΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΈ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ Π°ΡΡΠ΅ΡΠΎΠΈΠ΄Π°ΠΌΠΈ
ΠΠ΅ΡΡΡΠ΄Π½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΎΡΠ³ΠΎΠ»ΠΎΡΠΊΠΈ ΠΈΠ³ΡΡ Π²ΡΠΎΠ΄Π΅ Asteroids. ΠΠΎΠΈΠ³ΡΠ°ΠΉΡΠ΅ Π² ΠΈΠ³ΡΡ, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΠΊΠ°ΠΊ Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΡΡΡΡΡ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ. Π£Π΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΠΊΠ°ΠΊ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΡΡ ΡΠΎΡΠ½ΠΎΡΡΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΠΎ ΠΎΠ³ΠΈΠ±Π°ΡΡ Π°ΡΡΠ΅ΡΠΎΠΈΠ΄Ρ Π½Π° ΠΎΡΠ΅Π½Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΡΡ .
Π Π΅Π·ΡΠΌΠ΅
ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈΠ³ΡΠΎΠΊΠ° Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ β ΡΡΠΎ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°ΠΊΡΠΎΡ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈΠ³Ρ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π±ΡΠ» ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΡΠ»Π° ΡΠ΅ΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π²Π²ΠΎΠ΄ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° β ΡΡΠΎ ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΡΠΏΡΠ°ΠΉΡΠΎΠ² ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ΅ΠΉΠΌΠΎΠ²ΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ. Π₯ΠΎΡΡ, Π½Π΅ΡΠΎΠΌΠ½Π΅Π½Π½ΠΎ, ΠΏΡΠΈΠΌΠ΅Ρ UFO 2, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»ΡΡΡΠΈΡΡ, ΠΎΠ½ ΡΠΎΡΠ΅ΡΠ°Π΅Ρ Π² ΡΠ΅Π±Π΅ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΈΠ³ΡΡ.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅ Π²Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΠΊΡΠ½Π΅ΡΠ΅ΡΡ Π² ΠΌΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΈΠ³Ρ ΠΈ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ ΠΏΠ΅ΡΠ²ΡΡ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΈΠ³ΡΡ Henway, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΡΡ Π°ΡΠΊΠ°Π΄Ρ Frogger.
ΠΡΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ± ΠΈΠ³ΡΠ°Ρ
ΠΠΎΡΠ° ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΡΠ΅Π°ΡΠΈΠ²Π½ΠΎΠ΅! Π― Ρ ΠΎΡΡ, ΡΡΠΎΠ±Ρ Π²Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠΏΡΠ°ΠΉΡ Π² ΠΌΠΈΠ΄Π»Π΅Ρ UFO 2. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΏΡΡΠ½ΠΈΠΊ, ΡΡΡΠ°Π½Π½ΡΠΉ ΠΏΡΠΈΡΠ΅Π»Π΅Ρ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ΅ΡΠ°, Π±ΠΎΡΠΎΠ·Π΄ΡΡΠ°Ρ ΠΊΠΎΡΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΎΡΡΠΎΡΡ, β Π²ΡΠ΅, ΡΡΠΎ Π·Π°Ρ ΠΎΡΠΈΡΠ΅. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΎ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ: