Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Паскаль
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 17.04.2019, 07:39   #1
Fordy42
 
Регистрация: 17.04.2019
Сообщений: 6
Репутация: 10
По умолчанию Модернизовать теннис

В чем же заключается модернизация:
Добавить меню выбора(*1/2 игрока*)
После 5 пропущенных мячей выводилось'Игра окончена') или ('Победил игрок 1/2/компьютер')
Код:
uses crt,GraphABC,Events,Utils;                
var 
pr,px,py,kx,ky,ku,kc,pc,s: integer;         
(*****************************************************************************************************) 
procedure KeyDown(Key: integer);          
begin
  case Key of
VK_Up: if pr>10 then pr:=pr-10;          
VK_Down: if pr<490 then pr:=pr+10;        
VK_S: if pc<490 then pc:=pc+10;
VK_W: if pc>10 then pc:=pc-10;
  end;
end;
(*****************************************************************************************************)  
procedure Pm;                            
begin
if px<10 then                           
   begin
   if (py>pc-20) and (py<pc+20) then kx:=kx*(-1) else  
      begin                                
      showmessage('Вам забили!!!');    
      inc(kc);                             
      px:=485;                               
      py:=250;
      end;
   s:=random(2);
   if s=1 then ky:=ky*(-1);
   end;
if (py<10) or (py>490) then ky:=ky*(-1);  
if px>590 then                          
   if (py>pr-20) and (py<pr+20) then kx:=kx*(-1) else  
   begin                             
   showmessage('Вам забили!!!');   
   inc(ku);                              
   px:=15;                            
   py:=250;
   s:=random(2);
   if s=1 then ky:=ky*(-1);
   end;
px:=px+kx;                              
py:=py+ky;
end;
(*****************************************************************************************************) 
 begin
lockdrawing;                           
setwindowsize(600,500);                
kx:=5; ky:=1; px:=15; py:=250; pc:=250; pr:=250; 
  repeat                                 
   clearwindow;                          
   setbrushcolor(clmagenta);               
   rectangle(5,5,595,495);              
   Pm;                                 
   setbrushcolor(clred);              
   circle(px,py,10);                    
   OnKeyDown:=KeyDown;                   
   setbrushcolor(clgreen);              
   rectangle(592,pr-20,597,pr+20);       
   rectangle(3,pc-20,8,pc+20);
   sleep(25);                             
   redraw;                               
  until (ku=5) or (kc=5);                 
END.

Последний раз редактировалось Аватар; 17.04.2019 в 09:27.
Fordy42 вне форума   Ответить с цитированием
Старый 17.04.2019, 12:42   #2
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 25,613
Репутация: 5617
По умолчанию

Это код для PascalABC.NET.


Цитата:
Сообщение от Fordy42 Посмотреть сообщение
Добавить меню выбора(*1/2 игрока*)
меню то перед игрой добавить несложно.
но, если игрок один, то что должно быть? Игра "со стенкой"? потому что реализовывать ИИ (логику компьютера, который должен перемещать ракетку и отбивать удары) - это не банально и одной-двумя строчками не ограничится.


Цитата:
Сообщение от Fordy42 Посмотреть сообщение
Код:
OnKeyDown:=KeyDown;
это нужно вынести из цикла:
Код:
 begin
  lockdrawing;                           
  setwindowsize(600,500);                
  kx:=5; ky:=1; px:=15; py:=250; pc:=250; pr:=250; 
  OnKeyDown:=KeyDown;                   
  repeat

Цитата:
Сообщение от Fordy42 Посмотреть сообщение
Код:
showmessage('Вам забили!!!');
у меня ваш ShowMessage выдаётся куда-то снизу под рабочим окном игры, его не видно.
да и я бы не стал использовать модальное окно, а просто выводил результат (счёт игры) прямо на экран
например, через
Код:
TextOut( 250, 10, 'Счёт ' + IntToStr(ku)+' : '+IntToStr(kc));
Serge_Bliznykov на форуме   Ответить с цитированием
Старый 21.04.2019, 15:25   #3
Fordy42
 
Регистрация: 17.04.2019
Сообщений: 6
Репутация: 10
По умолчанию

Благодарю)
Можете еще помочь?
Так чтобы счет виден был постоянно и после окончании игры был выбор начать игру заново.
Fordy42 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Настольный теннис Анастасия1223 Паскаль 0 04.12.2015 16:56
Разрабатываем игру теннис DeKot Gamedev - cоздание игр: Unity, OpenGL, DirectX 28 28.10.2011 19:05
Теннис uTorrent Общие вопросы C/C++ 3 13.06.2011 02:55
Игра Теннис на C# uTorrent C# (си шарп) 2 15.05.2011 20:37
настольный теннис sverhuVniz Паскаль 3 15.11.2008 16:59


18:55.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru