private void checkBounds() {
// ΡΠΏΡΡΡΠ°ΡΡ ΡΠΏΡΠ°ΠΉΡ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ
if (action == BA_HIDE) { //Π‘ΠΏΡΡΡΠ°ΡΡ ΡΠΏΡΠ°ΠΉΡ ΠΏΡΠΈ ΡΠ΄Π°ΡΠ΅Π½ΠΈΠΈ ΠΎ Π³ΡΠ°Π½ΠΈΡΡ ΡΠΊΡΠ°Π½Π°
if (getX() < 0 || getX() > (canvas.getWidth() β getWidth()) ||
getY() < 0 || getY() > (canvas.getHeight() β getHeight()))
setVisible(false);
}
// ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΡΠΏΡΠ°ΠΉΡ ΠΊ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΌΡ ΠΊΡΠ°Ρ ΡΠΊΡΠ°Π½Π°
else if (action == BA_WRAP) { //ΠΡΠΈ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ Π³ΡΠ°Π½ΠΈΡΡ ΡΠΊΡΠ°Π½Π° ΡΠΏΡΠ°ΠΉΡΠΎΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΡΠΏΡΠ°ΠΉΡ ΠΊ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΌΡ ΠΊΡΠ°Ρ
//Wrap the sprite around the edges of the screen
if (getX() < -getWidth())
setPosition(canvas.getWidth(), getY());
else if (getX() > canvas.getWidth())
setPosition(-getWidth(), getY());
if (getY() < -getHeight())
setPosition(getX(), canvas.getHeight());
else if (getY() > canvas.getHeight())
setPosition(getX(), -getHeight());
}
// ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΡΠΏΡΠ°ΠΉΡΠ° Π½Π° ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅
else if (action == BA_BOUNCE) { //ΠΡΠΈ ΡΠ΄Π°ΡΠ΅Π½ΠΈΠΈ ΡΠΏΡΠ°ΠΉΡΠ° ΠΎ Π³ΡΠ°Π½ΠΈΡΡ ΡΠΊΡΠ°Π½Π° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ ΡΠΊΠΎΡΠΎΡΡΠΈ Π½Π° ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅
// Bounce the sprite at the edges of the screen
if (getX() < 0 || getX() > (canvas.getWidth() β getWidth()))
xSpeed = -xSpeed;
if (getY() < 0 || getY() > (canvas.getHeight() β getHeight()))
ySpeed = -ySpeed;
}
// ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΏΡΠ°ΠΉΡ
else { //ΠΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΏΡΠ°ΠΉΡ ΠΏΠΎ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ Π³ΡΠ°Π½ΠΈΡΡ ΡΠΊΡΠ°Π½Π°
if (getX() < 0)
setPosition(0, getY());
else if (getX() > (canvas.getWidth() β getWidth()))
setPosition(canvas.getWidth() β getWidth(), getY());
if (getY() < 0)
setPosition(getX(), 0);
else if (getY() > (canvas.getHeight() β getHeight()))
setPosition(getX(), canvas.getHeight() β getHeight());
}
}ΠΠ΅ΡΠΎΠ΄ checkBounds() β ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Ρ Π»ΠΎΡΠ°Π΄ΠΊΠ° ΠΊΠ»Π°ΡΡΠ° MovingSprite. ΠΠ³ΠΎ ΡΠ΅Π»ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΡΠΏΡΠ°ΠΉΡΠ° Ρ Π³ΡΠ°Π½ΠΈΡΠ΅ΠΉ ΡΠΊΡΠ°Π½Π° ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΡΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ. Π‘Π½Π°ΡΠ°Π»Π° ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π½ΡΠΆΠ½ΠΎ Π»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ BA_HIDE, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠΎΠΊΡΡΡΠΈΡ ΡΠΏΡΠ°ΠΉΡΠ°. ΠΠ°ΡΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ΅ BA_WRAP, ΠΈ ΠΏΡΠΈ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΡΠΏΡΠ°ΠΉΡΠ° Ρ Π³ΡΠ°Π½ΠΈΡΠ΅ΠΉ ΡΠΊΡΠ°Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΡΠΏΡΠ°ΠΉΡ ΠΊ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΉ Π³ΡΠ°Π½ΠΈΡΠ΅. ΠΠΎΠ½ΡΡΠ°Π½ΡΠ° BA_BOUNCE ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΠΊΠΈΠ²Π°Π½ΠΈΡ ΡΠΏΡΠ°ΠΉΡΠ° ΠΎΡ Π³ΡΠ°Π½ΠΈΡΡ ΡΠΊΡΠ°Π½Π°. Π Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π±Π»ΠΎΠΊ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° checkBounds() ΠΏΡΠΎΡΡΠΎ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠΏΡΠ°ΠΉΡ ΠΏΠΎ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΈΠΌ Π³ΡΠ°Π½ΠΈΡΡ ΡΠΊΡΠ°Π½Π°. Π ΠΊΠ»Π°ΡΡΠ΅ MovingSprite Π΅ΡΡΡ ΡΡΠ΄ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²Ρ Π΅ΡΠ΅ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΎΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΊΠΎΡΠΎΡΡΠ΅ΠΉ ΠΏΠΎ ΠΎΡΡΠΌ X ΠΈ Y:
public int getXSpeed() {
return xSpeed;
}
public int getYSpeed() {
return ySpeed;
}
public void setXSpeed(int xMoveSpeed) {
xSpeed = xMoveSpeed;
}
public void setYSpeed(int yMoveSpeed) {
ySpeed = yMoveSpeed;
}ΠΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ xSpeed ΠΈ ySpeed. ΠΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ MovingSprite Π³ΠΎΡΠΎΠ² ΠΊ ΡΠ°Π±ΠΎΡΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΡΠ°ΠΌΠΎΠΉ ΠΈΠ³ΡΡ Space Out. ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΊΠ»Π°ΡΡΠ°.
ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΊΠ»Π°ΡΡΠ°
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ³ΡΡ Space Out ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ Ρ ΠΎΠ»ΡΡΠ° β SOCanvas. ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Π²ΡΡ ΠΈΠ³ΡΠΎΠ²ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ SOCanvas Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²Π΅Π»ΠΈΠΊ, Ρ ΡΠ°Π·Π±ΠΈΠ» Π΅Π³ΠΎ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ, ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½Π° ΠΏΡΠΈΠ»Π°Π³Π°Π΅ΠΌΠΎΠΌ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ΅. ΠΠΈΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅:
private LayerManager layers;
private Image background;
private Image smallCar;
private MovingSprite playerSprite;
private MovingSprite[] blobboSprite = new MovingSprite[3];
private MovingSprite[] jellySprite = new MovingSprite[3];
private MovingSprite[] timmySprite = new MovingSprite[3];
private MovingSprite[] missileSprite = new MovingSprite[10];
private Sprite[] explosionSprite = new Sprite[3]; //Π‘ΠΏΡΠ°ΠΉΡΡ Π²Π·ΡΡΠ²ΠΎΠ² Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ ΡΠΎΠ·Π΄Π°ΡΡΡΡ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠ΅ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΏΡΠ°ΠΉΡΡ
private Player musicPlayer;
private Player explosionPlayer;
private Player gameoverPlayer;
private boolean gameOver;
private int score, carsLeft;ΠΠ΅ΡΠ²ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΡΠ»ΠΎΠ΅Π², ΡΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΈΠ³ΡΠΎΠ²ΡΡ ΡΠΏΡΠ°ΠΉΡΠΎΠ². ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ background β ΡΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΡΡΡΠ½ΠΈ ΠΈ Π½Π΅Π±Π°, Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΎΠ³ΠΎ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΈΡΠ»Π° ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ ΠΆΠΈΠ·Π½Π΅ΠΉ. Π‘ΠΏΡΠ°ΠΉΡΠΎΠ²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΎΡΠΎΠ±ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ. ΠΠ½ΠΈ ΠΎΡΡΠ°ΠΆΠ°ΡΡ ΡΡΡΠ½ΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ³ΡΡ Space Out: ΡΠΏΡΠ°ΠΉΡΡ Π½Π΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΈ Π½Π΅ ΡΠ½ΠΈΡΡΠΎΠΆΠ°ΡΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΠ³ΡΡ.
Π ΠΈΠ³ΡΠ΅ Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠΏΡΠ°ΠΉΡΠΎΠ², ΠΊΠ°ΠΊ Π²Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ. ΠΠ°ΠΎΠ±ΠΎΡΠΎΡ, Π²ΡΠ΅ ΡΠΏΡΠ°ΠΉΡΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΈΠ³ΡΡ. ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΏΡΠ°ΠΉΡΡ ΡΠΊΡΡΠ²Π°ΡΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΏΡΠΈΡΠ΅Π»Π΅Ρ ΠΏΠΎΠ΄Π±ΠΈΡ ΡΠ°ΠΊΠ΅ΡΠΎΠΉ, ΡΠΎ ΠΎΠ±Π° ΡΠΏΡΠ°ΠΉΡΠ° ΡΠΊΡΡΠ²Π°ΡΡΡΡ, Π° Π½Π΅ ΡΠ½ΠΈΡΡΠΎΠΆΠ°ΡΡΡΡ. ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Π² ΠΈΠ³ΡΠ΅ Π΅ΡΡΡ ΠΏΠΎ ΡΡΠΈ ΡΠΏΡΠ°ΠΉΡΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΡΠΈΡΠ΅Π»ΡΡΠ΅Π², Π΄Π΅ΡΡΡΡ ΡΠ°ΠΊΠ΅Ρ ΠΈ ΡΡΠΈ Π²Π·ΡΡΠ²Π°.
ΠΠ°Π»Π΅Π΅ ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ»Π°ΡΡΠ° Player, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΡΠ·ΡΠΊΠΎΠΉ Π² ΠΈΠ³ΡΠ΅. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈΠ³ΡΡ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ gameOver, score ΠΈ carsLeft.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° start()
ΠΠ΅ΡΠΎΠ΄ start() Π² ΠΈΠ³ΡΠ΅ Space Out ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ΅Π½, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π·Π²Π΅Π·Π΄Π½ΠΎΠ΅ Π½ΠΎΡΠ½ΠΎΠ΅ ΡΠΎΠ½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΎΠ³ΠΎ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ:try {
background = Image.createImage("/StarryNight.png");
smallCar = Image.createImage("/SmallCar.png");
}
catch (IOException e) {
System.err.println("Failed loading images!");
}ΠΠΎΠ³Π΄Π° ΡΡΠΈ Π΄Π²Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΠΈΠ³ΡΠΎΠ²ΡΠΌ ΡΠΏΡΠ°ΠΉΡΠ°ΠΌ. ΠΡΠ»ΠΈ Π²Ρ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΠΎ Π² ΠΈΠ³ΡΠ΅ Π΅ΡΡΡ ΡΠΏΡΠ°ΠΉΡ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΈΠ³ΡΠΎΠΊΠΎΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΡΠ°ΠΉΡΠΎΠ² ΡΠ°ΠΊΠ΅Ρ, ΠΏΡΠΈΡΠ΅Π»ΡΡΠ΅Π² ΠΈ Π²Π·ΡΡΠ²ΠΎΠ². ΠΡΠ΅ ΡΡΠΈ ΡΠΏΡΠ°ΠΉΡΡ, ΠΊΡΠΎΠΌΠ΅ ΡΠΏΡΠ°ΠΉΡΠ° Π²Π·ΡΡΠ²Π°, β ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ»Π°ΡΡΠ° MovingSprite; ΡΠΏΡΠ°ΠΉΡ Π²Π·ΡΡΠ²Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Sprite, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ΅Π½. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄, ΡΠΎΠ·Π΄Π°ΡΡΠΈΠΉ Π²ΡΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΡΠΏΡΠ°ΠΉΡΡ:
try {
// ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΏΡΠ°ΠΉΡ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ ΠΈΠ³ΡΠΎΠΊΠ°
playerSprite = new MovingSprite(Image.createImage("/Car.png"), 0, 0,
MovingSprite.BA_STOP, this); //Π‘ΠΏΡΠ°ΠΉΡ ΠΈΠ³ΡΠΎΠΊΠ° ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ Π³ΡΠ°Π½ΠΈΡΡ ΡΠΊΡΠ°Π½Π°
int sequence5[] = { 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 4, 4, 3, 3, 2, 2, 1, 1 }; //ΠΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ ΡΡΠ΅ΠΉΠΌΠΎΠ² ΡΠΏΡΠ°ΠΉΡΠΎΠ²
}
int sequence3[] = { 0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1 };
for (int i = 0; i < 3; i++) {
// ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΏΡΠ°ΠΉΡ ΠΏΡΠΈΡΠ΅Π»ΡΡΠ° ΠΠ»ΠΎΠ±Π±ΠΎ
blobboSprite[i] = new MovingSprite(Image.createImage("/Blobbo.png"), 20, 21, 3, 2,
MovingSprite.BA_BOUNCE, this); //Π‘ΠΏΡΠ°ΠΉΡ ΠΏΡΠΈΡΠ΅Π»ΡΡΠ° ΠΠ»ΠΎΠ±Π±ΠΎ ΠΎΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΡΡΡ ΠΎΡ Π³ΡΠ°Π½ΠΈΡΡ ΡΠΊΡΠ°Π½Π°
blobboSprite[i].setFrameSequence(sequence5);
blobboSprite[i].setVisible(false);
// Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠΏΡΠ°ΠΉΡ ΠΏΡΠΈΡΠ΅Π»ΡΡΠ° ΠΠΆΠ΅Π»Π»ΠΈ
jellySprite[i] = new MovingSprite(Image.createImage("/Jelly.png"), 21, 21, 1, 4,
MovingSprite.BA_BOUNCE, this); //Π‘ΠΏΡΠ°ΠΉΡ ΠΏΡΠΈΡΠ΅Π»ΡΡΠ° ΠΠΆΠ΅Π»Π»ΠΈ ΠΎΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΡΡΡ ΠΎΡ Π³ΡΠ°Π½ΠΈΡΡ ΡΠΊΡΠ°Π½Π°
jellySprite[i].setFrameSequence(sequence3);
jellySprite[i].setVisible(false);
// Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠΏΡΠ°ΠΉΡ ΠΏΡΠΈΡΠ΅Π»ΡΡΠ° Π’ΠΈΠΌΠΌΠΈ
timmySprite[i] = new MovingSprite(Image.createImage("/Timmy.png"), 21, 11, 5, 0,
MovingSprite.BA_WRAP, this); //ΠΡΠ»ΠΈ ΡΠΏΡΠ°ΠΉΡ ΠΏΡΠΈΡΠ΅Π»ΡΡΠ° Π’ΠΈΠΌΠΌΠΈ Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ Π³ΡΠ°Π½ΠΈΡΡ ΡΠΊΡΠ°Π½Π°, ΡΠΎ ΠΎΠ½ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΉ Π³ΡΠ°Π½ΠΈΡΡ
timmySprite[i].setFrameSequence(sequence3);
timmySprite[i].setVisible(false);
// Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠΏΡΠ°ΠΉΡΡ Π²Π·ΡΡΠ²ΠΎΠ²
explosionSprite[i] = new Sprite(Image.createImage("/Explosion.png"), 21, 21);
explosionSprite[i].setVisible(false);
}
// ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΏΡΠ°ΠΉΡΡ ΡΠ°ΠΊΠ΅Ρ
for (int i = 0; i < 10; i++) {
missileSprite[i] = new MovingSprite(Image.createImage("/Missiles.png"),
11, 11, 0, 0,MovingSprite.BA_HIDE, this);
missileSprite[i].setVisible(false); //ΠΡΠ΅ ΡΠΏΡΠ°ΠΉΡΡ Π² ΠΈΠ³ΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° ΡΠΊΡΡΡΡ
}
}
catch (IOException e) {
System.err.println("Failed loading images!");
}Π‘ΠΏΡΠ°ΠΉΡ ΠΈΠ³ΡΠΎΠΊΠ° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° MovingSprite Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΠΏΡΠ°ΠΉΡΠΎΠΌ Π³ΡΠ°Π½ΠΈΡΡ ΡΠΊΡΠ°Π½Π°. ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΏΡΠ°ΠΉΡΡ β ΡΡΠΎ ΡΠ°ΠΊΠΆΠ΅ Π΄Π²ΠΈΠΆΡΡΠΈΠ΅ΡΡ ΡΠΏΡΠ°ΠΉΡΡ, Π½ΠΎ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΊΠΎΡΠΎΡΡΡΠΌΠΈ ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌΠΈ ΠΏΠΎ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ Π³ΡΠ°Π½ΠΈΡΡ ΡΠΊΡΠ°Π½Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΡΠ΅Π»ΡΡΠ° Jelly ΠΏΠΎ ΠΎΡΠΈ Π₯ ΡΠ°Π²Π½Π° 1, Π° ΠΏΠΎ ΠΎΡΠΈ Y β 4, Π° ΡΠΊΠΎΡΠΎΡΡΡ ΡΠΏΡΠ°ΠΉΡΠ° ΠΏΡΠΈΡΠ΅Π»ΡΡΠ° Timmy ΠΏΠΎ ΠΎΡΠΈ X ΡΠ°Π²Π½Π° 5, Π° ΠΏΠΎ ΠΎΡΠΈ Y β 0. Π‘ΠΏΡΠ°ΠΉΡΡ ΠΏΡΠΈΡΠ΅Π»ΡΡΠ΅Π² Blobbo ΠΈ Jelly ΠΎΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ ΠΎΡ Π³ΡΠ°Π½ΠΈΡ ΡΠΊΡΠ°Π½Π°, ΡΠΏΡΠ°ΠΉΡ Timmy ΠΏΡΠΈ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ Π³ΡΠ°Π½ΠΈΡΡ ΡΠΊΡΠ°Π½Π° ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π° ΡΠΏΡΠ°ΠΉΡΡ ΡΠ°ΠΊΠ΅Ρ ΡΠΊΡΡΠ²Π°ΡΡΡΡ ΠΏΠΎ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ Π³ΡΠ°Π½ΠΈΡΡ ΡΠΊΡΠ°Π½Π°. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π² ΠΈΠ³ΡΠ΅ Π΅ΡΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠΏΡΠ°ΠΉΡ β ΡΠΏΡΠ°ΠΉΡ Π²Π·ΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΡΠ°Π΅ΡΡΡ Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½ΡΠΌ. ΠΡΠ΅ ΡΠΏΡΠ°ΠΉΡΡ Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΏΡΠ°ΠΉΡΠ° ΠΈΠ³ΡΠΎΠΊΠ° ΡΠΊΡΡΠ²Π°ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΡΠ°Π»ΠΎΠΌ ΠΈΠ³ΡΡ. ΠΠ°ΡΠ΅ΠΌ ΡΠΏΡΠ°ΠΉΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π² ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΡΠ»ΠΎΠ΅Π², ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΡΡΡ ΠΈ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΠΏΡΠ°ΠΉΡΠΎΠ². ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠΌ ΡΠ»ΠΎΠ΅Π²:
layers = new LayerManager();
layers.append(playerSprite);
for (int i = 0; i < 3; i++) {
layers.append(blobboSprite[i]);
layers.append(jellySprite[i]);
layers.append(timmySprite[i]);
layers.append(explosionSprite[i]);
}
for (int i = 0; i < 10; i++) {
layers.append(missileSprite[i]);
}ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ Π² ΠΈΠ³ΡΠ΅ Space Out ΡΡΠΎ Π½Π΅ ΡΡΠΎΠ»Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ, Π½Π΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅, ΡΡΠΎ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠΏΡΠ°ΠΉΡΠΎΠ² Π² ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΡΠ»ΠΎΠ΅Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π²ΡΠ²ΠΎΠ΄Π° ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½, Z-Π³Π»ΡΠ±ΠΈΠ½Ρ, β ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΏΡΠ°ΠΉΡ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° append(), Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½ Π½Π° ΡΠΊΡΠ°Π½ ΠΏΠΎΠ²Π΅ΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ . ΠΠΎ ΡΡΠΎ Π½Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΈΠ³ΡΠ΅ Space Out, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΏΡΠ°ΠΉΡΠΎΠ² Π½Π° ΡΠΊΡΠ°Π½ Π² Π½Π΅ΠΉ Π½Π΅ Π²Π°ΠΆΠ΅Π½. ΠΠ²ΡΠΊΠΎΠ²ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ ΠΈ ΠΌΡΠ·ΡΠΊΠ° ΠΈΠ³ΡΠ°ΡΡ Π²Π°ΠΆΠ½ΡΡ ΡΠΎΠ»Ρ Π² ΠΈΠ³ΡΠ΅ Space Out, ΡΡΠΎ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π½Π΅ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°ΡΠ΅Π»Π΅ΠΉ:
try {
InputStream is = getClass().getResourceAsStream("Music.mid");
musicPlayer = Manager.createPlayer(is, "audio/midi");
musicPlayer.prefetch();
musicPlayer.setLoopCount(-1);
is = getClass().getResourceAsStream("Explosion.wav");
explosionPlayer = Manager.createPlayer(is, "audio/X-wav");
explosionPlayer.prefetch();
is = getClass().getResourceAsStream("GameOver.wav");
gameoverPlayer = Manager.createPlayer(is, "audio/X-wav");
gameoverPlayer.prefetch();
}
catch (IOException ioe) {
}
catch (MediaException me) {
}ΠΠ· ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°Π½ΠΈΡ ΠΌΡΠ·ΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°ΡΠ΅Π»Ρ MIDI-Π°ΡΠ΄ΠΈΠΎ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π²Π° ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°ΡΠ΅Π»Ρ Π΄Π»Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΈΠ³ΡΠΎΠ²ΡΡ Π·Π²ΡΠΊΠΎΠ²ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ² (Π·Π²ΡΠΊΠΈ Π²Π·ΡΡΠ²Π° ΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΈΠ³ΡΡ). ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΌΠ΅ΡΠΎΠ΄Π° start() β ΡΡΠΎ Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π°, Π½Π°ΡΠΈΠ½Π°ΡΡΠ΅Π³ΠΎ ΠΈΠ³ΡΡ:
newGame();
Π§ΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅ Π²Ρ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΠ΅ΡΡ Ρ ΡΠ°Π±ΠΎΡΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄Π° newGame(). Π ΠΏΠΎΠΊΠ° Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ update() β ΡΠ΅ΡΠ΄ΡΠ΅ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΈΠ³ΡΠΎΠ²ΡΡ ΠΌΠΈΠ΄Π»Π΅ΡΠΎΠ², Π²ΠΊΠ»ΡΡΠ°Ρ Space Out.
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΌΠ΅ΡΠΎΠ΄Π° update()
ΠΠ΅ΡΠΎΠ΄ update() Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π·Π° ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΠΊΠ» ΠΈ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°, ΠΎΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΡΠ°ΠΉΡΠΎΠ², ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΠΏΡΠΈΡΠ΅Π»ΡΡΠ΅Π², Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΈΠ³ΡΡ. ΠΠ΅ΡΠΎΠ΄ update() Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΈΠ³ΡΡ, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΡΠ°ΠΊ, ΡΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π½ΠΎΠ²Π°Ρ ΠΈΠ³ΡΠ° Π½Π°ΠΆΠ°ΡΠΈΠ΅ΠΌ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΠΠ³ΠΎΠ½Ρ.