Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ³Ρ€ для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 75

Автор Майкл ΠœΠΎΡ€Ρ€ΠΈΡΠΎΠ½

Π˜Π³Ρ€ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Ρ€Π΅Π»ΡΡ‚ΡŒ Π²Π²Π΅Ρ€Ρ… ΠΏΠΈΡ€ΠΎΠΆΠ½Ρ‹ΠΌΠΈ-Ρ€Π°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ, Π΄ΠΎΠ»Π΅Ρ‚Π°ΡŽΡ‰ΠΈΠΌΠΈ Π΄ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части экрана.

ΠŸΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Ρ‹ Π² ΠΈΠ³Ρ€Π΅ Space Out ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π² любом Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈ с любой ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ. ΠŸΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Ρ‹ Blobbo ΠΈ Jelly ΠΎΡ‚Ρ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΊΡ€Π°Π΅Π² экрана. Π’ΠΈΠΌΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны экрана, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ двиТСтся прСимущСствСнно Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Ρ‹ двиТутся Π±ΠΎΠ»Π΅Π΅ Ρ…Π°ΠΎΡ‚ΠΈΡ‡Π½ΠΎ. ВсС ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Ρ‹ ΡΡ‚Ρ€Π΅Π»ΡΡŽΡ‚ Ρ€Π°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π·Ρ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠΈ Π² Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΈΠ»ΠΈ зСмлю. Π Π°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Π΅Π² Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈΡ‚ΡŒ Π²Ρ€Π΅Π΄Π° самим ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Π°ΠΌ.

Π’ Space Out Π½Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ†Π΅Π»ΠΈ, Ρ‡Π΅ΠΌ Π²Ρ‹ΠΆΠΈΡ‚ΡŒ. Однако ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ увСличиваСтся со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, ΠΎΠ½Π° основана Π½Π° Π½Π°Π±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΈΠ³Ρ€ΠΎΠΊΠΎΠΌ ΠΎΡ‡ΠΊΠ°Ρ…. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΈΠ³Ρ€ΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‚Π°Ρ€Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚ΡŒ максимум усилий, ΡΡ€Π°ΠΆΠ°ΡΡΡŒ с бСсконСчной Π°Ρ€ΠΌΠΈΠ΅ΠΉ ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Π΅Π². ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈΡ… ΠΏΠΎΠ±Π΅Π΄ΠΈΡ‚ΡŒ!

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ выглядит ΠΈΠ³Ρ€Π° Space Out, взглянитС Π½Π° рис. 18.1.

Рис. 18.1. Π˜Π³Ρ€Π° Space Out состоит ΠΈΠ· Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ изобраТСния пустыни, автомобиля, ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Π΅Π² ΠΈ Ρ€Π°ΠΊΠ΅Ρ‚ ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΈ ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Π΅Π²

На рис. 18.1 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ – пустыня ΠΈ Π·Π²Π΅Π·Π΄Π½ΠΎΠ΅ Π½Π΅Π±ΠΎ. Π‘ΠΏΡ€Π°ΠΉΡ‚ автомобиля пСрСмСщаСтся ΠΏΠΎ пустынС. ΠŸΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Ρ‹ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² Π½Π΅Π±Π΅ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ, ΠΏΡ‹Ρ‚Π°ΡΡΡŒ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ Ρ€Π°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ Π²Π΅Π΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚Π½Ρ‹ΠΉ огонь ΠΏΠΎ ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Π°ΠΌ. Π‘Ρ‡Π΅Ρ‚ ΠΈΠ³Ρ€Ρ‹ выводится Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΠΏΡ€Π°Π²ΠΎΠΌ ΡƒΠ³Π»Ρƒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ экрана, Π° число ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ (ΠΆΠΈΠ·Π½Π΅ΠΉ) β€“ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ Π»Π΅Π²ΠΎΠΌ.

Π’Ρ‹ поняли основы ΠΈΠ³Ρ€Ρ‹, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ спрайты. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ список спрайтов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΠΈΠ³Ρ€Π΅:

β–Ί спрайт автомобиля;

β–Ί спрайты ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Π΅Π²;

β–Ί спрайты Ρ€Π°ΠΊΠ΅Ρ‚ (автомобиля ΠΈ ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Π΅Π²);

β–Ί спрайт Π²Π·Ρ€Ρ‹Π²Π°.

