, 'n a m e l ',n a m e l);
. 'n a m e 2 ',n a m e 2 ) ;
n a m e l: = W in . R e a d s t r in g ( ' O p t i o n s '
nam e2: = W in . R e a d s t r in g ( ' O p t io n s '
s p e e d b a l l l : = W in . R e a d s t r in g
( 'O p t io n s ' , ' s p e e d b a ll' , s p e e d b a l l l ) ;
s p e e d l: = W in . R e a d St r i n g
( 'O p t i o n s ', ' s p e e d ', s p e e d l);
s c o r e l : = W in . R e a d s t r in g
( 'O p t i o n s ', ' s c o r e ', s c o r e l ) ;
W in .F r e e ;
l a b e l l . C a p t i o n : = n a m e l;
l a b e l 2 . C a p tio n ;= n a m e 2 ;
s p e e d b a l l : = s t r t o i n t ( s p e e d b a l l l ) ;
s p e e d : = s t r t o i n t ( s p e e d l ) ;
s c o r e : = s t r t o i n t ( s c o r e l ) ;
s p e e d : =speed+3 5 ;
s p e e d b a l1 2 := s p e e d b a ll;
В событии гловной формы
o n c re a te
напиш ите точно та -
кой код, только уберите первую строку
(s e t t i n g s . showmodal).
Пункт м еню Н астройки > П о умолчанию :
W i n : = T I n i F i l e . C r e a t e ( p a t h ) ;
'n a m e l ', ' P la y e r 1«
' nam e2' , ' P la y e r 2 '
' s p e e d b a ll' , ' 5 ' ) ;
W in . W r it e S t r in g ( 'O p t io n s '
W in . W r it e S t r in g ( 'O p t i o n s ’
W in . W r it e S t r in g ( 'O p t io n s '
W in . W r it e S t r in g ( 'O p t i o n s ', 's p e e d ', '5 ') ;
W in . W r it e S t r in g ( 'O p t i o n s ', 's c o r e ', '5 ') ;
W in .F re e ;
l a b e ll . C a p t io n : = 'P l a y e r l ';
la b e l2 . C a p t io n := 'P l a y e r 2 'j
s p e e d b a ll: = 5 ;
s p e e d :=4 0 ;
s c o r e : =5;
s p e e d b a ll2 : = s p e e d b a ll;
Теперь м ож но привести в движение игроков. Управление
будет таким:
S
первый игрок: W — вверх, S — вниз, А — влево, D —
вправо;
^
второй игрок: up arrow — вверх, d ow n arrow — вниз,
left arrow — влево, right arrow — вправо.
Н апиш ите код для события гловной формы опКеуир:
p la y : = t r u e ;
/ /И грок1
i f k e y = 8 7 t h e n g o .T o p := g o .T o p -s p e e d ; / / в в е р х
i f k e y = 8 3 t h e n g o .T o p := g o .T o p + s p e e d ; //вн и з
i f k e y = 6 5 t h e n g o . l e f t : = g o . l e f t - s p e e d ; //вл е во
i f k e y = 6 8 t h e n g o . le f t : = g o . l e f t + s p e e d ; / / вп р аво
//п р о в е р ка на вы ход и гр о к а за пределы п о ля
i f g o .t o p x fo r m l.h e ig h t -1 3 3 th e n g o .to p := g o .t o p -s p e e d ;
i f g o .t o p < 0 t h e n g o . t o p := g o .t o p + s p e e d ;
i f g o . L e f t < 0 t h e n g o . L e f t : = g o . L e f t + s p e e d ;
i f g o .L e ftx fo rm l.W id th -4 5 th e n go . L e ft := g o . L e ft-sp e e d ;
/ /И грок2
i f k e y = 3 8 t h e n g o 2 -T o p : =go2 .T o p -sp e e d ; / / в в е р х
i f k e y = 4 0 t h e n g o 2 .T o p : = g o 2 . T o p + sp e e d ; //вн и з
i f k e y = 3 7 t h e n g o 2 . le f t : = g o 2 . le f t - s p e e d ; //вл е во
i f k e y = 3 9 t h e n g o 2 . l e f t : = g o 2 . le f t + s p e e d ; / /вп р аво
/ /пр о в ерка на вы ход и гр о к а за пределы п о ля
i f g o 2 .to p > fo rm l.h e ig h t-1 3 3 then go 2.to p := go 2 .to p -sp e e d ,
i f g o 2 .t o p < 0 th e n g o 2 -t o p := g o 2 -t o p + s p e e d ;
i f go 2 L e f t < 0 t h e n g o 2 - L e f t : = g o 2 - L e f t + s p e e d ;
i f g o 2 .Le ft>form l.W id th -4 5 then go 2 .L e f t :=go2.Left-sp eed ;
end;
П осл е этого о б а игрока смогут двигаться по полю при н а -
жатии соответствую щ их клавиш. Для того чтобы в игру уже
м ож но было играть, н ад о заполнить с о -
бытие тайм ера:
i f p la y = t r u e t h e n b e g in
/ /пр оверка на с то лк н о в е н и е мяча со
сте н к о й
i f ( b a l l . L e f t < = 0 ) o r ( b a l l . L e f t > =
f o r m l. W id t h - b a ll. W id t h ) th e n
s p e e d b a ll: = - s p e e d b a ll;
i f ( b a ll. T o p < = 0 ) o r ( b a ll. T o p > =
f o r m l. H e ig h t - b a ll. H e ig h t - 8 5 ) th e n
s p e e d b a ll2 : = - s p e e d b a ll2 ;
/ /о тб и в а н и е игрокам и мяча
i f ( b a l l . L e f t < g o . L e f t ) o r ( b a l l . L e f t > g o 2 . L e f t ) th e n
p l a y := t r u e
e ls e b e g in
i f ( b a l l .L e f t < = g o .W i d t h + g o .L e f t ) a n d ( ( b a l l .T o p > =
g o .T o p )
an d (b a ll.T o p < = g o .T o p + g O .w i d t h ))
th e n b e g in
s p e e d b a ll: = -s p e e d b a ll;
s p e e d b a ll2 : = -s p e e d b a ll2 ;
e n d ;
i f (b a l l .L e f t + b a l l .W i d t h > = g o 2 .L e f t ) a n d ( (b a ll.T o p > =
g o 2 .T o p )
an d ( b a l l . T o p < = g o 2 . T o p + g o 2 . h e i g h t ) )
th e n b e g in
s p e e d b a ll: = - s p e e d b a l1 ;
s p e e d b a ll2 := -s p e e d b a ll2 ;
e n d ;
e n d ;
/ / движ ение мяча
b a l l . L e f t : = b a ll.L e f t + s p e e d b a l l;
b a l l . T o p . = b a l l . T o p + s p e e d b a ll2 ;
//проверка на с то лк н о в е н и е с защищаемой игроком сте но й
i f b a l l . L e f t > f o r m l . W i d t h - 17 th e n s c l . C a p t i o n : = i n t -
T O s t r ( s t r t o i n t ( s c l . C a p t i o n ) + 1 ) ;
i f b a l l . L e f t < l th e n s c 2 - C a p t i o n := i n t T O s t r ( s t r t o i n t
( s c 2 -C a p t i o n ) + 1 ) ;
/ / п о с л е каж дого в ы и гр а н н о го мяча про вер яем , не с т а л
л и он последним
i f s t r t o i n t ( s c l . C a p t i o n ) = s c o re th e n / / е с л и п о б е д и л
первы й
b e g in
// о ста н а в ли в а е м и гр у
p l a y : = f a i s e ;
//сообщ аем о п о б е де п е р в о го и о с ч е т е
show m essage( 'П о б е д и л '+ n a m e l+ '! '# 1 3 # 1 0 + 'С ч е т :
'+ s c l . C a p t i o n + ': '+ S C 2 . C a p t i o n ) ;
e n d ;
i f s t r t o i n t (s c 2 .C a p t io n ) = s c o re th e n / / е с л и п о б е да за
вторым и гроком
b e g in
p l a y : = f a l s e ; //пишем, ч то п о б е д и л в то р о й и г р о к , и
сообщаем с ч е т
show m essage( ' П о б е д и л '+ n a m e 2 + '! '# 1 3 # 1 0 + С ч е т:
'+ s c l . C a p t i o n + ': '+ s c 2 .C a p t i o n ) ;
e n d ;
e n d ;
П о ком ментариям долж но быть все понятно. Теперь допи-
ш ем м еню и некоторы е мелочи.
М е н ю И гр а > Начать:
s c l C a p t i o n : = '0 ';
sc2 C a p t i o n := ' 0 ' ;
g o .T o p = 5 ;
g o . l e f t : = 0 ;
g o 2 .T o p : = 5 ;
go2 L e f t := f o r m l .W i d t h -4 5 ;
b a l l L e f t := 1 0 0 ;
b a l l To p = g o .T o p + 1 2 0 ;
p l a y : = t r u e ;
Здесь обнуляются все данные, ставятся на свои м еста игро-
ки и мяч, после чего начинается игра. Для того чтобы игра ос-
тановилась, наж ав на пункт
Пауза,
напиш ите одну строку:
p l a y : = f
a ise . Как вы уже догадались, чтобы продолжить игру,
надо написать код в событии пункта
Продолжить:
p la y : =tru e .
Для того чтобы игра хо р о ш о выглядела
при любых разреш ениях экрана, чтобы не
было никаких смещений и ош и бок при из-
менениях разм ера окна, надо в событии
формы
o n R e s ize
написать такой код:
i f f o r m l.W id th < 7 5 0 th e n
f o r m l.W id t h := 7 5 0 ; / /пр о в е р ка н а ми-
нимальную ширину
i f f o r m l.H e ig h t < 5 0 0 th e n f o r m l.
H e ig h t:= 5 0 0 ; / /то же самое д л я высоты
Окончание на стр. 45
М О Й К О М П Ь Ю Т Е Р
предыдущая страница 41 Мой Компьютер 2004 42 читать онлайн следующая страница 43 Мой Компьютер 2004 42 читать онлайн Домой Выключить/включить текст