Мне нужно движение вне массива,так как сам герой у меня больше блоков.Вроде всё прописал а он не двигается. вот код,подскажите в чём ошибка пожалуйста.
uses graph,crt;
const n=25; dx=27; dy=22; up=#72; left=#75; right=#77; down=#80; esc=#27; probel=#32; enter=#13; type massiv = array[1..n,1..n] of integer;
var p_zem,p_nebo,p_deva,p_dev,p_devs,p_yabloko,p_pulya,p_snaryad,p_yablonya,p_ship,p _volk1,p_volk2,p_volkk,p_stypen,p_stena:pointer; x0,y0,gd,gm,x_deva,y_deva,dx_deva,dy_deva:integer; tab:massiv; ch:char;
procedure load_image(name_file:string; var p:pointer); var f:file; size:word; begin assign(f,name_file); reset(f,1); size:=filesize(f); getmem(p,size); blockread(f,p^,size); close(f); end;
Procedure upr_move(var x,y:integer;dx,dy:integer;p:pointer); begin
ch:=readkey; if ch=#0 then begin ch:=readkey; putimage(x,y,p^,xorput); Case ch of left: x:=x-dx; right: x:=x+dx; up: y:=y-dy; down:y:=y+dy; end; putimage(x,y,p^,xorput); end; end;
procedure initdata; begin x_deva:=320; y_deva:=510; dx_deva:=20;dy_deva:=20; putimage (x_deva,y_deva,P_deva^,xorput); end;
procedure drawlab; var x,y,i,k:integer; begin cleardevice; x0:=150; y0:=50; for i:=1 to n do for k:=1 to n do tab[i, k]:=a[i, k]; for i:=1 to n do for k:=1 to n do begin x:=x0+(k-1)*dx; y:=y0+(i-1)*dy; case tab[i,k] of 1: putimage(x,y,p_zem^,normalput); 2: putimage(x,y,p_stena^,normalput); 3: putimage(x,y,p_nebo^,normalput); 4: putimage(x,y,p_stypen^,normalput); { 5: begin putimage(x,y,p_deva^,xorput); i_devochka:=i; k_devochka :=k; tab[i, k]:=0; end;} 6: putimage(x,y,p_volk1^,normalput); 7: putimage(x,y,p_ship^,normalput); 8: putimage(x,y,p_yabloko^,normalput); 9: putimage(x,y,p_volk2^,normalput); 10: putimage(x,y,p_yablonya,xorput); end; end; end;
procedure game; var x,y:integer; begin cleardevice; drawlab; initdata; repeat if keypressed then upr_move(x_deva,y_deva,dx_deva,dy_deva,p_deva); until ch=esc; end;
begin gd:=detect; initgraph(gd,gm,''); initpict; game; readln; end.
Сообщение отредактировано: justix - 19.12.2011 15:49