IPB
ЛогинПароль:

 
 Ответить  Открыть новую тему 
> Помогите улучшить игру
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Женский

Репутация: -  0  +


Пожалуйста помогите сделать фон, закрасить мячик и сделать выход в игре
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.


Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(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.



--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


У меня вопрос. Как продолжить улучшение этой программы, что бы для начала игры(press enter) не надо было
переключать на Dos окно ?


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
что бы для начала игры(press enter) не надо было
переключать на Dos окно ?
Это ты про что? Под FPC что-ли запускаешь?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


Пишу в free pascal, а compiler mode стоит turbo pascal.
Те. что бы начать игру мне надо мышом менять активные окна, что надо сделать, что бы избежать этого ?

Сообщение отредактировано: renesko1 -


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


Эту программу выбрал для проверки... думал ошибка у меня в коде, ан нет, в чём же проблема ?


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Проблема - в том, что надо вместо Crt/Graph использовать WinCrt/WinGraph, но тогда полетит вся работа с константами (цветов, например) - потому что в WinGraph это немного по-другому реализовано... Итого: хочешь совместимости с TP - работай через консольное окно, хочешь работать без консольного окна - используй другие библиотеки, а не Graph.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


ясно, спасибо smile.gif


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 18:23
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name