Помощь - Поиск - Пользователи - Календарь
Полная версия: О буфере
Форум «Всё о Паскале» > Pascal, Object Pascal > Написание игр
Chuchello
Решил освоить паскаль, а для этого прикупил книгу за авторством Лукина-"ТР 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.
cutter
Попробуй для начала в процедуре KORABL заменить строку
until y1=240;
например на строку
until y=340;
Может проблема вовсе не в буфере?  ;)
trminator
http://forum.pascal.dax.ru/?board=makegame...;num=1050079872 - я тоже по этой книжке учился... и программу такую писАл  :D
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.