2017-11-06

Игра в теннис на Pascal ABC

Игра в теннис на Pascal ABC

«Теннис». Написать программу, имитирующую игру в теннис. Игровое поле представляет собой прямоугольник, по которому движется теннисный мячик. С правой стороны располагается «ракетка» игрока, которую можно передвигать вверх или вниз. Игра продолжается до тех пор, пока игрок не пропустит мячик 5 раз. В качестве второго игрока может выступать компьютер или другой игрок.

Код:

Копировать
  1. uses GraphABC,Events,Utils;                 //необходимые библиотеки подключены
  2. var pr,px,py,kx,ky,ku,pc,s: integer;          //переменные: положение ракетки, координаты мяча, коэффициенты отражения, положение ракетки компьютера
  3.  
  4. procedure KeyDown(Key: integer);           //процедура обработки нажтия клавиши
  5. begin
  6.   case Key of
  7. VK_Up: if pr>10 then pr:=pr-10;           //если вверх, и если ракетка не достигла края экрана, сместить координаты ракетки на 10 вверх
  8. VK_Down: if pr<490 then pr:=pr+10;        //то же, только вниз
  9.   end;
  10. end;
  11.  
  12. procedure Pm;                             //процедура определения координат мячика
  13. begin
  14. if px<10 then
  15.    begin
  16.    kx:=kx*(-1);                //если достиг стенки левой - поменять коэффициент смещения по х на противоположный
  17.    s:=random(2);
  18.    if s=1 then ky:=ky*(-1);
  19.    end;
  20. if (py<10) or (py>490) then ky:=ky*(-1);  //если достиг стенки верхней или нижней - поменять коэффициент смещения на противоположный
  21. if px>590 then                            //если достиг правой (игрока) стенки, проверяем
  22.    if (py>pr-20) and (py<pr+20) then kx:=kx*(-1) else  //если координаты мяча совпадают с координатами ракетки, меняем коэффициент смешения по х на противоположный
  23.    begin                                 //иначе
  24.    showmessage('Вы упустили мячик!');    //выводим сообщение
  25.    inc(ku);                              //увеличиваем счетчик упущенных мячей
  26.    px:=15;                               //возвращаем мяч в исходную позицию у противоположной стенки
  27.    py:=250;
  28.    end;
  29. px:=px+kx;                               //смещаем координаты на коэффициенты смещения
  30. py:=py+ky;
  31. end;
  32.  
  33. begin
  34. lockdrawing;                            //запрет прорисовки в окне (мигание убираем)
  35. setwindowsize(600,500);                 //размер окна
  36. kx:=5; ky:=1; px:=15; py:=250; pr:=250; //задаем координаты смещения и позицию мяча
  37. repeat                                  //цикл с постусловием
  38.   clearwindow;                          //очистить окно
  39.   setbrushcolor(clgreen);               //цвет кисти зеленый
  40.   rectangle(5,5,595,495);               //прямоугольник - поле
  41.   Pm;                                   //процедура определения координат мяча
  42.   setbrushcolor(clwhite);               //цвет кисти - белый
  43.   circle(px,py,10);                     //мяч
  44.   OnKeyDown:=KeyDown;                   //процедура нажатия клавиши
  45.   pc:=py;                               //ракетка противника следует за мячом неотступно...
  46.   setbrushcolor(clblack);               //цвет кисти - черный
  47.   rectangle(592,pr-20,597,pr+20);       //ракетки
  48.   rectangle(3,pc-20,8,pc+20);
  49.   sleep(25);                             //задержка
  50.   redraw;                               //перерисовка
  51. until ku=5;                             //цикл повторяется до 5 пропущенных мячей
  52. end.

article

Авторизация
Логин:
Пароль:

Добро пожаловать,
гость сайта!

Статистика по сайту:

Сегодня сайт уже посетили 60 чел.

Количество всех статей на сайте: 463.

Количество online-тестов: 214.