private TiledLayer landLayer;
private int waterDelay;
private int[] waterTile = { 1, 3 }; //Π ΡΠ»ΠΎΠ΅ Π²ΠΎΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π²Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
private Image infoBar;
private Sprite playerSprite;
private DriftSprite[] pirateSprite = new DriftSprite[2];
private DriftSprite[] barrelSprite = new DriftSprite[2];
private DriftSprite[] mineSprite = new DriftSprite[5];
private DriftSprite[] squidSprite = new DriftSprite[5];
private Player musicPlayer;
private Player rescuePlayer;
private Player minePlayer;
private Player gameoverPlayer;
private boolean gameOver;
private int energy, piratesSaved;ΠΠ΅ΡΠ²ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΡΠ»ΠΎΠ΅Π², ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠΊΠ½Π° Π²ΠΈΠ΄Π°, ΡΠ»ΠΎΡ Π²ΠΎΠ΄Ρ ΠΈ ΡΠ»ΠΎΡ ΡΡΡΠΈ. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ waterDelay ΠΈ waterTile ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ Π²ΠΎΠ΄Ρ Π² Π·Π°ΠΌΠΎΡΠ΅Π½Π½ΠΎΠΌ ΡΠ»ΠΎΠ΅ Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»ΠΎΡ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΠΈΠ³ΡΠ΅ Π΄Π²Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π²ΠΎΠ΄Ρ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ waterTile β ΡΡΠΎ ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π», ΡΠΎΡΡΠΎΡΡΠΈΠΉ ΠΈΠ· Π΄Π²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ infoBar Ρ ΡΠ°Π½ΠΈΡ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅ ΠΊΠ°ΠΊ ΡΠΎΠ½ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΡΠ½Π΅ΡΠ³ΠΈΡ ΠΊΠΎΡΠ°Π±Π»Ρ ΠΈ ΡΠΈΡΠ»ΠΎ ΡΠΏΠ°ΡΠ΅Π½Π½ΡΡ ΠΏΠΈΡΠ°ΡΠΎΠ². ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΡΠ°ΠΉΡΠΎΠ²: ΠΏΠΈΡΠ°ΡΡΠΊΠΈΠΉ ΠΊΠΎΡΠ°Π±Π»Ρ, Π΄Π²Π° ΠΏΠΈΡΠ°ΡΠ° ΠΈ ΠΏΠ°ΡΠ° Π±ΠΎΡΠ΅ΠΊ, ΠΏΡΡΡ ΠΌΠΈΠ½ ΠΈ ΠΏΡΡΡ ΠΎΡΡΠΌΠΈΠ½ΠΎΠ³ΠΎΠ². ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π² ΠΈΠ³ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΡΠΏΡΠ°ΠΉΡΡ. ΠΠΎΠ·ΠΆΠ΅ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΡΠ°ΠΉΡΡ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΠ»Π»ΡΠ·ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΈΡ ΡΠΈΡΠ»ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ»ΠΎΡΡ.
ΠΠ²ΡΠΊΠΎΠ²ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ ΠΈ ΠΌΡΠ·ΡΠΊΠ° Π² ΠΈΠ³ΡΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ° Player. Π Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈΠ³ΡΡ ΠΎΡΡΠ°ΠΆΠ°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ energy ΠΈ piratesSaved.
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΌΠ΅ΡΠΎΠ΄Π° start()
ΠΠ΅ΡΠΎΠ΄ start() Π² ΠΈΠ³ΡΠ΅ High Seas Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΊΠ»Π°ΡΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΌΠΎΡΠ΅Π½Π½ΡΠ΅ ΡΠ»ΠΎΠΈ Π²ΠΎΠ΄Ρ ΠΈ ΡΡΡΠΈ:try {
infoBar = Image.createImage("/InfoBar.png");
waterLayer = new TiledLayer(24, 24, Image.createImage("/Water.png"), 32, 32);
landLayer = new TiledLayer(24, 24, Image.createImage("/Land.png"), 32, 32);
}
catch (IOException e) {
System.err.println("Failed loading images!");
}ΠΡΠ»ΠΈ Π²Ρ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΠΎ Π² Π²ΠΎΠ΄Π½ΠΎΠΌ ΡΠ»ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π²Π° Π°Π½ΠΈΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΈΠΌΠΈΡΠΈΡΡΡΡΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ΄Ρ. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄, ΡΠΎΠ·Π΄Π°ΡΡΠΈΠΉ ΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ:
waterLayer.createAnimatedTile(1); waterLayer.createAnimatedTile(3);
ΠΠ²Π° Π°Π½ΠΈΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ (1 ΠΈ 3), ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ. ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΎ Π²Ρ Π½Π΅ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΠ°Π·Π½ΠΈΡΡ. Π’Π°ΠΊΠΆΠ΅ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ Π²Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Π²ΠΎΠ΄Π½ΡΠΉ ΡΠ»ΠΎΠΉ, ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π» waterMap, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΊΠ°ΡΡΡ ΡΠ»ΠΎΡ. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΠΈΠΉ Π·Π°ΠΌΠΎΡΠ΅Π½Π½ΡΠΉ ΡΠ»ΠΎΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°:
for (int i = 0; i < waterMap.length; i++) {
int column = i % 24;
int row = (i β column) / 24;
waterLayer.setCell(column, row, waterMap[i]);
}Π§ΡΠΎΠ±Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»ΠΎΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ waterDelay, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΡΡΠ΅ΡΡΠΈΠΊ, ΡΠ΅Π³ΡΠ»ΠΈΡΡΡΡΠΈΠΉ ΡΠΊΠΎΡΠΎΡΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ:
waterDelay = 0;
ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ Π²ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ»ΠΎΡ, ΡΠ»ΠΎΠΉ ΡΡΡΠΈ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΡΡΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² landMap, ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ ΡΠ°Π½Π΅Π΅. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ»ΠΎΡ ΡΡΡΠΈ:
for (int i = 0; i < landMap.length; i++) {
int column = i % 24;
int row = (i β column) / 24;
landLayer.setCell(column, row, landMap[i]);
}ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΠ»ΠΎΠΈ ΡΡΡΠΈ ΠΈ Π²ΠΎΠ΄Ρ Π±ΡΠ»ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠΏΡΠ°ΠΉΡΠ°ΠΌ. ΠΡΠ»ΠΈ Π²Ρ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΠ΅, Π² ΠΈΠ³ΡΠ΅ Π΅ΡΡΡ ΠΏΠΈΡΠ°ΡΡΠΊΠΈΠΉ ΠΊΠΎΡΠ°Π±Π»Ρ, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΈΠ³ΡΠΎΠΊΠΎΠΌ, Π΄Π²Π° ΠΏΠΈΡΠ°ΡΠ°, Π΄Π²Π΅ Π±ΠΎΡΠΊΠΈ, ΠΏΡΡΡ ΠΌΠΈΠ½ ΠΈ ΠΏΡΡΡ ΠΎΡΡΠΌΠΈΠ½ΠΎΠ³ΠΎΠ². Π‘ΠΏΡΠ°ΠΉΡ ΠΈΠ³ΡΠΎΠΊΠ° β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° Sprite, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΅ΠΌΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΡΠΎΠ±ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΏΡΠ°ΠΉΡΡ β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ»Π°ΡΡΠ° DriftSprite, Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΡΠ°Π½Π΅Π΅ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄, ΡΠΎΠ·Π΄Π°ΡΡΠΈΠΉ ΡΡΠΈ ΡΠΏΡΠ°ΠΉΡΡ:
try {
playerSprite = new Sprite(Image.createImage("/PlayerShip.png"), 43, 45);
int sequence2[] = { 0, 0, 0, 1, 1, 1 };
int sequence4[] = { 0, 0, 1, 1, 2, 2, 3, 3 };
for (int i = 0; i < 2; i++) {
pirateSprite[i] = new DriftSprite(Image.createImage("/Pirate.png"), //Π§Π΅ΡΠ²Π΅ΡΡΡΠΉ ΠΈ ΠΏΡΡΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° DriftSprite() β ΡΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠΏΡΠ°ΠΉΡΠ° ΠΈ ΡΠ»ΠΎΠΉ-Π±Π°ΡΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ
29, 29, 2, landLayer);
pirateSprite[i].setFrameSequence(sequence2);
placeSprite(pirateSprite[i], landLayer);
barrelSprite[i] = new DriftSprite(Image.createImage("/Barrel.png"),
24, 22, 1, landLayer);
barrelSprite[i].setFrameSequence(sequence4);
placeSprite(barrelSprite[i], landLayer); //ΠΠ΅ΡΠΎΠ΄ placeSprite () ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅Ρ ΡΠΏΡΠ°ΠΉΡ Π½Π° ΠΊΠ°ΡΡΠ΅
}
for (int i = 0; i < 5; i++) {
mineSprite[i] = new DriftSprite(Image.createImage("/Mine.png"),
27, 23, 1, landLayer);
mineSprite[i].setFrameSequence(sequence2);
placeSprite(mineSprite[i], landLayer);
squidSprite[i] = new DriftSprite(Image.createImage("/Squid.png"),
24, 35, 3, landLayer);
squidSprite[i].setFrameSequence(sequence2);
placeSprite(squidSprite[i], landLayer);
}
}
catch (IOException e) {
System.err.println("Failed loading images!");
}Π‘ΠΏΡΠ°ΠΉΡ ΠΈΠ³ΡΠΎΠΊΠ° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π² ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠ΅ΠΉΠΌΠ° ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ. ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΏΡΠ°ΠΉΡΡ β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ»Π°ΡΡΠ° DriftSprite, ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΏΡΠ°ΠΉΡΡ ΠΏΠΈΡΠ°ΡΠΎΠ² ΠΈΠΌΠ΅ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ 2, Π° ΡΠΏΡΠ°ΠΉΡΡ ΠΌΠΈΠ½ ΠΈ Π±ΠΎΡΠ΅ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ ΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡΡ 1. Π‘ΠΌΡΡΠ» Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΠ»Π°Π²Π°ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ Π±ΡΡΡΡΠ΅Π΅ Π±ΠΎΡΠ΅ΠΊ ΠΈ ΠΌΠΈΠ½, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΏΡΠΎΡΡΠΎ Π΄ΡΠ΅ΠΉΡΡΡΡ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, ΡΠΏΡΠ°ΠΉΡΡ ΠΎΡΡΠΌΠΈΠ½ΠΎΠ³ΠΎΠ² ΠΈΠΌΠ΅ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ 3. ΠΠ°ΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ landLayer Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π°ΡΡΠ΅ΡΠ° Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠΏΡΠ°ΠΉΡΠΎΠ².
...Π‘ΠΎΠ²Π΅Ρ Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ
Π‘ΠΊΠΎΡΠΎΡΡΡ ΡΠΏΡΠ°ΠΉΡΠΎΠ² β ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΈΠ³ΡΠ°Ρ . ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΏΡΠ°ΠΉΡΡ ΠΎΡΡΠΌΠΈΠ½ΠΎΠ³ΠΎΠ² Π½Π΅ Π΄ΡΠ΅ΠΉΡΡΡΡ, Π° ΠΏΠ»ΡΠ²ΡΡ, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΡ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΎΡΡΠ°Π·ΠΈΡΡΡ Π½Π° ΠΈΠ³ΡΠ΅. Π₯ΠΎΡΡ ΠΎΡΡΠΌΠΈΠ½ΠΎΠ³ΠΈ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Ρ Π°ΠΎΡΠΈΡΠ½ΠΎ, ΠΎΠ½ΠΈ ΡΡΠ°Π»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π³ΡΠΎΠ·Π½ΡΠΌΠΈ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊΠ°ΠΌΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π±ΡΡΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ ΠΏΠΎ ΠΈΠ³ΡΠΎΠ²ΠΎΠΌΡ ΡΠΊΡΠ°Π½Ρ.
ΠΠ°ΠΌΠΎΡΠ΅Π½Π½ΡΠ΅ ΡΠ»ΠΎΠΈ ΠΈ ΠΈΠ³ΡΠΎΠ²ΡΠ΅ ΡΠΏΡΠ°ΠΉΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠΌ ΡΠ»ΠΎΠ΅Π², ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎΠ± ΠΈΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°Π½ΠΈΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΠΏΡΠ°ΠΉΡΡ Π² ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΡΠ»ΠΎΠ΅Π²:
layers = new LayerManager();
layers.append(playerSprite);
for (int i = 0; i < 2; i++) {
layers.append(pirateSprite[i]);
layers.append(barrelSprite[i]);
}
for (int i = 0; i < 5; i++) {
layers.append(mineSprite[i]);
layers.append(squidSprite[i]);
}
layers.append(landLayer);
layers.append(waterLayer); //ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΡΠ»ΠΎΠΉ Π²ΠΎΠ΄Ρ, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½ ΠΏΠΎΠ΄ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅, ΡΡΠΎ ΠΏΠΎΡΡΠ΄ΠΎΠΊ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ ΡΠΏΡΠ°ΠΉΡΡ Π² ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΡΠ»ΠΎΠ΅Π², ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ΅Π½, ΠΏΠ΅ΡΠ²ΡΠΉ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠΉ ΡΠΏΡΠ°ΠΉΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΠΊΡΠ°Π½ ΠΏΠΎΠ²Π΅ΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠΎΡΡΠΎΠΌΡ ΡΠΎΠ½ΠΎΠ²ΡΠ΅ ΡΠ»ΠΎΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ. ΠΠ²ΡΠΊΠΎΠ²ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ ΠΈ ΠΌΡΠ·ΡΠΊΠ° ΠΈΠ³ΡΠ°ΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠΈ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΈΠ³Ρ, ΠΈ High Seas β Π½Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°ΡΠ΅Π»ΠΈ:
try {
InputStream is = getClass().getResourceAsStream("Music.mid");
musicPlayer = Manager.createPlayer(is, "audio/midi");
musicPlayer.prefetch();
musicPlayer.setLoopCount(-1);
is = getClass().getResourceAsStream("Rescue.wav");
rescuePlayer = Manager.createPlayer(is, "audio/X-wav");
rescuePlayer.prefetch();
is = getClass().getResourceAsStream("Mine.wav");
minePlayer = Manager.createPlayer(is, "audio/X-wav");
minePlayer.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(), ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΌΠΈΠ΄Π»Π΅ΡΠ°.
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΌΠ΅ΡΠΎΠ΄Π° update()
ΠΠ°ΠΊ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΠΌΠ΅ΡΠΎΠ΄ update() Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π·Π° ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΠΊΠ», ΠΎΠ½ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΡΠ°ΠΉΡΠΎΠ², ΡΠ»ΠΎΠ΅Π², ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ, ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π ΠΈΠ³ΡΠ΅ High Seas ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΈΠ³ΡΡ. ΠΡΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΉ, Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π½ΠΎΠ²Π°Ρ ΠΈΠ³ΡΠ°, Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ»Π°Π²ΠΈΡΡ Β«ΠΎΠ³ΠΎΠ½ΡΒ»:
if (gameOver) {
int keyState = getKeyStates();
if ((keyState & FIRE_PRESSED) != 0)
// Start a new game
newGame();
// ΠΈΠ³ΡΠ° ΠΎΠΊΠΎΠ½ΡΠ΅Π½Π°, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ
return;
}ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΈΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ newGame(), ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ ΡΠ°Π½Π΅Π΅. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ update() Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅Ρ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ ΠΈΠ³ΡΡ. Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° update() β ΡΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π½Π°ΠΆΠ°ΡΠΈΠ΅ ΡΠ΅ΡΡΡΠ΅Ρ ΠΊΠ»Π°Π²ΠΈΡ ΡΠΎ ΡΡΡΠ΅Π»ΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ ΠΎΠΊΠ½ΠΎ Π²ΠΈΠ΄Π°:
int keyState = getKeyStates();
int xMove = 0, yMove = 0;
if ((keyState & LEFT_PRESSED) != 0) {
xMove = -4;
playerSprite.setFrame(3);
}
else if ((keyState & RIGHT_PRESSED) != 0) {
xMove = 4; //Π§ΡΠΎΠ±Ρ ΠΊΠΎΡΠ°Π±Π»Ρ ΠΈΠ³ΡΠΎΠΊΠ° ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ³Π°Π»ΡΡ Π±ΡΡΡΡΠ΅Π΅, Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
playerSprite.setFrame(1);
}
if ((keyState & UP_PRESSED) != 0) {
yMove = -4;
playerSprite.setFrame(0);
}
else if ((keyState & DOWN_PRESSED) != 0) {
yMove = 4;
playerSprite.setFrame(2);
}
if (xMove != 0 || yMove != 0) { //ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° Π²ΠΈΠ΄Π° ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΡΠΏΡΠ°ΠΉΡ ΠΈΠ³ΡΠΎΠΊΠ° Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠ΅ΠΉ
layers.setViewWindow(xView + xMove, yView + yMove, getWidth(),
getHeight() β infoBar.getHeight());
playerSprite.move(xMove, yMove);
}ΠΡΠ»ΠΈ Π²Ρ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΠ΅, Π² ΠΈΠ³ΡΠ΅ High Seas ΠΏΠΈΡΠ°ΡΡΠΊΠΈΠΉ ΠΊΠΎΡΠ°Π±Π»Ρ ΠΎΡΡΠ°Π΅ΡΡΡ Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½ΡΠΌ Π² ΡΠ΅Π½ΡΡΠ΅ ΡΠΊΡΠ°Π½Π°, Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ. ΠΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ ΡΡΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ°, ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Ρ ΠΎΠΊΠ½ΠΎ Π²ΠΈΠ΄Π° Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π½Π°ΠΆΠ°ΡΡΠΌΠΈ ΠΊΠ»Π°Π²ΠΈΡΠ°ΠΌΠΈ. Π‘Π½Π°ΡΠ°Π»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ, Π½Π° ΠΊΠ°ΠΊΠΎΠ΅ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΠΊΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π° setViewWindow(). Π‘ΠΏΡΠ°ΠΉΡ ΠΈΠ³ΡΠΎΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π½Π° ΡΡΠΎ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ Π² ΡΠ΅Π½ΡΡΠ΅ ΡΠΊΡΠ°Π½Π°. ΠΠ»Π°ΡΡ DriftSprite ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΡΠΎ ΡΠ»ΠΎΠ΅ΠΌ-Π±Π°ΡΡΠ΅ΡΠΎΠΌ Π²ΡΠ΅Ρ ΡΠΏΡΠ°ΠΉΡΠΎΠ², ΠΊΡΠΎΠΌΠ΅ ΡΠΏΡΠ°ΠΉΡΠ° ΠΏΠΈΡΠ°ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΡΠ°Π±Π»Ρ. ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π΄Π°Π»Π΅Π΅ ΠΊΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΊΠΎΡΠ°Π±Π»Ρ ΠΈΠ³ΡΠΎΠΊΠ° ΡΠΎ ΡΠ»ΠΎΠ΅ΠΌ-Π±Π°ΡΡΠ΅ΡΠΎΠΌ: