Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΠΈΠ³ΡΡ Β«Π±Π°ΡΠΊΠ΅ΡΠ±ΠΎΠ»Β»
ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΈΠ³ΡΠ°ΡΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ ΠΈΠ³ΡΠΎΠΊΠ° Π²ΠΏΡΠ°Π²ΠΎ ΠΈΠ»ΠΈ Π²Π»Π΅Π²ΠΎ, ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΡΠΎΡΠΊΠ°. Π€ΡΠ½ΠΊΡΠΈΡ findy (x:real;y:real;vx:real;vy:real):real — Π€ΡΠ½ΠΊΡΠΈΡ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΌΡΡΠ° ΠΏΠΎ ΠΎΡΠΈ y. ΠΠΎΠ½Π΅Ρ ΡΠ²Π΅Ρ ΠΏΠ΅ΡΠ° — ΡΠ΅ΡΠ½ΡΠΉ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡ Π² ΡΠΎΡΠΊΠ΅ (hand, ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΠ΅ (yp)). Π ΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π½Π΅Π»ΡΠ·Ρ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ³Π°ΡΡ ΠΈΠ³ΡΠΎΠΊΠ° ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΡΠΎΡΠΊΠ°. Uses graph, crt;{ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΠΈΠ³ΡΡ Β«Π±Π°ΡΠΊΠ΅ΡΠ±ΠΎΠ»Β» (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΠΈΠ½ΠΈΡΡΠ΅ΡΡΡΠ²ΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π ΠΎΡΡΠΈΠΉΡΠΊΠΎΠΉ Π€Π΅Π΄Π΅ΡΠ°ΡΠΈΠΈ
ΠΠ ΠΠ‘ΠΠΠ―Π Π‘ΠΠΠ ΠΠΠ‘Π£ΠΠΠ Π‘Π’ΠΠΠΠΠ«Π Π’ΠΠ₯ΠΠΠ§ΠΠ‘ΠΠΠ
Π£ΠΠΠΠΠ Π‘ΠΠ’ΠΠ’
ΠΠ°ΡΠ΅Π΄ΡΠ°
ΠΠ£Π Π‘ΠΠΠΠ― Π ΠΠΠΠ’Π
ΠΡΠ°ΡΠ½ΠΎΡΡΡΠΊ 2002
1 ΠΠ°Π΄Π°Π½ΠΈΠ΅ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡ
2 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
3 Π£ΠΊΡΡΠΏΠ½Π΅Π½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ
4 Π’Π°Π±Π»ΠΈΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ²
5 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ
6 ΠΠ»Π³ΠΎΡΠΈΡΠΌ
7 ΠΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ
8 Π’Π΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
1 ΠΠ°Π΄Π°Π½ΠΈΠ΅ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡ
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ — ΠΈΠ³ΡΡ «Π±Π°ΡΠΊΠ΅ΡΠ±ΠΎΠ»». ΠΠΎΠ»ΠΆΠ΅Π½Ρ Π±ΡΡΡ ΡΠΏΡΠΎΡΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Ρ Π±Π°ΡΠΊΠ΅ΡΠ±ΠΎΠ»ΡΠ½ΡΠΉ ΡΠΈΡ ΠΈ ΠΈΠ³ΡΠΎΠΊ. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ³ΡΠΎΠΊΠ°, Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΡΠΎΡΠΎΠΊΠ° ΠΈ Π΅Π³ΠΎ ΡΠΈΠ»Ρ.
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½Π°Ρ ΠΈΠ³ΡΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌ
2 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ, ΡΠΎ Π΄Π»Ρ Π΅Π΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅, Π³Π΄Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ basket. exe Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ ΠΈ ΡΠ°ΠΉΠ» egavga. bgi, ΠΈΠ½Π°ΡΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π³ΡΠ°ΡΠΈΠΊΠΈ.
ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΈΠ³ΡΠ°ΡΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ ΠΈΠ³ΡΠΎΠΊΠ° Π²ΠΏΡΠ°Π²ΠΎ ΠΈΠ»ΠΈ Π²Π»Π΅Π²ΠΎ, ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΡΠΎΡΠΊΠ°.
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅:
A — Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ³ΡΠΎΠΊΠ° Π²Π»Π΅Π²ΠΎ
D — Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ³ΡΠΎΠΊΠ° Π²ΠΏΡΠ°Π²ΠΎ
W — ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ³Π»Π° Π±ΡΠΎΡΠΊΠ°
S — ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ³Π»Π° Π±ΡΠΎΡΠΊΠ°
SPACE — ΡΠ΅ΠΆΠΈΠΌ Π±ΡΠΎΡΠΊΠ°, Π±ΡΠΎΡΠΎΠΊ ΠΠΎΡΠ»Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° SPACE Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ΅ΠΆΠΈΠΌ Π±ΡΠΎΡΠΊΠ°. Π Π»Π΅Π²ΠΎΠΌ Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ³Π»Ρ ΡΠΊΡΠ°Π½Π° ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΡΠΈΠ»Ρ Π±ΡΠΎΡΠΊΠ°. Π‘ΠΈΠ»Π° Π±ΡΠΎΡΠΊΠ° Π±ΡΠ΄Π΅Ρ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ ΠΎΡ 0 Π΄ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠ°. Π§Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΡΠΎΡΠ° ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°, ΡΠ΅ΠΌ ΡΠΈΠ»ΡΠ½Π΅Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ Π±ΡΠΎΡΠΎΠΊ. ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΡΠΈΠ»Π° ΠΎΡΠΌΠ΅ΡΠ΅Π½Π° ΡΠ΅ΡΡΠΎΠΉ. ΠΠ»Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΠΈΡ Π±ΡΠΎΡΠΊΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π² Π½ΡΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π΅ΡΠ΅ ΡΠ°Π· Π½Π°ΠΆΠ°ΡΡ SPACE. ΠΠ°ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΏΠΎΠ»Π΅Ρ ΠΌΡΡΠ°. Π’ΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌ Π±ΡΠΎΡΠΊΠ° Π²ΡΠΊΠ»ΡΡΠ°Π΅ΡΡΡ.
Π ΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π½Π΅Π»ΡΠ·Ρ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ³Π°ΡΡ ΠΈΠ³ΡΠΎΠΊΠ° ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΡΠΎΡΠΊΠ°.
3 Π£ΠΊΡΡΠΏΠ½Π΅Π½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ
4 Π’Π°Π±Π»ΠΈΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ²
ΠΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ | Π’ΠΈΠΏ | ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ | |
grdriver | integer | Π‘Π»ΡΠΆΠ΅Π±Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ° | |
grmode | integer | ||
errcode | integer | ||
x | integer | ΠΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ³ΡΠΎΠΊΠ° | |
xprev | integer | ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ³ΡΠΎΠΊΠ° | |
step | integer | Π¨Π°Π³ ΠΈΠ³ΡΠΎΠΊΠ° | |
radius | integer | Π Π°Π΄ΠΈΡΡ ΠΌΡΡΠ° | |
handx | integer | ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° ΠΌΡΡΠ° ΠΈ ΡΡΠΊΠΈ ΠΏΠΎ ΠΎΡΠΈ x | |
handy | integer | ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° ΠΌΡΡΠ° ΠΈ ΡΡΠΊΠΈ ΠΏΠΎ ΠΎΡΠΈ y | |
v | integer | Π‘ΠΊΠΎΡΠΎΡΡΡ ΠΌΡΡΠ° | |
delay1 | integer | ΠΠ°Π΄Π΅ΡΠΆΠΊΠ° | |
change | integer | ΠΡΠ»Π° Π»ΠΈ Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ»Π°Π²ΠΈΡΠ° | |
angle | Real | ΠΠ°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠΊΠΈ (Π±ΡΠΎΡΠΊΠ°) | |
angleprev | Real | ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ ΠΠ°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠΊΠΈ | |
anglestep | Real | ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠΊΠΈ | |
key | Char | ΠΠ²Π΅Π΄Π΅Π½Π½Π°Ρ ΠΊΠ»Π°Π²ΠΈΡΠ° | |
yc | real | ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° ΠΌΡΡΠ° ΠΏΠΎ ΠΎΡΠΈ y | |
i | integer | Π‘ΡΠ΅ΡΡΠΈΠΊ | |
direction | integer | ΠΠ°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΡΠ° ΠΌΡΡΠ° | |
hand | integer | ΠΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ | |
goal | integer | ΠΡΠ» Π»ΠΈ Π³ΠΎΠ» | |
y | real | ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° ΠΌΡΡΠ° ΠΏΠΎ ΠΎΡΠΈ y | |
yp | real | ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° ΠΌΡΡΠ° ΠΏΠΎ ΠΎΡΠΈ y | |
vx | real | Π‘ΠΊΠΎΠΊΠΎΡΡΡ ΠΌΡΡΠ° ΠΏΠΎ ΠΎΡΠΈ x | |
vy | real | Π‘ΠΊΠΎΠΊΠΎΡΡΡ ΠΌΡΡΠ° ΠΏΠΎ ΠΎΡΠΈ y | |
distance | real | Π Π°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΡ ΠΌΡΡΠ° Π΄ΠΎ «ΡΠ³Π»Π°» ΠΊΠΎΠ»ΡΡΠ° | |
k | real | ΠΡΠ» Π»ΠΈ ΡΠ΄Π°Ρ ΠΌΡΡΠ° ΠΎΠ± ΠΊΠΎΠ»ΡΡΠΎ | |
k1 | real | ΠΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ | |
tmp | Real | ||
tmp1 | Real | ||
tmp2 | Real | ||
5 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ
ΠΡΠΎΡΠ΅Π΄ΡΡΠ° showbasket — ΠΡΠΎΡΠ΅Π΄ΡΡΠ°, ΡΠΈΡΡΡΡΠ°Ρ Π±Π°ΡΠΊΠ΅ΡΠ±ΠΎΠ»ΡΠ½ΡΠΉ ΡΠΈΡ.
Π€ΡΠ½ΠΊΡΠΈΡ findy (x:real;y:real;vx:real;vy:real):real — Π€ΡΠ½ΠΊΡΠΈΡ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΌΡΡΠ° ΠΏΠΎ ΠΎΡΠΈ y.
ΠΡΠΎΡΠ΅Π΄ΡΡΠ° showplayer (x:integer;angle:real) — ΠΡΠΎΡΠ΅Π΄ΡΡΠ°, ΡΠΈΡΡΡΡΠ°Ρ ΠΈΠ³ΡΠΎΠΊΠ°.
ΠΡΠΎΡΠ΅Π΄ΡΠ° shot (x:integer;angle:real) — ΠΡΠΎΡΠ΅Π΄ΡΡΠ° «ΠΡΠΎΡΠΎΠΊ ΠΌΡΡΠ°» .
6 ΠΠ»Π³ΠΎΡΠΈΡΠΌ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° basketball
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ crt, graph
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅:
grdriver, grmode, errcode, x, xprev, step, radius: integer
handx, handy, v, delay1,change:integer
angle, angleprev, anglestep: real
key:char
ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° showbasket
Π½Π°ΡΠ°Π»ΠΎ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΠΏΠ΅ΡΠΎ Π² (130,100)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ Π² (135,100)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ Π² (135,230)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ Π² (130,230)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ Π² (130,100)
ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΠΏΠ΅ΡΠΎ Π² (130,150)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ Π² (85,175)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ Π² (35,250)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ Π² (5,460)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ Π² (60,280)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ Π² (85,175)
ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΠΏΠ΅ΡΠΎ Π² (130,190)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ Π² (90,215)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ Π² (60,280)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ Π² (65,460)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ Π² (35,250)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ Π² (90,215)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ Π² (85,175)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ Π² (130,190)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ ΠΈΠ· (0,460) Π² (639,460)
ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΠΏΠ΅ΡΠΎ Π² (135,190)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ Π² (185,190)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ Π² (185,192)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ Π² (135,192)
ΠΊΠΎΠ½Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ·ΠΎΠ² findy (x:realy:realvx:realvy:real):real
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ yc: real
Π½Π°ΡΠ°Π»ΠΎ
yc=y-vy/sqrt (v*v+0.0001)
Π²ΠΎΠ·Π²ΡΠ°Ρ yc ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠΎΠ½Π΅Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° showplayer (x:integerangle:real)
Π½Π°ΡΠ°Π»ΠΎ
Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π»ΠΈΠΏΡ (x, 350,0,360,23,40)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ ΠΈΠ· (x-10,385) Π² (x-20,459)
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ ΠΈΠ· (x+10,385) Π² (x+20,459)
Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡ Π² ΡΠΎΡΠΊΠ΅ (x, 297) Ρ ΡΠ°Π΄ΠΈΡΡΠΎΠΌ 13
handx=x-ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΠ΅ (60*cos (angle))
handy=297+ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΠ΅ (60*sin (angle))
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ ΠΈΠ· (x, 330) Π² (handx, handy)
ΠΊΠΎΠ½Π΅Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° shot (x:integerangle:real)
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
i, direction, hand, goal: integer
y, yp, vx, vy, distance, k, k1,tmp, tmp1, tmp2:real
Π½Π°ΡΠ°Π»ΠΎ
goal=0
i=1
v=0
hand=handx
yp=handy
ΠΠ°ΠΊΡΠ°ΡΠΈΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ (550,20,600,40) ΡΠ΅ΡΠ½ΡΠΌ
ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ»Π°Π²ΠΈΡΠ° Π΄Π΅Π»Π°ΡΡ
Π½Π°ΡΠ°Π»ΠΎ
Π΅ΡΠ»ΠΈ v<50 ΡΠΎ v=v+1
ΠΈΠ½Π°ΡΠ΅ v=0
ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ ΠΈΠ· (10,100) Π² (20,100)
ΠΠ°ΠΊΡΠ°ΡΠΈΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ (10,50,20,50+v) Π±Π΅Π»ΡΠΌ ΠΠ°Π΄Π΅ΡΠΆΠΊΠ° (delay1*10)
ΠΠ°ΠΊΡΠ°ΡΠΈΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ (10,50,20,50+v) ΡΠ΅ΡΠ½ΡΠΌ
ΠΠΎΠ½Π΅Ρ ΡΠ²Π΅Ρ ΠΏΠ΅ΡΠ° — ΡΠ΅ΡΠ½ΡΠΉ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡ Π² ΡΠΎΡΠΊΠ΅ (hand, ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΠ΅ (yp))
Ρ ΡΠ°Π΄ΠΈΡΡΠΎΠΌ radius
ΡΠ²Π΅Ρ ΠΏΠ΅ΡΠ° — Π±Π΅Π»ΡΠΉ
vy=-ΠΌΠΎΠ΄ΡΠ»Ρ (v)*ΡΠΈΠ½ΡΡ (angle)*7
vx=v*ΠΊΠΎΡΠΈΠ½ΡΡ (angle)
yp=Π²ΡΠ·ΠΎΠ² findy (handx, yp, vx, vy)
direction=1
k1=0
Π΄Π»Ρ i ΠΎΡ 0 Π΄ΠΎ 800 Π΄Π΅Π»Π°ΡΡ
Π½Π°ΡΠ°Π»ΠΎ
tmp=hand-direction*(i-1)
ΡΠ²Π΅Ρ ΠΏΠ΅ΡΠ° — ΡΠ΅ΡΠ½ΡΠΉ
Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡ Π² ΡΠΎΡΠΊΠ΅ (ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΠ΅ (tmp),
ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΠ΅ (yp)) Ρ ΡΠ°Π΄ΠΈΡΡΠΎΠΌ radius
Π΅ΡΠ»ΠΈ handx-i<=135+radius ΠΈ handx-i>=135+radius
ΠΈ yp<230 ΠΈ yp>100 ΡΠΎ
Π½Π°ΡΠ°Π»ΠΎ
Π΅ΡΠ»ΠΈ direction=1 ΡΠΎ hand=handx-i-i
direction=-1
ΠΊΠΎΠ½Π΅Ρ
vy=vy-10.0/ΠΌΠΎΠ΄ΡΠ»Ρ (vx)
tmp1=ΠΌΠΎΠ΄ΡΠ»Ρ (handx-i-185)
tmp2=ΠΌΠΎΠ΄ΡΠ»Ρ (yp-190)
Π΅ΡΠ»ΠΈ tmp1<160 ΠΈ tmp2<160 ΡΠΎ
distance=ΠΊΠΎΡΠ΅Π½Ρ (tmp1*tmp1+tmp2*tmp2)
ΠΈΠ½Π°ΡΠ΅ distance=radius+10
Π΅ΡΠ»ΠΈ distance<=radius ΠΈ k=0 ΡΠΎ
Π½Π°ΡΠ°Π»ΠΎ
k1=Π°ΡΠΊΡΠ°Π½Π³Π΅Π½Ρ ((190-yp)/
(185-handx+i+0.1))
k1=(k1-Π°ΡΠΊΡΠ°Π½Π³Π΅Π½Ρ (vy/vx))*2+k1
vy=ΡΠΈΠ½ΡΡ (k1)*v
vx=ΠΊΠΎΡΠΈΠ½ΡΡ (k1)*v
k=1
ΠΊΠΎΠ½Π΅Ρ ΠΈΠ½Π°ΡΠ΅ k=0
y=Π²ΡΠ·ΠΎΠ² findy (handx-i/10,yp, vx, vy)
ΡΠ²Π΅Ρ ΠΏΠ΅ΡΠ° — Π±Π΅Π»ΡΠΉ Π΅ΡΠ»ΠΈ tmp>135 ΠΈ tmp<185 ΠΈ yp<=190 ΠΈ y>190 ΡΠΎ
Π½Π°ΡΠ°Π»ΠΎ ΠΠ°ΠΊΡΠ°ΡΠΈΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ
(550,20,600,40) ΡΠ΅ΡΠ½ΡΠΌ ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΠΏΠ΅ΡΠΎ Π² (550,30)
ΠΠ°ΠΏΠΈΡΠ°ΡΡ 'goal'
goal=1
ΠΊΠΎΠ½Π΅Ρ
Π΅ΡΠ»ΠΈ y<460-radius ΠΈ y>-50 ΠΈ handx-i>radius ΡΠΎ
Π½Π°ΡΠ°Π»ΠΎ
Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡ Π² ΡΠΎΡΠΊΠ΅
(hand-i*direction, ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΠ΅ (y))
Ρ ΡΠ°Π΄ΠΈΡΡΠΎΠΌ radius
Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ showbasket
Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ showplayer (x, angle)
yp=y
ΠΠ°Π΄Π΅ΡΠΆΠΊΠ° (delay1)
ΠΊΠΎΠ½Π΅Ρ
ΠΈΠ½Π°ΡΠ΅ break
ΠΊΠΎΠ½Π΅Ρ
Π΅ΡΠ»ΠΈ goal=0 ΡΠΎ
Π½Π°ΡΠ°Π»ΠΎ ΠΠ°ΠΊΡΠ°ΡΠΈΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ (550,20,600,40) ΡΠ΅ΡΠ½ΡΠΌ ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΠΏΠ΅ΡΠΎ Π² (550,30)
ΠΠ°ΠΏΠΈΡΠ°ΡΡ 'miss'
ΠΠΎΠ½Π΅Ρ
ΡΠ²Π΅Ρ ΠΏΠ΅ΡΠ° — ΡΠ΅ΡΠ½ΡΠΉ
Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡ Π² ΡΠΎΡΠΊΠ΅
(handx-i, ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΠ΅ (yp)) Ρ ΡΠ°Π΄ΠΈΡΡΠΎΠΌ radius
ΡΠ²Π΅Ρ ΠΏΠ΅ΡΠ° — Π±Π΅Π»ΡΠΉ
Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡ Π² ΡΠΎΡΠΊΠ΅ (handx, handy)
Ρ ΡΠ°Π΄ΠΈΡΡΠΎΠΌ radius
ΠΊΠΎΠ½Π΅Ρ Π½Π°ΡΠ°Π»ΠΎ
grdriver=detect
Π²ΠΊΠ»ΡΡΠΈΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ
initgraph (grdriver, grmode,' ')
errcode=graphresult
delay1=200
Π΅ΡΠ»ΠΈ errcode=grok ΡΠΎ
Π½Π°ΡΠ°Π»ΠΎ
radius=14
xprev=400
x=xprev
angleprev=pi/18
angle=angleprev
anglestep=pi/72
step=5
Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ showbasket
Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ showplayer (xprev, angleprev)
Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡ Π² ΡΠΎΡΠΊΠ΅ (handx, handy)
Ρ ΡΠ°Π΄ΠΈΡΡΠΎΠΌ radius
ΠΏΠΎΠΊΠ° key<>ESC Π΄Π΅Π»Π°ΡΡ
Π½Π°ΡΠ°Π»ΠΎ
Π‘ΡΠΈΡΡΠ²Π°Π΅ΠΌ key
change=1
Π΅ΡΠ»ΠΈ key='a' ΠΈ xprev>300 ΡΠΎ x=xprev-step
ΠΈΠ½Π°ΡΠ΅ Π΅ΡΠ»ΠΈ key='d' ΠΈ xprev<600 ΡΠΎ
x=xprev+step
ΠΈΠ½Π°ΡΠ΅ Π΅ΡΠ»ΠΈ key='s' ΡΠΎ
Π½Π°ΡΠ°Π»ΠΎ
Π΅ΡΠ»ΠΈ angle<0.5 ΡΠΎ
angle=angleprev+anglestep
ΠΊΠΎΠ½Π΅Ρ
ΠΈΠ½Π°ΡΠ΅ Π΅ΡΠ»ΠΈ key='w' ΡΠΎ
Π½Π°ΡΠ°Π»ΠΎ
Π΅ΡΠ»ΠΈ angle>-0.5 ΡΠΎ
angle=angleprev-anglestep
ΠΊΠΎΠ½Π΅Ρ
ΠΈΠ½Π°ΡΠ΅ Π΅ΡΠ»ΠΈ key=' ' ΡΠΎ
Π½Π°ΡΠ°Π»ΠΎ
ΠΡΠ·Π²Π°ΡΡ shot (x, angle) change=0
ΠΠΎΠ½Π΅Ρ
ΠΈΠ½Π°ΡΠ΅ change=0
Π΅ΡΠ»ΠΈ change=1 ΡΠΎ
Π½Π°ΡΠ°Π»ΠΎ
Π¦Π²Π΅Ρ ΠΏΠ΅ΡΠ° — ΡΠ΅ΡΠ½ΡΠΉ Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ showplayer (xprev, angleprev)
Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡ Π² ΡΠΎΡΠΊΠ΅ (handx, handy) Ρ ΡΠ°Π΄ΠΈΡΡΠΎΠΌ radius
Π¦Π²Π΅Ρ ΠΏΠ΅ΡΠ° — Π±Π΅Π»ΡΠΉ Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ showplayer (x, angle)
Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡ Π² ΡΠΎΡΠΊΠ΅ (handx, handy) Ρ ΡΠ°Π΄ΠΈΡΡΠΎΠΌ radius
xprev=x
angleprev=angle
ΠΊΠΎΠ½Π΅Ρ
ΠΊΠΎΠ½Π΅Ρ
Π²ΡΠΊΠ»ΡΡΠ°Π΅ΠΌ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ
ΠΊΠΎΠ½Π΅Ρ
ΠΈΠ½Π°ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ 'Graphics error:', grapherrormsg (errcode)
ΠΊΠΎΠ½Π΅Ρ
7 ΠΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ
8 Π’Π΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
program basketball;
uses graph, crt;{ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΡΠΎΠ΅ΠΊΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°}
var
grdriver, grmode, errcode: integer;
{ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ°}
x, xprev, step: integer;
{Π’Π΅ΠΊΡΡΠ°Ρ ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΈΠ³ΡΠΎΠΊΠ°, ΡΠ°Π³ ΠΈΠ³ΡΠΎΠΊΠ°}
radius:integer;{Π Π°Π΄ΠΈΡΡ ΠΌΡΡΠ°}
angle, angleprev, anglestep: real;{Π£Π³ΠΎΠ» Π½Π°ΠΊΠ»ΠΎΠ½Π°
ΡΡΠΊΠΈ (ΡΠ΅ΠΊΡΡΠΈΠΉ, ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ), ΡΠ°Π³ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ³Π»Π°}
key:char; {ΠΠ°ΠΆΠ°ΡΠ°Ρ ΠΊΠ»Π°Π²ΠΈΡΠ°}
change:integer; {ΠΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ Π±ΡΠ»Π° Π»ΠΈ Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ»Π°Π²ΠΈΡΠ°}
handx, handy, v: integer; {ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΡΠΊΠΈ, ΡΠΊΠΎΡΠΎΡΡΡ ΠΌΡΡΠ°}
delay1:integer; {ΠΠ°Π΄Π΅ΡΠΆΠΊΠ° Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π½Π° ΡΠΊΡΠ°Π½}
procedure showbasket;
{ΠΡΠΎΡΠ΅Π΄ΡΡΠ°, ΡΠΈΡΡΡΡΠ°Ρ Π±Π°ΡΠΊΠ΅ΡΠ±ΠΎΠ»ΡΠ½ΡΠΉ ΡΠΈΡ Ρ ΠΊΠΎΡΠ·ΠΈΠ½ΠΎΠΉ}
begin
moveto (130,100); {ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΠΌ ΠΏΠ΅ΡΠΎ Π² ΡΠΎΡΠΊΡ}
lineto (135,100); {Π ΠΈΡΡΠ΅ΠΌ Π»ΠΈΠ½ΠΈΡ Π΄ΠΎ ΡΠΎΡΠΊΠΈ}
lineto (135,230);
lineto (130,230);
lineto (130,100);
moveto (130,150);
lineto (85,175);
lineto (35,250);
lineto (5,460);
lineto (60,280);
lineto (85,175);
moveto (130,190);
lineto (90,215);
lineto (60,280);
lineto (65,460);
lineto (35,250);
lineto (90,215);
lineto (85,175);
lineto (130,190);
moveto (135,190);
lineto (185,190);
lineto (185,192);
lineto (135,192);
line (0,460,639,460); {Π ΠΈΡΡΠ΅ΠΌ ΠΏΠΎΠ»}
end;
function findy (x:real;y:real;vx:real;vy:real):real;
{Π€ΡΠ½ΠΊΡΠΈΡ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΌΡΡΠ° ΠΏΠΎ ΠΎΡΠΈ y}
var yc: real; {ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΌΡΡΠ° ΠΏΠΎ ΠΎΡΠΈ y}
begin
yc:=y-vy/sqrt (v*v+0.0001);
{ΠΡΡΠΈΡΠ»ΡΠ΅ΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΌΡΡΠ°}
findy:=yc; {ΠΠΎΠ·Π²ΡΠ°Ρ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ}
end;
procedure showplayer (x:integer;angle:real);
{ΠΡΠΎΡΠ΅Π΄ΡΡΠ°, ΡΠΈΡΡΡΡΠ°Ρ ΠΈΠ³ΡΠΎΠΊΠ°}
begin
ellipse (x, 350,0,360,23,40);{Π ΠΈΡΡΠ΅ΠΌ ΡΡΠ»ΠΎΠ²ΠΈΡΠ΅}
line (x-10,385,x-20,459); {Π ΠΈΡΡΠ΅ΠΌ }
line (x+10,385,x+20,459); {Π½ΠΎΠ³ΠΈ}
circle (x, 297,13); {Π ΠΈΡΡΠ΅ΠΌ Π³ΠΎΠ»ΠΎΠ²Ρ}
handx:=x-round (60*cos (angle)); {ΠΡΡΠΈΡΠ»ΡΠ΅ΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅}
handy:=297+round (60*sin (angle));{ΡΡΠΊΠΈ}
line (x, 330, handx, handy); {Π ΠΈΡΡΠ΅ΠΌ ΡΡΠΊΠΈ}
end;
procedure shot (x:integer;angle:real);
{ΠΡΠΎΡΠ΅Π΄ΡΡΠ° «ΠΡΠΎΡΠΎΠΊ ΠΌΡΡΠ°» }
var i, direction, hand, goal: integer;{ΠΠ΅ΡΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΊΠ»Π°,
Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ ΠΌΡΡΠ°, ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π±ΡΠ» Π»ΠΈ Π³ΠΎΠ»}
y, yp, vx, vy: real;
{Π’Π΅ΠΊΡΡΠ°Ρ ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΌΡΡΠ°, ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΌΡΡΠ° ΠΏΠΎ ΠΎΡΡΠΌ x, y}
distance, k1: real;{Π Π°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΡ ΠΌΡΡΠ° Π΄ΠΎ «ΡΠ³Π»Π°» ΠΊΠΎΡΠ·ΠΈΠ½Ρ, ΡΠ³ΠΎΠ» Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΌΡΡΠ°}
tmp, tmp1, tmp2,k:real;{ΠΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΡΠ΅ΡΠΌΠ΅Π½Π½ΡΠ΅}
begin
goal:=0; {ΠΠ°ΡΠ°Π»ΡΠ½Π°Ρ}
i:=1; {}
v:=0; {}
hand:=handx; {ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ°}
yp:=handy; {}
direction:=1; {}
k:=0; {}
yp:=handy; {ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ }
SetFillStyle (1,0); {ΠΠ°ΡΠΈΡΠ°Π΅ΠΌ ΠΌΠ΅ΡΡΠΎ, Π³Π΄Π΅ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ}
Bar (550,20,600,40); {ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠΎΡΠΊΠ°}
while not keypressed do {ΠΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ»Π°Π²ΠΈΡΠ°}
begin
if (v<50) then v:=v+1 {Π ΠΈΡΡΠ΅ΠΌ}
else v:=0; {}
line (10,100,20,100); {Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ}
SetFillStyle (1,15); {}
Bar (10,50,20,50+v); {ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ}
delay (delay1*10); {}
SetFillStyle (1,0); {}
Bar (10,50,20,50+v); {ΡΠΈΠ»Ρ Π±ΡΠΎΡΠΊΠ°}
end;
readkey; {ΠΠ΄Π΅ΠΌ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡΠΈ}
setcolor (0); {Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ²Π΅Ρ ΠΏΠ΅ΡΠ° Π² ΡΠ΅ΡΠ½ΡΠΉ}
circle (handx, round (yp), radius);{ΠΠ°ΠΊΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΌΡΡ}
setcolor (15); {Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ²Π΅Ρ ΠΏΠ΅ΡΠ° Π² Π±Π΅Π»ΡΠΉ}
vy:=abs (v)*sin (-angle)*7;{Π‘ΡΠΈΡΠ°Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ}
vx:=v*cos (angle); {Π²Π΅ΠΊΡΠΎΡΠ° ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΏΠΎ ΠΎΡΡΠΌ}
for i:=0 to 800 do
begin
tmp:=hand-direction*(i-1);
setcolor (0);{Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ²Π΅Ρ ΠΏΡΠ΅ΡΠ° Π² ΡΠ΅ΡΠ½ΡΠΉ}
circle (round (tmp), round (yp), radius);
{ΠΠ°ΠΊΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΌΡΡ}
if (handx-i<=135+radius) and
(handx-i>=135+radius) and (yp<230) and (yp>100) then {ΠΡΠ»ΠΈ ΠΌΡΡ ΡΠ΄Π°ΡΡΠ΅ΡΡΡ ΠΎΠ± ΡΠΈΡ}
begin
if (direction=1) then
hand:=handx-i-i;{ΠΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅}
direction:=-1; {Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ}
end;
vy:=vy-10.0/abs (vx);
{ΠΠ΅ΡΠ΅ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎ ΠΎΡΠΈ y (ΠΏΡΠΈΡΡΠΆΠ΅Π½ΠΈΠ΅)}
tmp1:=abs (handx-i-185); {Π‘ΡΠΈΡΠ°Π΅ΠΌ}
tmp2:=abs (yp-190); {ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅}
if (tmp1<160) and (tmp2<160) then {ΠΎΡ ΠΌΡΡΠ° Π΄ΠΎ}
distance:=sqrt (tmp1*tmp1+tmp2*tmp2){" ΡΠ³Π»Π°" }
else distance:=radius+10; {ΠΊΠΎΡΠ·ΠΈΠ½Ρ}
if (distance<=radius) and (k=0) then
{ΠΡΠ»ΠΈ ΠΌΡΡ ΡΠ΄Π°ΡΡΠ΅ΡΡΡ ΠΎΠ± «ΡΠ³ΠΎΠ»» ΠΊΠΎΡΠ·ΠΈΠ½Ρ, ΠΈ ΠΌΡ ΡΡΠΎ
Π΅ΡΠ΅ Π½Π΅ ΡΡΠΈΡΡΠ²Π°Π»ΠΈ}
begin
k1:=arctan ((190-yp)/
(185-handx+i+0.1));
k1:=(k1-arctan (vy/vx))*2+k1;
vy:=sin (k1)*v; {ΠΠ΅ΡΠ΅ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ}
vx:=cos (k1)*v; {ΡΠΊΠΎΡΠΎΡΡΡ ΠΌΡΡΠ°}
k:=1;
end
else k:=0;
y:=findy (handx-i/10,yp, vx, vy);
{Π‘ΡΠΈΡΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΌΡΡΠ° ΠΏΠΎ ΠΎΡΠΈ y}
setcolor (15);{Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ²Π΅Ρ ΠΏΡΠ΅ΡΠ° Π² Π±Π΅Π»ΡΠΉ}
if (tmp>135) and (tmp<185) and (yp<=190)
and (y>190) then
begin
SetFillStyle (1,0); {ΠΠ°ΡΠΈΡΠ°Π΅ΠΌ}
Bar (550,20,600,40);{ΠΠ°ΡΠΈΡΠ°Π΅ΠΌ}
MoveTo (550,30); {Π½Π°Π΄ΠΏΠΈΡΡΡ}
OutText ('goal'); {ΠΠΈΡΠ΅ΠΌ 'goal'}
goal:=1; {ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ, ΡΡΠΎ Π³ΠΎΠ» Π±ΡΠ»}
end;
if (y<(460-radius)) and (y>-50)
and (handx-i>radius) then
{ΠΡΠ»ΠΈ ΠΌΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΠ΅ΡΡΠΈΡΠΎΡΠΈΠΈ ΠΏΠ»ΠΎΡΠ°Π΄ΠΊΠΈ}
begin
circle (hand-i*direction, round (y), radius);
showbasket;
{Π ΠΈΡΡΠ΅ΠΌ Π±Π°ΡΠΊΠ΅ΡΠ±ΠΎΠ»ΡΠ½ΡΠΉ ΡΠΈΡ Ρ ΠΊΠΎΡΠ·ΠΈΠ½ΠΎΠΉ}
showplayer (x, angle);{Π ΠΈΡΡΠ΅ΠΌ ΠΈΠ³ΡΠΎΠΊΠ°}
yp:=y;
delay (delay1); {ΠΠ°Π΄Π΅ΡΠΆΠΊΠ°}
end
else break; {ΠΡΡ ΠΎΠ΄ΠΈΠΌ ΠΈΠ· ΡΠΈΠΊΠ»Π° ΠΏΠΎΠ»Π΅ΡΠ° ΠΌΡΡΠ°}
end;
if (goal=0) then {ΠΡΠ»ΠΈ Π³ΠΎΠ»Π° Π½Π΅ Π±ΡΠ»ΠΎ}
begin
SetFillStyle (1,0); {ΠΠ°ΡΠΈΡΠ°Π΅ΠΌ}
Bar (550,20,600,40); {ΠΌΠ΅ΡΡΠΎ Ρ}
MoveTo (550,30); {Π½Π°Π΄ΠΏΠΈΡΡΡ}
OutText ('miss'); {ΠΠΈΡΠ΅ΠΌ 'miss'}
end;
setcolor (0); {Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ²Π΅Ρ ΠΏΡΠ΅ΡΠ° Π² ΡΠ΅ΡΠ½ΡΠΉ}
circle (handx-i, round (yp), radius);{ΠΠ°ΠΊΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΌΡΡ}
setcolor (15);
{Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ²Π΅Ρ ΠΏΡΠ΅ΡΠ° Π² ΡΠ΅ΡΠ½ΡΠΉ Π±Π΅Π»ΡΠΉ}
circle (handx, handy, radius); {Π ΠΈΡΡΠ΅ΠΌ ΠΌΡΡ}
end;
begin
grdriver:=detect; {ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ}
initgraph (grdriver, grmode,' ');{Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ}
errcode:=graphresult; {ΡΠ΅ΠΆΠΈΠΌΠ°}
delay1:=200;
{Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ (Π΅ΡΠ»ΠΈ ΠΏΡΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ
(ΡΠ»Π°Π±ΡΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ) Π΅Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ)}
if errcode=grok then {Π΅ΡΠ»ΠΈ Π½Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ Π² Π³ΡΠ°ΡΠΈΠΊΠ΅}
begin
radius:=14; {ΠΠ°ΡΠ°Π»ΡΠ½Π°Ρ}
xprev:=400; {ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ°}
x:=xprev; {ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ }
angleprev:=pi/18; {ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΡ }
angle:=angleprev; {Π²}
anglestep:=pi/72; {Π½Π°ΡΠ°Π»Π΅}
step:=5; {ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ}
showbasket;
{Π ΠΈΡΡΠ΅ΠΌ Π±Π°ΡΠΊΠ΅ΡΠ±ΠΎΠ»ΡΠ½ΡΠΉ ΡΠΈΡ Ρ ΠΊΠΎΡΠ·ΠΈΠ½ΠΎΠΉ}
showplayer (xprev, angleprev);{Π ΠΈΡΡΠ΅ΠΌ ΠΈΠ³ΡΠΎΠΊΠ°}
circle (handx, handy, radius); {Π ΠΈΡΡΠ΅ΠΌ ΠΌΡΡ}
while (key<>#27) do {ΠΠΎΠΊΠ° Π½Π΅ Π±ΡΠ»Π° Π½Π°ΠΆΠ°ΡΠ° ESC}
begin
key:=readkey;{Π‘ΡΠΈΡΡΠ²Π°Π΅ΠΌ Π½Π°ΠΆΠ°ΡΡΡ ΠΊΠ»Π°Π²ΠΈΡΡ}
change:=1;
if (key='a') and (xprev>300) then
x:=xprev-step
{ΠΠ²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ³ΡΠΎΠΊΠ° Π²Π»Π΅Π²ΠΎ}
else if (key='d') and (xprev<600) then
x:=xprev+step
{ΠΠ²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ³ΡΠΎΠΊΠ° Π²ΠΏΡΠ°Π²ΠΎ}
else if (key='s') then
begin
if (angle<0.5) then
angle:=angleprev+anglestep
{ΠΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΡΠΊΡ}
end
else if (key='w') then
begin
if (angle>-0.5)
then
angle:=angleprev;
anglestep
{ΠΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΡΠΊΡ}
end
else if (key=' ') then
begin
shot (x, angle);
{ΠΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΠΌ Π±ΡΠΎΡΠΎΠΊ}
change:=0;
end
else change:=0;
if (change=1) then
{ΠΡΠ»ΠΈ ΠΈΠ³ΡΠΎΠΊ Π΄Π²ΠΈΠ½ΡΠ»ΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ½ΡΠ» ΡΡΠΊΡ}
begin
SetColor (0);
{Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ²Π΅Ρ ΠΏΡΠ΅ΡΠ° Π² ΡΠ΅ΡΠ½ΡΠΉ}
showplayer (xprev, angleprev);
{ΠΠ°ΠΊΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΈΠ³ΡΠΎΠΊΠ°}
circle (handx, handy, radius); {ΠΠ°ΠΊΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΌΡΡ}
setcolor (15);
{Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ²Π΅Ρ ΠΏΡΠ΅ΡΠ° Π² Π±Π΅Π»ΡΠΉ}
showplayer (x, angle);{Π ΠΈΡΡΠ΅ΠΌ ΠΈΠ³ΡΠΎΠΊΠ°}
circle (handx, handy, radius);
{Π ΠΈΡΡΠ΅ΠΌ ΠΡΡ}
xprev:=x;
angleprev:=angle;
end
end;
closegraph;{ΠΡΠΊΠ»ΡΡΠ°Π΅ΠΌ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠ΅ΠΆΠΈΠΌ}
end
else writeln ('Graphics error:',
grapherrormsg (errcode));
{ΠΠΈΡΠ΅ΠΌ ΡΠΎΠΎΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π³ΡΠ°ΡΠΈΠΊΠΈ}
end.