Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.08.2009, 17:42   #1
alex(21)
Форумчанин
 
Аватар для alex(21)
 
Регистрация: 09.06.2009
Сообщений: 545
Радость графическая игрушка

у меня возникла проблема такого рода:
ловлю кубики и у меня накапливаются очки за каждый пойманный куб, но в случае промаха количество жизней должно уменьшаться, а у меня не уменьшается. как можно исправить???
Вложения
Тип файла: rar ИГРА1.rar (533 байт, 48 просмотров)
alex(21) вне форума Ответить с цитированием
Старый 07.08.2009, 13:02   #2
alex(21)
Форумчанин
 
Аватар для alex(21)
 
Регистрация: 09.06.2009
Сообщений: 545
По умолчанию

почему не отвечаете, нечитабельно???
alex(21) вне форума Ответить с цитированием
Старый 07.08.2009, 13:13   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А она вообще не запускается. Сразу на halt уходит.
Цитата:
delay(11000)
это что шутка такая?

Вот поправил:
Код:
uses crt,graph;
var d,r,x,ax,ay:integer;
score,zhizni:integer;
klavisha:char;

procedure dvizhenie;
begin
x:=300;
score:=0; zhizni:=5;
setcolor(red);
ellipse(x,380,0,360,40,10);
repeat
if ((ay+40)=370) and (((ax+40)<=x+30) and ((ax+40)>=x-5)) then
 score:=score+5
else
if ((ay+40)>375) then begin
 zhizni:=zhizni-1;
 ay:=0;
end;
if zhizni=0 then begin
 outtextxy(50,160,' T H E  E N D ! ');
 halt;
end;
writeln('score=',score);
gotoxy(1,3);
writeln('zhizni=',zhizni);

setcolor(red);
ellipse(x,380,0,360,40,10);
setcolor(green);
rectangle(ax,ay,ax+40,ay+40);
delay(50);
setcolor(black);
ellipse(x,380,0,360,40,10);
rectangle(ax,ay,ax+40,ay+40);
ay:=ay+10;
if ay=380 then begin ay:=0; ax:=random(600); end;
klavisha:=' ';
if keypressed then
klavisha:=readkey;
if (klavisha='a') and (x>55) then x:=x-25;
if (klavisha='d') and (x<580) then x:=x+25;
setcolor(red);
ellipse(x,380,0,360,40,10);

until klavisha=#27;
end;

begin
randomize;
d:=detect; initgraph(d,r,'');
directvideo:=false;
line(0,420,640,420);
dvizhenie;
closegraph;
end.
I'm learning to live...

Последний раз редактировалось Stilet; 07.08.2009 в 13:26.
Stilet вне форума Ответить с цитированием
Старый 09.08.2009, 19:22   #4
alex(21)
Форумчанин
 
Аватар для alex(21)
 
Регистрация: 09.06.2009
Сообщений: 545
По умолчанию

почти как я и хотел, но кубики падают с одного места. я пробовал изменить но не получилось. как можно доработать???
alex(21) вне форума Ответить с цитированием
Старый 10.08.2009, 10:31   #5
Gapro
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 256
Радость

Вот так, я поправил, сейчс случайно и кубики цветными сделал, а то из у тебя невидно совсем было, еще замедлил, а то в той программе все прыгало с огромной скоростью.

Program kubik;
uses crt,graph;
var d,r,x,ax,ay,zamedlenie:integer;
score,zhizni:integer;
klavisha:char;

procedure dvizhenie;
begin
zamedlenie:=0;
Randomize;
x:=300;
score:=0; zhizni:=5;
ax:=Random(540)+40;

repeat
If zamedlenie mod 75 = 0 Then Begin
ClearDevice;
line(0,420,640,420);
setcolor(red);
ellipse(x,380,0,360,40,10);

if (ay>=360) and (ay<=380) and (((ax+10)<=x+50) and ((ax-10)>=x-70)) then
score:=score+5
else
if ((ay+40)>390) then begin
zhizni:=zhizni-1;

ay:=0;
end;
if zhizni=0 then begin
outtextxy(50,160,' T H E E N D ! ');
halt;
end;
writeln('score=',score);
gotoxy(1,3);
writeln('zhizni=',zhizni);

setcolor(red);
ellipse(x,380,0,360,40,10);

setcolor(green);
SetFillStyle(1,2);
BAr(ax,ay,ax+40,ay+40);
delay(50);
setcolor(black);
ellipse(x,380,0,360,40,10);
rectangle(ax,ay,ax+40,ay+40);
ay:=ay+10;
if ay=380 then begin ay:=0; ax:=random(60)*10+20; end;
end;
klavisha:=' ';
if keypressed then
klavisha:=readkey;
if (klavisha='a') and (x>55) then x:=x-25;
if (klavisha='d') and (x<580) then x:=x+25;
setcolor(red);
ellipse(x,380,0,360,40,10);

