Как только шар прикоснется к какой-либо линии - закончить игру - 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.
Объяснение кода листинга программы
- Объявлены переменные: x, y, r, endgame, c, а также процедура drball.
- Инициализированы переменные: x, y, r, а также начат цикл игры.
- Выведены подсказки для управления: движение по горизонтали - стрелочки, движение по вертикали - клавиши со знаками
+
и-
, выход из игры - клавиша Esc. - Если нажата клавиша Esc, то игра завершается.
- Если шарик касается линии, то игра завершается.
- Если шарик уходит за пределы экрана, то игра завершается.
- Цвет шарика меняется в зависимости от того, касается ли он линии.
- После завершения игры выводится соответствующее сообщение.
- Если игра не завершена, то продолжается отображение шарика и изменение его положения.
- Проверяется, коснулся ли шарик линии.
- Если шарик касается линии, то игра завершается.
- Если шарик касается границы экрана, то игра завершается.
- Если шарик касается линии или границы экрана, то игра завершается.
- Проверяется, нажата ли клавиша Esc.
- Если нажата клавиша Esc, то игра завершается.
- Цвет шарика меняется в зависимости от того, касается ли он линии.
- Если шарик касается линии, то игра завершается.
- Если шарик касается границы экрана, то игра завершается.
- Проверяется, нажата ли клавиша Esc.
- Если нажата клавиша Esc, то игра завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д