0 / 0 / 4
Регистрация: 22.03.2011
Сообщений: 39

Написать программу, имитирующую игру в теннис

10.08.2012, 22:22. Показов 28125. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
«Теннис». Написать программу, имитирующую игру в теннис. Игровое поле представляет собой прямоугольник, по которому движется теннисный мячик. С правой стороны располагается «ракетка» игрока, которую можно передвигать вверх или вниз. Игра продолжается до тех пор, пока игрок не пропустит мячик 5 раз. В качестве второго игрока может выступать компьютер или другой игрок.
За ранее благодарен!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.08.2012, 22:22
Ответы с готовыми решениями:

Написать игру "теннис"
помогите сделать игру теннис в турбо паскале примерно вот так l * l чтоб две палки можно было...

Написать текстовую игру в большой теннис на Паскале
Необходимо разработать текстовую игру в большой теннис, где мы задаём параметры подачи для первого...

Написать программу, имитирующую работу простейшего калькулятора
Написать программу, записывающую в каждый элемент двумерного массива результат вычисления функции,...

29
0 / 0 / 4
Регистрация: 22.03.2011
Сообщений: 39
15.08.2012, 09:36  [ТС]
Студворк — интернет-сервис помощи студентам
ребяяяят как окончательно выглядит прога?
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
15.08.2012, 12:29
rassamaha42, что уж списать тяжко?
КонецСвета, с позволения. Tab у меня не заработал, сделал тупо влево-вправо стрелками соотвественно вверх-вниз.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
uses crt,GraphABC,Events,Utils;                 //необходимые библиотеки подключены
var pr,px,py,kx,ky,ku,kc,pc,s: integer;          //переменные: положение ракетки, координаты мяча, коэффициенты отражения, положение ракетки компьютера
    c: char;                                //выбор пункта из меню
procedure KeyDown(Key: integer);           //процедура обработки нажтия клавиши
begin
  case Key of
VK_Up: if pr>10 then pr:=pr-10;           //если вверх, и если ракетка не достигла края экрана, сместить координаты ракетки на 10 вверх
VK_Down: if pr<490 then pr:=pr+10;        //то же, только вниз
VK_LEFT: if pc>10 then pc:=pc-10;
VK_right: if pc<490 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;
 
procedure Menu;
begin
textout(150,70,'Выбор режима: 1 игрок, 2 игрока');
c:=readkey;
textout(420,70,c);
readln;
end;
 
begin
hidecursor;
setwindowsize(600,500);                 //размер окна
menu;                                   //меню игры
lockdrawing;                            //запрет прорисовки в окне (мигание убираем)
kx:=5; ky:=1; px:=15; py:=250; pc:=250; pr:=250; //задаем координаты смещения и позицию мяча
repeat                                  //цикл с постусловием
  clearwindow;                          //очистить окно
  setbrushcolor(clgreen);               //цвет кисти зеленый
  rectangle(5,5,595,495);               //прямоугольник - поле
  Pm;                                   //процедура определения координат мяча
  setbrushcolor(clwhite);               //цвет кисти - белый
  circle(px,py,10);                     //мяч
  OnKeyDown:=KeyDown;                   //процедура нажатия клавиши
  if c='1' then                         // 1-1игрок, в остальных случаях 2 игрока
   pc:=py;                                //ракетка противника следует за мячом неотступно...
  setbrushcolor(clblack);               //цвет кисти - черный
  rectangle(592,pr-20,597,pr+20);       //ракетки
  rectangle(3,pc-20,8,pc+20);
  sleep(25);                             //задержка
  redraw;                               //перерисовка
until (ku=5) or (kc=5);                 //цикл повторяется до 5 пропущенных мячей
end.
1
0 / 0 / 4
Регистрация: 22.03.2011
Сообщений: 39
15.08.2012, 12:30  [ТС]
я просто непонял как собрать
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
15.08.2012, 12:30
rassamaha42, теперь все работает?
0
0 / 0 / 4
Регистрация: 22.03.2011
Сообщений: 39
15.08.2012, 12:31  [ТС]
Вы на какой версии паскаля работаете?
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
15.08.2012, 12:32
Цитата Сообщение от rassamaha42 Посмотреть сообщение
Вы на какой версии паскаля работаете?
Ну, лично этот код проверял на abc 3.0.1.35 от 2007 года.
Для abc.net желательно для корректности кое-что переделать.
Код
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
uses GraphABC,Events,Utils;                 //необходимые библиотеки подключены
var pr,px,py,kx,ky,ku,kc,pc,s: integer;          //переменные: положение ракетки, координаты мяча, коэффициенты отражения, положение ракетки компьютера
    c: char;                                //выбор пункта из меню
procedure KeyDown(Key: integer);           //процедура обработки нажтия клавиши
begin
  case Key of
VK_Up: if pr>10 then pr:=pr-10;           //если вверх, и если ракетка не достигла края экрана, сместить координаты ракетки на 10 вверх
VK_Down: if pr<490 then pr:=pr+10;        //то же, только вниз
VK_LEFT: if pc>10 then pc:=pc-10;
VK_right: if pc<490 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;
 
procedure Menu;
begin
textout(150,70,'Выбор режима: 1 игрок, 2 игрока');
readln(c);
textout(420,70,c);
end;
 
begin
setwindowsize(600,500);                 //размер окна
menu;                                   //меню игры
lockdrawing;                            //запрет прорисовки в окне (мигание убираем)
kx:=5; ky:=1; px:=15; py:=250; pc:=250; pr:=250; //задаем координаты смещения и позицию мяча
repeat                                  //цикл с постусловием
  clearwindow;                          //очистить окно
  setbrushcolor(clgreen);               //цвет кисти зеленый
  rectangle(5,5,595,495);               //прямоугольник - поле
  Pm;                                   //процедура определения координат мяча
  setbrushcolor(clwhite);               //цвет кисти - белый
  circle(px,py,10);                     //мяч
  OnKeyDown:=KeyDown;                   //процедура нажатия клавиши
  if c='1' then                         // 1-1игрок, в остальных случаях 2 игрока
   pc:=py;                                //ракетка противника следует за мячом неотступно...
  setbrushcolor(clblack);               //цвет кисти - черный
  rectangle(592,pr-20,597,pr+20);       //ракетки
  rectangle(3,pc-20,8,pc+20);
  sleep(25);                             //задержка
  redraw;                               //перерисовка
until (ku=5) or (kc=5);                 //цикл повторяется до 5 пропущенных мячей
end.
0
0 / 0 / 4
Регистрация: 22.03.2011
Сообщений: 39
15.08.2012, 12:38  [ТС]
Да все робит но есть вопрос вообще реально комп обыграть?
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
15.08.2012, 12:44
rassamaha42, это вряд ли. Мозгов на данный момент у компа - все одна строчка, и она означает, что ракетка всегда будет идти за мячом.
0
0 / 0 / 4
Регистрация: 22.03.2011
Сообщений: 39
15.08.2012, 12:45  [ТС]
Спасибо большое всем)
0
0 / 0 / 0
Регистрация: 31.10.2020
Сообщений: 5
31.10.2020, 17:18
Это полный код с меню и выбором между тем, играть с роботом или другом! Код работает стабильно на ABC.NET
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
uses crt,GraphABC,Events,Utils;                 
var pr,px,py,kx,ky,ku,kc,pc, c, s: integer;         
 procedure Menu;
begin
textout(150,70,'Выбор режима: 1 игрок, 2 игрока');
readln(c);
textout(420,70,c);
end;
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_W: if pc>10 then pc:=pc-10;
VK_S: if pc<490 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                                 
      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                                 
   px:=15;                               
   py:=250;
   s:=random(2);
   if s=1 then ky:=ky*(-1);
   end;
px:=px+kx;                               
py:=py+ky;
end;
 
begin  
hidecursor;
setwindowsize(600,500);                
Menu;
lockdrawing;                
kx:=random(1,5); ky:=random(1,5); px:=15; py:=250; pc:=250; pr:=250; 
if (c = 1) then begin
lockdrawing;                            
setwindowsize(600,500);                
kx:=5; ky:=1; px:=15; py:=250; pr:=250; 
repeat                               
  clearwindow;                        
  setbrushcolor(clgreen);            
  rectangle(5,5,595,495);             
  Pm;                               
  setbrushcolor(clwhite);              
  circle(px,py,10);                     
  OnKeyDown:=KeyDown;                  
  pc:=py;                             
  setbrushcolor(clblack);               
  rectangle(592,pr-20,597,pr+20);     
  rectangle(3,pc-20,8,pc+20);
  sleep(25);                           
  redraw;                              
until ku=5;                             
end else begin
repeat                                  
  clearwindow;                          
  setbrushcolor(clgreen);               
  rectangle(5,5,595,495);               
  Pm;                                   
  setbrushcolor(clwhite);              
  circle(px,py,10);                    
  OnKeyDown:=KeyDown;                   
  setbrushcolor(clblack);              
  rectangle(592,pr-20,597,pr+20);     
  rectangle(3,pc-20,8,pc+20);
  sleep(25);                              
  redraw;                             
until (ku=5) or (kc=5);   
end;             
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.10.2020, 17:18

Используя модуль CRT, написать программу, имитирующую звездное небо
Используя модуль CRT, написать прогу, имитирующую звездное небо, что б после запуска...

Используя модуль CRT, написать программу имитирующую звездное небо
Всем привет. Помогите написать программу Решение задач должно быть представлено в 3 вариантах....

Написать программу, имитирующую калейдоскоп
1) Написать программу, имитирующую калейдоскоп. Экран условно делится вертикальной чертой на две...

Требуется написать программу, имитирующую работу кассового аппарата
Требуется написать программу, имитирующую работу кассового аппарата пользователь в цикле вводит...

Теннис
Коля и Вася решили поиграть теннис. Но вскоре директор увидел, что они бездельничают и прогнал их....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru