Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.02.2008, 21:03
the Grey Maybe the Grey Maybe вне форума
Прохожий
 
Регистрация: 29.01.2008
Сообщения: 1
Репутация: 10
По умолчанию [Pascal] пишу игру, есть вопросы.

есть несколько вопросов:
1. как сделать реакцию на нажатие клавиши? (тоесть не нажимать enter каждий раз после ввода "w")
2. посмотрите что у меня со скоростью, немогу придумать как чтоб скажем x овая скорасть при нажатии "a" если есть сначала уменьшалась, а потом увеличивалась?
вот код, так понятней будет в чем заковыка:

Код:
Program graph18;
uses graph,crt;
var gd,gm,b,c,vv,f,ly,lx,y,x:integer;
    key:string;
    ny,nx:byte;
begin
clrscr;
writeln('ўлЄ«озЁ puto switcher!');
writeln('гЇа ў«Ґ*ЁҐ - WASD');
writeln('ўл©вЁ - g');
readln;
gd:=detect;
initgraph(gd,gm,'E:\TP\UNITS');
 begin


x:=100;
y:=100;
ly:=y;
lx:=x;

repeat
c:=c+1;
readln(key);
setcolor(1);
begin
if key='w' then
 begin
  ly:=y;
  ny:=ny+5;
  y:=y-ny;
  clrscr;
 setbkcolor(7);

   for vv:=y to ly do
   begin
   setcolor(7);
    circle(x,ly,2);
    circle(x,ly,1);

   delay(0);
   setcolor(1);
   ly:=ly-1;
    circle(x,ly,2);
    circle(x,ly,1);


   end;
 end;


 if key='s' then
 begin
  ly:=y;
  ny:=ny+5;
  y:=y+ny;
  clrscr;

   for vv:=ly to y do
   begin
   setcolor(7);
   circle(x,ly,2);
    circle(x,ly,1);
   delay(0);
   setcolor(1);
   ly:=ly+1;
   circle(x,ly,2);
    circle(x,ly,1);
   end;
 end;

 if key='a' then
 begin
  lx:=x;
  nx:=nx+5;
  x:=x-nx;
  clrscr;

   for vv:=x to lx do
   begin
   setcolor(7);
   circle(lx,y,2);
    circle(lx,y,1);
   delay(0);
   setcolor(1);
   lx:=lx-1;
   circle(lx,y,2);
    circle(lx,y,1);
   end;
 end;

 if key='d' then
 begin
   lx:=x;
  nx:=nx+5;
  x:=x+nx;
  clrscr;
      for vv:=lx to x do
   begin
   setcolor(7);
   circle(lx,y,2);
    circle(lx,y,1);
   delay(0);
   setcolor(1);
   lx:=lx+1;
   circle(lx,y,2);
    circle(lx,y,1);
   end;
end;


end;
until (key='g'){ or
((x in[ 200..250 ])and(y in [200..250]))            }

 end;
 readln;
 closegraph;
{
 if ((x in[ 200..250 ])and(y in [200..250])) then
 writeln('Є®*Ґж');
 readln;      }
end.

плюс интересны какиенибудь идеи интересные, ( я собирался что то вроде лабиринта сделать)
Ответить с цитированием
  #2  
Старый 07.02.2008, 17:45
ChaosAvenger ChaosAvenger вне форума
Прохожий
 
Регистрация: 07.02.2008
Сообщения: 2
Репутация: 10
По умолчанию

чтобы не жать энтер например такое
var c:char;
...
begin
repeat
c:=readkey;
case c of
'1':begin
inc(r);
end;
'2':begin
inc(r);
end;
until ...;

это будет при нажатии 1 или 2 увеличивать переменную r
Ответить с цитированием
  #3  
Старый 10.02.2008, 19:30
Adler Adler вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 34
Репутация: 10
По умолчанию

Думаю в наше время писать игры на паскале не перспективно. А Delphi чем неустраивает?
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:28.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter