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

 
 Ответить  Открыть новую тему 
> О буфере
сообщение
Сообщение #1


Гость






Решил освоить паскаль, а для этого прикупил книгу за авторством Лукина-"ТР 7.0 для начинающих", и вот там задание создать игру "Торпедная атака".Програма показалась не совсем сложной даже для меня, но вот возникла проблема: при выстреле торпеды всё идеёт нормально, потом результаты анализируются и, когда должна пойти вторая попытка торпеда сама вылетает. Я предпологаю, что это из-за буфера, в котором остаётся нажатой клавиша пробовал вставлять строку для очистки , не помогает, а вот сама программа:
program torped_atack;
uses crt,graph;
var schet,torped,device,mode,x,y,x1,y1:integer;
   s,a,kl:char;name:string;
procedure risunok;forward;
procedure analiz;
begin
   torped:=torped+1;
   if torped=5 then halt;
   risunok;
   end;
procedure nepopal;
 begin
   schet:=schet+0;
   analiz;
  end;
procedure popal;
 begin
   schet:=schet+1;
   analiz;
 end;
pROCEDURE ATAKA;
 BEGIN
 x1:=400;
 y1:=360;
 repeat
 setcolor(7);
 line(x,240,y,240);
 line(x-20,220,y-40,240);
 line(x+60,220,y,240);
 line(x-20,220,x+60,220);
 rectangle(310,x1,330,y1);
 setfillstyle(1,7);
 floodfill(x+47,230,7);
  floodfill(315,x1-39,7);
 delay(2000);
 setcolor(9);
 line(x,240,y,240);
 line(x-20,220,y-40,240);
 line(x+60,220,y,240);
 line(x-20,220,x+60,220);
 setcolor(1);
 rectangle(310,x1,330,y1);
 setfillstyle(1,7);
 floodfill(x+47,230,7);
 floodfill(315,x1-39,7);
 y:=y+1;
 x:=x+1;
 x1:=x1-1;
 y1:=y1-1;
 until y1=240;
 if (y1+100<=y) and (y1+100>=y-40) then popal
                                   else nepopal;
 END;
procedure clearboofer;
 begin
 while keypressed do kl:=readkey;
 ataka;
 end;
PROCEDURE KORABL;
 label i2;
 BEGIN
 x:=1;
 y:=40;
 repeat
 setcolor(7);
 line(x,240,y,240);
 line(x-20,220,y-40,240);
 line(x+60,220,y,240);
 line(x-20,220,x+60,220);
 setfillstyle(1,7);
 floodfill(x+47,230,7);
 delay(2000);
 setcolor(9);
 line(x,240,y,240);
 line(x-20,220,y-40,240);
 line(x+60,220,y,240);
 line(x-20,220,x+60,220);
 setfillstyle(1,7);
 floodfill(x+47,230,7);
 y:=y+1;
 x:=x+1;
 if keypressed then begin kl:=readkey;
 if kl='x' then ataka
 end;
 until y1=240;
 end;
procedure risunok;
 begin
 device:=0;
 initgraph(device,mode,'d:bpbgi');
 line(1,240,640,240);
 setfillstyle(1,9);
 floodfill(1,1,15);
 setfillstyle(1,1);
 floodfill(400,400,15);
 line(300,480,300,400);
 line(340,480,340,400);
 line(300,400,340,400);
 setfillstyle(1,0);
 floodfill(301,430,15);
 korabl;
 end;
procedure nachalo;
   label i1;
   begin
   schet:=0;
   writeln('Enter your name');
   readln(name);
   writeln('Control:S-start game');
   writeln('Space-atack in game');
i1: s:=readkey;
   if s='s' then risunok
            else goto i1;
   end;
begin
 torped:=1;
 nachalo;
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2





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

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


Попробуй для начала в процедуре KORABL заменить строку
until y1=240;
например на строку
until y=340;
Может проблема вовсе не в буфере?  ;)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Четыре квадратика
****

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

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


http://forum.pascal.dax.ru/?board=makegame...;num=1050079872 - я тоже по этой книжке учился... и программу такую писАл  :D


--------------------
Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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