Как только шар прикоснется к какой-либо линии - закончить игру - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Вот есть код движения шара вверх, и управления им. Нужно сделать чтобы он мог проходить над прямоугольником. Ну как только он прикоснется к какой либо линии, все стиралось, и была надпись 'Game Over' Помогите пожалуйста.
uses wincrt,graph;
var x,y,r:integer;
    c:char;
begin
initgraph(x,y,'');
x:=getmaxX div 2;
r:=5;
y:=getmaxY-r;
setcolor(12);
setfillstyle(1,12);
fillellipse(x,y,r,r);
repeat
rectangle(680,985,1000,400);
delay(100);
cleardevice;
y:=y-5;
setfillstyle(1,12);
fillellipse(x,y,r,r);
outtextXY(getmaxX div 2-50,10,'vyhod -Esc');
if keypressed then
 begin
  c:=readkey;
  if c=#0 then c:=readkey;
  case c of
  #75:if x>r then x:=x-5;
  #77:if x<getmaxX-r then x:=x+5;
  #27:exit;
  end;
 end;
until (y<r)or(c=#27);
end.

Решение задачи: «Как только шар прикоснется к какой-либо линии - закончить игру»

textual
Листинг программы
uses wincrt,wingraph,math;
var x,y,r,endgame:integer;
    c:char;
procedure drball(x,y:integer;dr:boolean);
begin
   setcolor(12*ord(dr));
   setfillstyle(1,12*ord(dr));
   fillellipse(x,y,r,r);
end;
begin
randomize;
x:=Vga;
y:=VgaHi;
initgraph(x,y,'');
x:=getmaxX div 2;
r:=5;
y:=getmaxY-r;
drball(x,y,true);
setfillstyle(1,green);
Bar(getmaxx div 2+50,getmaxy div 2,getmaxx div 2+100,getmaxy);
Bar(getmaxx div 2-100,getmaxy div 2,getmaxx div 2-50,getmaxy);
Bar(getmaxx div 2+50,0,getmaxx div 2+100,getmaxy div 2 - 50);
Bar(getmaxx div 2-100,0,getmaxx div 2-50,getmaxy div 2 - 50);
setfillstyle(1,yellow);
Bar(getmaxx-10,10,getmaxx,20);
endgame:=0;
repeat
outtextXY(getmaxX div 2-50,10,'vyhod -Esc');
if keypressed then
 begin
  drball(x,y,false);
  c:=readkey;
  if c=#0 then c:=readkey;
  case c of
  #72:if y>r then y:=y-5;
  #80:if y<getmaxy-r then y:=y+5;
  #75:if x>r then x:=x-5;
  #77:if x<getmaxX-r then x:=x+5;
  #27:begin endgame:=2;break;end;
  end;
 end;
   drball(x,y,false);
   if y>getmaxy div 2-r then x:=x+sign(random(4)-2) else x:=x+random(4)-2;  
   if x>getmaxx-r then x:=getmaxx-r;
   if x<r then x:=r;
   drball(x,y,true);
  if (getpixel(x+r+1,y)=green) or (getpixel(x-r-1,y)=green) or
     (getpixel(x,y+r+1)=green) or (getpixel(x,y-r-1)=green)then begin endgame:=1;break;end;
    if (getpixel(x+r+1,y)=yellow) or (getpixel(x-r-1,y)=yellow) or
     (getpixel(x,y+r+1)=yellow) or (getpixel(x,y-r-1)=yellow) then begin endgame:=3;break;end;
   delay(1);
until (y<r)or(c=#27);
cleardevice;
setcolor(35);
case endgame of
 1:outtextXY(getmaxX div 2-50,10,'Game over-You toch a wall. Press Esc');
 2:halt;
 3:outtextXY(getmaxX div 2-50,10,'Game over-You Win. Press Esc');
end;
repeat until readkey=#27;
end.

Объяснение кода листинга программы

  1. Объявлены переменные: x, y, r, endgame, c, а также процедура drball.
  2. Инициализированы переменные: x, y, r, а также начат цикл игры.
  3. Выведены подсказки для управления: движение по горизонтали - стрелочки, движение по вертикали - клавиши со знаками + и -, выход из игры - клавиша Esc.
  4. Если нажата клавиша Esc, то игра завершается.
  5. Если шарик касается линии, то игра завершается.
  6. Если шарик уходит за пределы экрана, то игра завершается.
  7. Цвет шарика меняется в зависимости от того, касается ли он линии.
  8. После завершения игры выводится соответствующее сообщение.
  9. Если игра не завершена, то продолжается отображение шарика и изменение его положения.
  10. Проверяется, коснулся ли шарик линии.
  11. Если шарик касается линии, то игра завершается.
  12. Если шарик касается границы экрана, то игра завершается.
  13. Если шарик касается линии или границы экрана, то игра завершается.
  14. Проверяется, нажата ли клавиша Esc.
  15. Если нажата клавиша Esc, то игра завершается.
  16. Цвет шарика меняется в зависимости от того, касается ли он линии.
  17. Если шарик касается линии, то игра завершается.
  18. Если шарик касается границы экрана, то игра завершается.
  19. Проверяется, нажата ли клавиша Esc.
  20. Если нажата клавиша Esc, то игра завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы