| 
| Invisible_Ghost | Дата: Среда, 21 Января 2015, 21:46 | Сообщение # 1 |  | уже был Сейчас нет на сайте | Она создаётся в двух местах сразу.Дальше вообще хз что творится. Чтобы упростить прогу я многое закомментил. Это мой первый опыт, если я реально серьёзно ошибся, сильно не хайте. Код:
 program easy_snake;
 uses graphabc;
 type
 {breakpoint=record
 bpos,bnapr:integer;
 created:boolean;
 procedure create(pos,napr:integer);
 begin
 bpos:=pos;
 bnapr:=napr;
 created:=true;
 end;
 procedure destroy;
 begin
 bpos:=0;
 bnapr:=0;
 created:=false;
 end;
 end;
 }
 part=record
 px,py:integer;
 pnapr:integer;
 created:boolean;
 //journal: text;
 procedure create(x,y,napr:integer);
 var
 defcolor:color;
 begin
 px:=x;
 py:=y;
 pnapr:=napr;
 defcolor:=brush.Color;
 writeln(px,' ',py);
 setbrushcolor(clred);
 fillrect(px,py,px+5,py+5);
 textout(x,y,'Created there2');
 setbrushcolor(defcolor);
 created:=true;
 textout(x,y,'Created there2');
 // assign(journal,'C:\Users\user\Desktop\ghostpascal\snake\journal.txt');
 //rewrite(journal);
 
 //write(journal,'Part created');
 end;
 procedure destroy;
 var
 defcolor:color;
 begin
 defcolor:=brush.Color;
 setbrushcolor(clwhite);
 //journal.Close;
 fillrect(px,py,px+5,py+5);
 setbrushcolor(defcolor);
 //redraw;
 created:=false;
 //writeln(journal,'closed');
 //journal.Close;
 end;
 procedure move;
 var
 defcolor:color;
 begin
 defcolor:=brush.Color;
 setbrushcolor(clwhite);
 fillrect(px,py,px+5,py+5);
 case pnapr of
 1:px+=5;
 2:py+=5;
 3:px-=5;
 4:py-=5;
 end;
 setbrushcolor(clred);
 fillrect(px,py,px+5,py+5);
 //writeln(journal,' Moved');
 setbrushcolor(defcolor);
 //redraw;
 
 end;
 end;
 snake=record
 //bps:array [1..101] of breakpoint;
 body:array [1..101] of part;
 created:boolean;
 size:byte;
 n:integer;
 procedure create(x2,y2,napr:integer);
 var
 x3,y3:integer;
 begin
 x3:=x2;
 y3:=y2;
 
 body[10].create(x3,y3,napr);
 body[10].created:=true;
 created:=true;
 size:=1;
 setbrushcolor(clbrown);
 textout(x3,y3,'Created there1');
 end;
 procedure move;
 var
 a,b:integer;
 begin
 for a:=1 to size do
 begin
 {for b:=1 to n do
 begin
 if bps[b].created=true then
 begin
 if bps[b].bpos=a then body[a].pnapr:=bps[b].bnapr;
 bps[b].bpos-=1;
 if bps[b].bpos<1 then bps[b].destroy;
 
 end;
 
 end;}
 body[a].move;
 end;
 //redraw;
 end;{
 procedure rotate(napr:integer);
 begin
 n+=1;
 if n=11 then
 n:=1;
 bps[n].create(size,napr);
 end;
 }
 procedure grow;
 begin
 size+=1;
 body[(size-101)*(-1)].create(body[(size-102)*(-1)].px,body[(size-102)*(-1)].py,body[(size-102)*(-1)].pnapr);
 end;
 end;
 var
 a,b:integer;
 sn:snake;
 p:part;
 begin
 coordinate.SetOrigin(50,50);
 sn.create(50,50,1);
 sn.grow;
 for a:=1 to 100 do
 begin
 sn.move;
 //sn.rotate(random(5));
 
 sleep(100);
 end;
 end.
 |  |  |  |  |