ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ Keys, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 11.15.
ΠΠΈΡΡΠΈΠ½Π³ 11.15/// <summary>
/// ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ keyArgs Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ»Π°Π³Π°
/// </summary>
private System.Windows.Forms.KeyEventArgs keyArgs = null;
private void Form1_KeyDown(object sender,
System.Windows.Forms.KeyEventArgs e) {
keyArgs = e;
}
private void Form1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e) {
keyArgs = null;
}
ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π²ΡΠ·ΠΎΠ² ΡΠΎΠ±ΡΡΠΈΡ Form1_KeyDown, ΡΠ»Π°Π³ keyArgs ΡΡΡΠ»Π°Π΅ΡΡΡ Π½Π° ΠΊΠ»Π°ΡΡ KeyEventArgs. ΠΡΠΈ Π½Π°ΡΡΡΠΏΠ»Π΅Π½ΠΈΠΈ ΡΠΎΠ±ΡΡΠΈΡ Form1_KeyUp ΡΠ»Π°Π³ keyArgs ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ Π² null, ΠΈ ΠΊΠΎΠ΄ Π½Π°ΠΆΠ°ΡΡΡ ΠΊΠ»Π°Π²ΠΈΡ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ. Π’Π΅ΠΏΠ΅ΡΡ Π½Π°Π΄ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ updatePositions, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 11.16.
ΠΠΈΡΡΠΈΠ½Π³ 11.16private void updatePositions() {
// ΠΠΎΠ΄ Π΄Π»Ρ ΠΊΡΡΠΎΡΠΊΠ° ΡΡΡΠ° ΠΎΡΡΠ°Π»ΡΡ ΠΏΡΠ΅ΠΆΠ½ΠΈΠΌ
...
// ΠΠ»Ρ Π±Π°ΡΠΎΠ½Π° Ρ Π»Π΅Π±Π°
if (keyArgs != null) {
switch (keyArgs.KeyCode) {
case Keys.Up:
by-=ySpeed;
break;
case Keys.Down:
by+=ySpeed;
break;
case Keys.Left:
bx-=xSpeed;
break;
case Keys.Right:
bx+=xSpeed;
break;
}
}
}
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ switch, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠΈ. ΠΠ°ΡΠΎΠ½ Ρ Π»Π΅Π±Π° Π΄Π²ΠΈΠΆΠ΅ΡΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΡΠΊΠΎΡΠΎΡΡΡΡ, ΡΡΠΎ ΠΈ ΠΊΡΡΠΎΡΠ΅ΠΊ ΡΡΡΠ°. ΠΠ° ΡΡΠΎΠΉ ΡΡΠ°Π΄ΠΈΠΈ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ Π±Π°ΡΠΎΠ½ Ρ Π»Π΅Π±Π° ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΊΡΠ°Π½Ρ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΊΡΡΠΎΡΠ΅ΠΊ ΡΡΡΠ° ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π΄Π²ΠΈΠ³Π°Π΅ΡΡΡ ΠΏΠΎ ΡΠΊΡΠ°Π½Ρ.
ΠΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ
ΠΠ»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ Π² ΠΈΠ³ΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π·Π΄Π΅ΡΡ Π΄Π°Π»Π΅ΠΊΠΎ Π΄ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΌΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΡ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΈΠΌΠ΅ΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΡ ΡΠΎΡΠΌΡ. ΠΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈ Π½Π΅ Π·Π°ΠΌΠ΅ΡΠΈΡΡ ΡΡΠΎΠ³ΠΎ. ΠΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΠΈΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π²ΠΎΠΊΡΡΠ³ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ Π»Π΅Π±Π° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΈΡ. 11.4.
Π ΠΈΡ. 11.4. ΠΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΠΈΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
ΠΠ²Π΅ ΡΠΎΡΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠΏΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΈ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ ΡΠ³Π»ΠΎΠ² ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°. Π .NET Compact Framework ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΡΡΠΊΡΡΡΠ° RECTANGLE, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ°Ρ ΡΡΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°. ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π²ΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ². Π‘ ΠΈΡ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². Π Π°Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π°Π΄ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΡΡΡΠΊΡΡΡΠΎΠΉ RECTANGLE, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΌΠ΅ΡΡΠΎΠ½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 11.17.
ΠΠΈΡΡΠΈΠ½Π³ 11.17/// <summary>
/// ΠΠΎΠ·ΠΈΡΠΈΡ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΠΈΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π΄Π»Ρ ΡΡΡΠ°
/// </summary>
private Rectangle cheeseRectangle;
/// <summary>
/// ΠΠΎΠ·ΠΈΡΠΈΡ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΠΈΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π΄Π»Ρ Π±Π°ΡΠΎΠ½Π° Ρ Π»Π΅Π±Π°
/// </summary>
private Rectangle breadRectangle;
Π‘ΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π°Π΄ΠΎ Π²Π²Π΅ΡΡΠΈ ΠΊΠΎΠ΄, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 11.18.
ΠΠΈΡΡΠΈΠ½Π³ 11.18// ΠΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΠΈΠ΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ
cheeseRectangle = new Rectangle(0, 0, cheeseImage.Width.cheeseImage.Height);
breadRectangle = new Rectangle(0, 0, breadImage.Width, breadImage.Height);
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ Π½Π° ΡΠΊΡΠ°Π½ Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ Form1_Paint ΠΊΠΎΠ΄, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 11.19.
ΠΠΈΡΡΠΈΠ½Π³ 11.19g.DrawImage(breadImage, breadRectangle.X, breadRectangle.Y);
g.DrawImage(cheeseImage, cheeseRectangle.X, cheeseRectangle.Y);
ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ²ΠΎΠΉΡΡΠ² X ΠΈ Y ΡΡΠΈΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠΎ ΡΠΊΡΠ°Π½Ρ. Π ΠΌΠ΅ΡΠΎΠ΄Π΅ updatePosition Π½Π°Π΄ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π°, ΠΎΡΠ²Π΅ΡΠ°ΡΡΡΡ Π·Π° Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΡΡΠ° ΠΈ Π±Π°ΡΠΎΠ½Π°, Ρ ΡΡΠ΅ΡΠΎΠΌ ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 11.20.
ΠΠΈΡΡΠΈΠ½Π³ 11.20private void updatePositions() {
// ΠΠ²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡΡΠΎΡΠΊΠ° ΡΡΡΠ°
if (goingRight) {
cheeseRectangle.X += xSpeed;
} else {
cheeseRectangle.X -= xSpeed;
}
if ((cheeseRectangle.X + cheeseImage.Width) >= this.Width) {
goingRight = false;
}
if (cheeseRectangle.X <= 0) {
goingRight = true;
}
if (goingDown) {
cheeseRectangle.Y += ySpeed;
} else {
cheeseRectangle.Y -= ySpeed;
}
if ((cheeseRectangle.Y + cheeseImage.Height) >= this.Height) {
goingDown = false;
}
if (cheeseRectangle.Y <= 0) {
goingDown = true;
}
// Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π°ΡΠΎΠ½ΠΎΠΌ
if (keyArgs != null) {
switch (keyArgs.KeyCode) {
case Keys.Up:
breadRectangle.Y -= ySpeed;
break;
case Keys.Down:
breadRectangle.Y += ySpeed;
break;
case Keys.Left:
breadRectangle.X -= xSpeed;
break;
case Keys.Right:
breadRectangle.X += xSpeed;
break;
}
}
/// ΠΈ Π΄Π°Π»Π΅Π΅...
ΠΠΎΠ³Π΄Π° ΡΡΡ ΡΠ΄Π°ΡΡΠ΅ΡΡΡ ΠΎ Π±Π°ΡΠΎΠ½ Ρ Π»Π΅Π±Π°, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡΠΊΠΎΡΠΈΡΡ. ΠΡΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ, ΠΏΡΠΎΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΎΡΠΈ Y Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ updatePosition, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 11.21.
ΠΠΈΡΡΠΈΠ½Π³ 11.21// ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅
if (cheeseRectangle.IntersectsWith(breadRectangle)) {
goingDown = !goingDown;
}
ΠΠ΅ΡΠΎΠ΄ IntersectsWith ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ². ΠΡΠ»ΠΈ ΠΎΠ½ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΡΡ, ΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ True, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΡΠ°.
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΏΠΎΠΏΡΡΠ°ΠΉΡΠ΅ΡΡ ΠΎΡΠ±ΠΈΡΡ Π±Π°ΡΠΎΠ½ΠΎΠΌ Π΄Π²ΠΈΠΆΡΡΠΈΠΉΡΡ ΠΊΡΡΠΎΡΠ΅ΠΊ ΡΡΡΠ°. ΠΡ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΠΊΠ°ΠΊ ΡΡΡ ΠΎΡΡΠΊΠΎΡΠΈΡ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ.
Π‘ΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Π±Π°ΡΠΎΠ½Π° ΠΈ ΠΌΡΡΠ°
Π₯ΠΎΡΡ ΠΊΠΎΠ΄ Π²ΠΏΠΎΠ»Π½Π΅ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π²ΡΠ΅-ΡΠ°ΠΊΠΈ Ρ ΠΎΡΠ΅ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΌΠ°. ΠΡΠ²Π»Π΅ΡΠ΅ΠΌΡΡ Π½Π° ΠΌΠΈΠ½ΡΡΠΊΡ ΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ ΠΌΡΡΠ΅ΠΉ Ρ ΠΊΡΡΠ³Π»ΡΠΌ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΎΠΌ (ΡΠΈΡ. 11.5).
Π ΠΈΡ. 11.5. Π‘ΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΊΡΡΠ³Π»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
ΠΠΎΠ³Π΄Π° ΠΌΡΡ ΡΠ΄Π°ΡΡΠ΅ΡΡΡ ΠΎ ΠΊΡΡΠ³Π»ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΎΠ½ ΠΎΡΡΠΊΠ°ΠΊΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΌΠ΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π²ΠΈΠ΄ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΡΡΠ°. ΠΠΎ ΡΡ ΠΎΠΆΠ΅ΠΌΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Π½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°.
ΠΠ° ΡΠΈΡ. 11.6 ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ΡΡ ΡΡΠΈ Π²ΠΈΠ΄Π° ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ. ΠΠ΅ΡΠ²ΠΎΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ Π½Π°Π΅Π·Π΄Π΅ ΠΏΡΠ°Π²ΠΎΠΉ Π½ΠΈΠΆΠ½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΡΡΡΠ° Π½Π° ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π±Π°ΡΠΎΠ½Π°. ΠΠΎ Π²ΡΠΎΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ±Π° Π½ΠΈΠΆΠ½ΠΈΡ ΡΠ³Π»Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΡΠ° ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΡΡ Ρ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠΌ Π±Π°ΡΠΎΠ½Π°. Π ΡΡΠ΅ΡΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΡΡΠ° Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΡΡ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π½Π° Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ.
Π ΠΈΡ. 11.6. ΠΠΈΠ΄Ρ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ
ΠΡΠΆΠ½ΠΎ ΡΠ½ΠΎΠ²Π° ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ ΠΌΠ΅ΡΠΎΠ΄Π° updatePosition Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 11.22.
ΠΠΈΡΡΠΈΠ½Π³ 11.22if (goingDown) {
// Π΅ΡΠ»ΠΈ ΡΡΡ Π΄Π²ΠΈΠΆΠ΅ΡΡΡ Π²Π½ΠΈΠ·
if (cheeseRectangle.IntersectsWith(breadRectangle)) {
// ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅
bool rightIn =
breadRectangle.Contains(cheeseRectangle.Right, cheeseRectangle.Bottom);
bool leftIn =
breadRectangle.Contains(cheeseRectangle.Left, cheeseRectangle.Bottom);
// ΡΠΏΠΎΡΠΎΠ± ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
if (rightIn & leftIn) {
// ΠΎΡΡΠ°ΠΆΠ°Π΅ΡΡΡ Π²Π²Π΅ΡΡ
goingDown = false;
} else {
// ΠΎΡΡΠ°ΠΆΠ°Π΅ΡΡΡ Π²Π²Π΅ΡΡ
goingDown = false;
// Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²ΠΈΠ΄Π° ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ
if (rightIn) {
goingRight = false;
}
if (leftIn) {
goingRight = true;
}
}
}
}
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΡ ΠΎΡΡΠΊΠ°ΠΊΠΈΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ Π² Π½ΠΈΠΆΠ½ΡΡ ΡΠ°ΡΡΡ ΡΠΊΡΠ°Π½Π°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΠ³ΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ ΡΡΠ°ΡΠ°ΡΡΡΡ Π½Π΅ Π΄Π°ΡΡ ΡΡΡΡ ΡΠΏΠ°ΡΡΡ Π½Π° Π΄Π½ΠΎ ΡΠΊΡΠ°Π½Π°, ΠΎΡΠ±ΠΈΠ²Π°Ρ Π΅Π³ΠΎ Π±Π°ΡΠΎΠ½ΠΎΠΌ.
ΠΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΡΠ»ΡΡΡΠ°ΡΡ ΠΈΠ³ΡΡ. Π’Π΅ΠΏΠ΅ΡΡ Π² ΠΈΠ³ΡΡ Π±ΡΠ΄ΡΡ Π²Π²Π΅Π΄Π΅Π½Ρ ΠΈ ΠΏΠΎΠΌΠΈΠ΄ΠΎΡΡ. ΠΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎΠΆΠ΅ Π½Π°Π΄ΠΎ Π²Π²Π΅ΡΡΠΈ Π² ΡΠΎΡΡΠ°Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 11.23.
ΠΠΈΡΡΠΈΠ½Π³ 11.23/// <summary>
/// ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π΅ ΠΏΠΎΠΌΠΈΠ΄ΠΎΡ
/// </summary>
private Image tomatoImage = null;
// ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΌΠΈΠ΄ΠΎΡΠ°
tomatoImage = new System.Drawing.Bitmap(
execAssem.GetManifestResourceStream(@"Bouncer.tomato.gif"));
Π‘Π»Π΅Π΄ΡΠ΅Ρ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠΌΠΈΠ΄ΠΎΡΠΎΠ² Π² Π²Π΅ΡΡ Π½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΡΠΊΡΠ°Π½Π°. ΠΠΎΠΌΠΈΠ΄ΠΎΡΡ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠΈΡΠ΅Π½Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠ½ΠΈΡΡΠΎΠΆΠ°ΡΡ, ΡΠ±ΠΈΠ²Π°Ρ ΠΈΡ ΠΊΡΡΠΎΡΠΊΠΎΠΌ ΡΡΡΠ°.
ΠΠ»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠΉ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠΌΠΈΠ΄ΠΎΡΠ° ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ. ΠΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠΌΠΈΠ΄ΠΎΡΠ°, Π½ΠΎ Π»ΡΡΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΡΡΠΊΡΡΡΠΎΠΉ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 11.24.