ЕдинствСнный спрайт, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ я Π΅Ρ‰Π΅ Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», β€“ это спрайт Π²Π·Ρ€Ρ‹Π²Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для изобраТСния Π²Π·Ρ€Ρ‹Π²Π° корабля ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Π° ΠΈΠ»ΠΈ автомобиля. ΠšΡ€ΠΎΠΌΠ΅ спрайтов, Π² ΠΈΠ³Ρ€Π΅ Space Out Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ нСсколько растровых ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:

β–Ί Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ пустыни;

β–Ί ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ автомобиля (рис. 18.2);

Рис. 18.2. РастровоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ малСнького автомобиля, Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΠΏΡ€Π°Π²ΠΎ

β–Ί ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Π° Blobbo (рис. 18.3);

Рис. 18.3. РастровоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Π° Blobbo состоит ΠΈΠ· пяти Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ²

β–Ί ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Π° Π”ΠΆΠ΅Π»Π»ΠΈ (рис. 18.4);

Рис. 18.4. Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Π° Jelly состоит ΠΈΠ· пяти Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ², ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Ρ‰ΡƒΠΏΠ°Π»Π΅Ρ†

β–Ί ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Π° Timmy (рис. 18.5);

Рис. 18.5. Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Π° Timmy состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ², ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Π΅Π³ΠΎ ΠΏΠΎΠ»Π΅Ρ‚

β–Ί ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°ΠΊΠ΅Ρ‚Ρ‹, содСрТащСС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„Ρ€Π΅ΠΉΠΌΡ‹, β€“ Ρ€Π°ΠΊΠ΅Ρ‚Ρ‹ ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΈ Ρ€Π°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Π° (рис. 18.6);

Рис. 18.6. Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°ΠΊΠ΅Ρ‚Ρ‹ состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… соотвСтствуСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ Ρ€Π°ΠΊΠ΅Ρ‚Ρ‹

β–Ί Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Π·Ρ€Ρ‹Π²Π° (рис. 18.7);

Рис. 18.7. Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Π·Ρ€Ρ‹Π²Π°

β–Ί малСнькоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ автомобиля (рис. 18.8).

Рис. 18.8. МалСнькоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ автомобиля ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для отобраТСния числа ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ ΠΆΠΈΠ·Π½Π΅ΠΉ

Π­Ρ‚ΠΈ изобраТСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ самим Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠΌ ΠΈΠ³Ρ€Ρ‹, Ρ€Π΅Ρ‡ΡŒ ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ шла Ρ€Π°Π½Π΅Π΅, поэтому здСсь Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½ΠΈΡ‡Π΅Π³ΠΎ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ. Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ спрайты ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Π΅Π² ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ (рис. 18.3β€”18.5), Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π³Π΅Ρ€ΠΎΠ΅Π² интСрСснСС. Π”Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ для ΠΈΠ³Ρ€ спрайт – это Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ спрайт Π²Π·Ρ€Ρ‹Π²Π° (рис. 18.7).

Π’ ΠΈΠ³Ρ€Π΅ Space Out ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ спрайт ΠΈ для изобраТСния Ρ€Π°ΠΊΠ΅Ρ‚Ρ‹ (рис. 18.6). Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ содСрТит нСсколько Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, Π½ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌ – это ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Ρ€Π°ΠΊΠ΅Ρ‚Ρ‹, Π° Π½Π΅ ΠΊΠ°Π΄Ρ€ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. Π˜Π½Π°Ρ‡Π΅ говоря, Ρ„Ρ€Π΅ΠΉΠΌΡ‹ изобраТСния Ρ€Π°ΠΊΠ΅Ρ‚ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ выводятся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΊΠ°ΠΊ Π² случаС с ΠΎΠ±Ρ‹ΠΊΠ½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΌΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ изобраТСниями. Напротив, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌ изобраТСния – это ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Ρ€Π°ΠΊΠ΅Ρ‚Ρ‹. Π§Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ‚ΠΈΠΏΠ° Ρ€Π°ΠΊΠ΅Ρ‚Ρ‹ – это Ρ€Π°ΠΊΠ΅Ρ‚Ρ‹ ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΈ Ρ‚Ρ€Π΅Ρ… ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Π΅Π².

