Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите улучшить игру
Форум «Всё о Паскале» > Pascal, Object Pascal > Написание игр
Obri
Пожалуйста помогите сделать фон, закрасить мячик и сделать выход в игре
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
Цитата(Obri @ 14.04.2009 23:22) *
помогите сделать фон, закрасить мячик и сделать выход в игре
Возможно, я слишком буквально воспринял слово "улучшить")). Вот раскрашенная версия, в которой помимо этого убраны ламерские goto с метками, несколько упорядочена структура программы и по возможности убрано мигание. Выход только при проигрыше; если нужен выход в произвольный момент - скажи.

Вообще немного странная идея: почему шарик не отскакивает как обычно, а появляется новый? Откскок под непредсказуемым углом выглядел бы лучше.. И почему ракетка не снизу, как обычно, а слева?? Вообще, многое можно было бы "улучшить")). Если тебе это нужно - приходи еще.

uses graph,crt;
const
PaddleCol=LightRed;
BallCol=Yellow;
BackCol=Blue;
var
grdriver,grmode:integer;
x1,x2,y1,y2:integer;
a,b,n,v,v0:integer;
s:char;
c:string;

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
У меня вопрос. Как продолжить улучшение этой программы, что бы для начала игры(press enter) не надо было
переключать на Dos окно ?
volvo
Цитата
что бы для начала игры(press enter) не надо было
переключать на Dos окно ?
Это ты про что? Под FPC что-ли запускаешь?
renesko1
Пишу в free pascal, а compiler mode стоит turbo pascal.
Те. что бы начать игру мне надо мышом менять активные окна, что надо сделать, что бы избежать этого ?
renesko1
Эту программу выбрал для проверки... думал ошибка у меня в коде, ан нет, в чём же проблема ?
volvo
Проблема - в том, что надо вместо Crt/Graph использовать WinCrt/WinGraph, но тогда полетит вся работа с константами (цветов, например) - потому что в WinGraph это немного по-другому реализовано... Итого: хочешь совместимости с TP - работай через консольное окно, хочешь работать без консольного окна - используй другие библиотеки, а не Graph.
renesko1
ясно, спасибо smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.