zamedlenie:=zamedlenie+1
until klavisha=#27;
end;

begin
randomize;
d:=detect; initgraph(d,r,'');
directvideo:=false;
dvizhenie;
closegraph;
end.
Gapro вне форума Ответить с цитированием
Старый 11.08.2009, 13:29   #6
alex(21)
Форумчанин
 
Аватар для alex(21)
 
Регистрация: 09.06.2009
Сообщений: 545
По умолчанию

хотелось чтобы текст "THE END" ОТОБРАЖАЛСЯ В ЦЕНТРЕ ЭКРАНА КРУПНЫМИ(на весь экран) мерцающими буквами. как это сделать???
alex(21) вне форума Ответить с цитированием
Старый 11.08.2009, 14:27   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
  
  SetTextStyle(DefaultFont,HorizDir,10);
  outtextxy(getmaxx div 2,getmaxy div 2,'qwe');
10 - размер шрифта. Можешь 100 поставить текст будет огромнейшим.
Фонт выбереш по вкусу - про него читай в хелпе на эту функцию
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.08.2009, 15:36   #8
Gapro
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 256
По умолчанию

Легче всего сделать это через процедуру проигрыша, сейчас сделаю
Gapro вне форума Ответить с цитированием
Старый 11.08.2009, 15:45   #9
Gapro
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 256
По умолчанию

Вот так

Код:
Program kubik;
uses crt,graph;
var d,r,x,ax,ay,zamedlenie:integer;
score,zhizni:integer;
klavisha:char;

Procedure lose;
  var key: char;
      chet,cvet:integer;
Begin
    ClearDevice;
    cvet:=0; chet:=0;
Repeat
    key:='w';
    If keypressed then key:=readkey;
    Setcolor(cvet);
    SettextStyle(2,0,20);
    OutTextXY(120,150,'YOU LOSE');
    SettextStyle(2,0,8);
    Setcolor(2);
    OutTextXY(180,250,'For finish press esc');
    If chet mod 7=0 then begin
    cvet:=Random(14)+1;
     If cvet=7 then begin cvet:=8; end;
    end;
    until key=#32;
    ClearDevice;
end;



procedure dvizhenie;
begin
zamedlenie:=0;
Randomize;
x:=300;
score:=0; zhizni:=5;
ax:=Random(540)+40;

repeat
If zamedlenie mod 100 = 0 Then Begin
ClearDevice;
line(0,420,640,420);
setcolor(red);
ellipse(x,380,0,360,40,10);

if (ay>=360) and (ay<=380)  and (((ax+10)<=x+50) and ((ax-10)>=x-70)) then
 score:=score+5
 else
if ((ay+40)>390) then begin
 zhizni:=zhizni-1;

 ay:=0;
end;
if zhizni=0 then begin
 outtextxy(50,160,' T H E  E N D ! ');
 halt;
end;
writeln('score=',score);
gotoxy(1,3);
writeln('zhizni=',zhizni);

setcolor(red);
ellipse(x,380,0,360,40,10);

setcolor(green);
SetFillStyle(1,2);
BAr(ax,ay,ax+40,ay+40);
delay(50);
setcolor(black);
ellipse(x,380,0,360,40,10);
rectangle(ax,ay,ax+40,ay+40);
ay:=ay+10;
if ay=380 then begin ay:=0; ax:=random(60)*10+20; end;
end;
klavisha:=' ';
if keypressed then
klavisha:=readkey;
if (klavisha='a') and (x>55) then x:=x-25;
if (klavisha='d') and (x<580) then x:=x+25;
setcolor(red);
ellipse(x,380,0,360,40,10);
Gapro вне форума Ответить с цитированием
Старый 11.08.2009, 15:45   #10
Gapro
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 256
По умолчанию

Там процедура проигрышь - и в случае проигрыша она активируется
Gapro вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игрушка Nester Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 15.01.2009 19:02
Игрушка Rusl92 Мультимедиа в Delphi 8 25.09.2008 12:11
Delphi 7 задача на графику, игрушка Agent[PNZ] Помощь студентам 2 29.04.2008 10:54
игрушка в курсовике EDG_aka_Dima Помощь студентам 2 25.05.2007 06:13
Игрушка Rozalinda Gamedev - cоздание игр: Unity, OpenGL, DirectX 9 14.01.2007 22:00