Пожалуйста помогите сделать фон, закрасить мячик и сделать выход в игре
uses graph,crt; label k,l,p; const v=7; var grdriver,grmode:integer; x1,x2,y1,y2:integer; a,b,n:integer; s:char; c:string; begin p: randomize; initgraph(grdriver,grmode,s); outtextXY(190,180,'For control use navigation button'); outtextXY(390,458,'Press ENTER for continue'); line(0,456,640,456); readln; x1:=0; y1:=190; x2:=20; y2:=260; n:=0; l: b:=random(470); a:=631; k: s:=' '; if keypressed=true then s:=readkey; cleardevice; dec(a); Rectangle(x1,y1,x2,y2); circle(a,b,5); delay(900); if s=#0 then begin s:=readkey; if s=#72 then begin y1:=y1-v; y2:=y2-v; end; if s=#80 then begin y1:=y1+v; y2:=y2+v; end; end; if x2+5=a then if (b>y1)and(b<y2 ) then begin inc(n); goto l; end; if a=0 then begin outtextXY(300,220,'game over'); outtextXY(390,458,'Press ENTER for continue'); str (n,c); outtextXY(330,240,'balls'); outtextXY(300,240,c); line(0,456,640,456); readln; goto p; end; goto k; readln; end.
Lapp
15.04.2009 16:09
Цитата(Obri @ 14.04.2009 23:22)
помогите сделать фон, закрасить мячик и сделать выход в игре
Возможно, я слишком буквально воспринял слово "улучшить")). Вот раскрашенная версия, в которой помимо этого убраны ламерские goto с метками, несколько упорядочена структура программы и по возможности убрано мигание. Выход только при проигрыше; если нужен выход в произвольный момент - скажи.
Вообще немного странная идея: почему шарик не отскакивает как обычно, а появляется новый? Откскок под непредсказуемым углом выглядел бы лучше.. И почему ракетка не снизу, как обычно, а слева?? Вообще, многое можно было бы "улучшить")). Если тебе это нужно - приходи еще.
begin v0:=7; randomize; GrDriver:=Detect; GrMode:=0; initgraph(grdriver,grmode,s); SetBkColor(BackCol); repeat outtextXY(190,180,'Use arrow keys to control the paddle'); outtextXY(390,458,'Press ENTER to continue'); line(0,456,640,456); readln; n:=0; repeat ClearDevice; b:=random(470); a:=631; n:=0; x1:=0; y1:=190; x2:=20; y2:=260; Inc(n); v:=0; repeat SetFillStyle(SolidFill,PaddleCol); Bar(x1,y1,x2,y2); SetColor(BallCol); SetFillStyle(SolidFill,BallCol); FillEllipse(a,b,5,5); delay(100); if keypressed then begin s:=readkey; if s=#0 then begin s:=readkey; case s of #72: v:=-v0; #80: v:=v0; end end end; if v<>0 then begin SetFillStyle(0,PaddleCol); Bar(x1,y1,x2,y2); Inc(y1,v); Inc(y2,v); v:=0 end; SetColor(BackCol); Circle(a,b,5); dec(a); until x2+5>=a; if (b<y1)or(b>y2) then begin SetColor(White); outtextXY(300,220,'game over'); outtextXY(250,458,'press any key to continue, ESC to exit'); str (n,c); outtextXY(300,240,c+'balls'); line(0,456,640,456); s:=ReadKey; if s=#0 then s:=ReadKey else if s=#27 then begin CloseGraph; Exit end end until false until false end.
renesko1
4.06.2009 20:00
У меня вопрос. Как продолжить улучшение этой программы, что бы для начала игры(press enter) не надо было переключать на Dos окно ?
volvo
4.06.2009 20:12
Цитата
что бы для начала игры(press enter) не надо было переключать на Dos окно ?
Это ты про что? Под FPC что-ли запускаешь?
renesko1
4.06.2009 20:15
Пишу в free pascal, а compiler mode стоит turbo pascal. Те. что бы начать игру мне надо мышом менять активные окна, что надо сделать, что бы избежать этого ?
renesko1
4.06.2009 20:37
Эту программу выбрал для проверки... думал ошибка у меня в коде, ан нет, в чём же проблема ?
volvo
4.06.2009 21:08
Проблема - в том, что надо вместо Crt/Graph использовать WinCrt/WinGraph, но тогда полетит вся работа с константами (цветов, например) - потому что в WinGraph это немного по-другому реализовано... Итого: хочешь совместимости с TP - работай через консольное окно, хочешь работать без консольного окна - используй другие библиотеки, а не Graph.
renesko1
4.06.2009 21:41
ясно, спасибо
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.