Π”Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π°ΠΆΠ½Ρ‹Π΅ элСмСнты ΠΈΠ³Ρ€Ρ‹ Space Out – это счСт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ вСсти Π²ΠΎ врСмя ΠΈΠ³Ρ€Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ число ΠΆΠΈΠ·Π½Π΅ΠΉ (Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ). Π˜Π³Ρ€Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½Ρ‹ всС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ автомобиля. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ хранится Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ увСличиваСтся ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ уничтоТСния ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Π΅Π² ΠΈΠ³Ρ€ΠΎΠΊΠΎΠΌ. Π”Ρ€ΡƒΠ³ΠΎΠ΅ Π²Π°ΠΆΠ½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ – это пСрСмСнная булСвского Ρ‚ΠΈΠΏΠ°, которая отслСТиваСт, Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π° Π»ΠΈ ΠΈΠ³Ρ€Π°.

Π˜Ρ‚Π°ΠΊ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ³Ρ€Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Π»Π° нас ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π²Π°ΠΆΠ½Ρ‹ΠΌ аспСктам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π²ΠΎ врСмя ΠΈΠ³Ρ€Ρ‹:

β–Ί число ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ ΠΆΠΈΠ·Π½Π΅ΠΉ (Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ);

β–Ί счСт;

β–Ί булСвская пСрСмСнная, ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ ΠΈΠ³Ρ€Ρ‹.

Π­Ρ‚Π° информация ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ ядро ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π²ΠΎ врСмя ΠΈΠ³Ρ€Ρ‹. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Π΅ спрайты – ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ состояния ΠΈΠ³Ρ€Ρ‹. Зная это, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΊΠΎΠ΄Π° ΠΈΠ³Ρ€Ρ‹ Space Out. Π’Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΈΠ³Ρ€Π° High Seas, созданная Π² Π³Π»Π°Π²Π΅ 12, ΠΈΠ³Ρ€Π° Space Out ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сил, Π½ΠΎ Ρ‚Ρ€ΡƒΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π½Π°Π³Ρ€Π°ΠΆΠ΄Π΅Π½! Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅!

РСализация ΠΈΠ³Ρ€Ρ‹

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΈΠ³Ρ€Ρ‹ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° структурС ΠΈΠ³Ρ€, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π½Π΅Π΅. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ ΠΊΠΎΠ΄ ΠΈ рСсурсы ΠΈΠ³Ρ€Ρ‹.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ двиТущихся спрайтов

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΠ³Ρ€Ρ‹ Space Out Π½Π°Ρ‡Π½Π΅ΠΌ с создания Π½ΠΎΠ²ΠΎΠ³ΠΎ класса спрайтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΈΠ³Ρ€Π΅ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ двиТущихся спрайтов. Π­Ρ‚ΠΎΡ‚ класс MovingSprite Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ классу DriftSprite ΠΈΠ· Π³Π»Π°Π²Ρ‹ 12 Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ X ΠΈ Y скорости, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ столкновСния спрайта со стСнкой экрана.

Π›ΡŽΠ±ΠΎΠΉ спрайт Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ края экрана, ΠΈ Π² этом случаС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ². НапримСр, Π² ΠΈΠ³Ρ€Π΅ Pong спрайт, Π΄ΠΎΡΡ‚ΠΈΠ³Π°ΡŽΡ‰ΠΈΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ экрана, отскакиваСт ΠΎΡ‚ Π½Π΅Π΅. Π’ ΠΈΠ³Ρ€Π΅ Asteroids ΠΏΡ€ΠΈ достиТСнии Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ экрана спрайт ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Ρƒ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΉ стороны. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ³Ρ€Π°Ρ… спрайт просто Π·Π°ΠΌΠΈΡ€Π°Π΅Ρ‚ ΠΈΠ»ΠΈ уничтоТаСтся (скрываСтся). ВсС эти возмоТности Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ класс MovingSprite. Π”Π°Π²Π°ΠΉΡ‚Π΅ пСрСчислим эти возмоТности снова:

β–Ί ΡΠΊΡ€Ρ‹Ρ‚ΡŒΡΡ – сокрытиС спрайта ΠΏΠΎ достиТСнии ΠΈΠΌ края экрана;

β–Ί ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΡΡ – ΠΏΡ€ΠΈ достиТСнии спрайтом края экрана ΠΎΠ½ появляСтся Ρƒ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ края;

β–Ί ΠΎΡ‚Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ – ΠΏΠΎ достиТСнии спрайтом Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ экрана Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ двиТСния измСняСтся Π½Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅;

β–Ί ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ – Ссли спрайт достигаСт края экрана, ΠΎΠ½ останавливаСтся.

ВсС эти случаи Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ константами класса MovingSprite. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ константы ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ этого класса:

private int xSpeed, ySpeed;

private int action;

private Canvas canvas;

public static final int BA_HIDE = 1; //Π­Ρ‚ΠΈ константы ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ дСйствия Π½Π° Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ… ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ спрайтов

public static final int BA_WRAP = 2;

public static final int BA_BOUNCE = 3;

public static final int BA_STOP = 4;

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ xSpeed ΠΈ ySpeed хранят ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ скорости спрайта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·ΠΌΠ΅Ρ€ΡΡŽΡ‚ΡΡ Π² пиксСлях Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ». ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ action содСрТит ΠΊΠΎΠ΄ дСйствия, выполняСмого ΠΏΠΎ достиТСнии спрайтом Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ экрана – Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· констант класса. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ двиТущийся спрайт ΠΏΠΎ достиТСнии края экрана Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ, ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ края экрана, ΠΎΡ‚Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ ΠΈΠ»ΠΈ ΡΠΊΡ€Ρ‹Ρ‚ΡŒΡΡ.

Π“Ρ€Π°Π½ΠΈΡ†Π° экрана опрСдСляСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ canvas, которая Ρ…Ρ€Π°Π½ΠΈΡ‚ холст, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ выводится спрайт. ЦСль этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ – ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΡƒΡŽ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΡƒΡŽ двиТСния спрайта. Π˜Π½Π°Ρ‡Π΅ говоря, Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ canvas слуТат Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ области, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ спрайт – Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²Π½Π΅ области Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ класса MovingSprite ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ конструктором MovingSprite (листинг 18.1).

Листинг 18.1. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса MovingSprite создаСт ΠΊΠ°ΠΊ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ, Ρ‚Π°ΠΊ ΠΈ Π½Π΅Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ спрайт

public MovingSprite (Image image, int xMoveSpeed, Int yMoveSpeed,

int boundsAction, Canvas parentCanvas) {

super(image); //Π’Ρ‹Π·ΠΎΠ² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ конструктора Sprite()

// ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ XY

xSpeed = xMoveSpeed;

ySpeed = yMoveSpeed;

// дСйствиС ΠΏΡ€ΠΈ достиТСнии Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ экрана

action = boundsAction;

// Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ холст

canvas = parentCanvas;

}

public MovingSprite(Image image, int frameWidth, int frameHeight, int xMoveSpeed,

int yMoveSpeed, int boundsAction, Canvas parentCanvas) {

super(image, frameWidth, frameHeight); //Π’Ρ‹Π·ΠΎΠ² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ конструктора Sprite()

// скорости XY

xSpeed = xMoveSpeed;

ySpeed = yMoveSpeed;

// дСйствиС ΠΏΡ€ΠΈ достиТСнии Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ экрана

action = boundsAction;

// Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ холст

canvas = parentCanvas;

}

Π’ классС MovingSprite Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π΄Π²Π° конструктора – для создания Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ спрайтов. Оба конструктора Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ конструктор Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Sprite(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаСт ядро спрайта, послС Ρ‡Π΅Π³ΠΎ выполняСтся инициализация спСцифичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… класса. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ класса DriftSprite, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Π² Π³Π»Π°Π²Π΅ 12, ΠΌΠ΅Ρ‚ΠΎΠ΄ update() Π² классС MovingSprite ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ прост:

public void update() {

// Move the sprite based on its speed

move(xSpeed, ySpeed);

// Check for a collision with the screen boundary

checkBounds();

}

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ update() ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ спрайт Π½Π° основании Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ скорости, хранящСйся Π² цСлочислСнных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… xSpeed ΠΈ ySpeed. ΠœΠ΅Ρ‚ΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ, находится Π»ΠΈ спрайт Π²Π½ΡƒΡ‚Ρ€ΠΈ Π³Ρ€Π°Π½ΠΈΡ†. Π­Ρ‚ΠΎ выполняСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ checkBounds(), ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² листингС 18.2. Листинг 18.2. ΠœΠ΅Ρ‚ΠΎΠ΄ checkBounds() провСряСт столкновСниС спрайта с Π³Ρ€Π°Π½ΠΈΡ†Π΅ΠΉ экрана ΠΈ Π² случаС столкновСния выполняСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия

private void checkBounds() {