Не запускается код - Free Pascal (192)
Формулировка задачи:
Скопировал код игры хотел посмотреть что вообще из себя это представляет но при компиляции выдает ошибку. Что это за ошибка? Как просмотреть эту программу?
uses wingraph,wincrt; type mas=array[1..4,1..4] of integer; var ch:char; a:mas; g d,gm,x,x2,y,i,j,xzas,yzas,dxzas,dyzas:integer; //====================Переменные для картинок ============= p2048,menu,kmenu,helpkar,game12,proigral,win:pointer; //================Функция которая загружает картинки========= function loader(filename:string):pointer; var sz:longint; p:pointer; f:file; begin assign(f,filename); reset(f,1); sz:=filesize(f); getmem(p,sz); blockread(f,p^,sz); close(f); loader:=p; end; //================Управление курсором ===================== procedure upr (var ch:char;var x,y:integer); begin ch:=readkey; putimage(x,y,kmenu^,xorput); if ch=#0 then ch:=readkey; case ch of #72: if y>99 then y:=y-220; #80: if y<550 then y:=y+220; end; if y>545 then y:=100; if y<100 then y:=540; putimage(x,y,kmenu^,xorput); end; ///==============Спавн случайной плитки на поле ================= procedure random4ik(sran:string;var a:mas); var start11,start2,r1:integer; bb:boolean; begin bb:=false; for i:=1 to 4 do for j:=1 to 4 do if a[i,j] = 0 then bb:=true; if (bb = true) then begin repeat start11:=random(4)+1; start2:=random(4)+1; until a[start11,start2]=0; r1:=random(100)+1;3 case r1 of 1..89: a[start11,start2]:=2; 90..100:a[start11,start2]:=4; end; settextstyle(0,1,5); str(a[start11,start2],sran); outtextxy(start2*100,start11*100,sran); end; end; //===========Есть ли пустые клетки на поле==================== function proverka(a:mas): boolean; var i,j,k,z:integer; begin proverka:=true; for i:=1 to 4 do for j:=1 to 4 do if (a[i,j] = 0) then proverka:=false else end; //====================Управление плитками==================== procedure uprav (var ch:char; var x,x2,y,summa:integer); var k,i,l,start11,start2,y2,x3:integer; b:boolean; s1,schet,sran:string; begin ch:=readkey; if ch=#0 then ch:=readkey; case ch of #72: begin //======================================ВВЕРХ for j:=1 to 4 do begin for i:=1 to 4 do begin for k:=i+1 to 4 do begin if (a[k,j] <> 0) then begin if (a[i,j] = 0) then begin a[i,j]:= a[k,j]; a[k,j]:=0; bar(j*100+4,i*100+4,j*100+90,i*100+90); bar(j*100+4,k*100+4,j*100+90,k*100+90); str(a[i,j],s1); outtextxy(j*100,i*100,s1); end else if (a[i,j] = a[k,j]) then begin a[i,j]:=a[i,j]+a[k,j]; a[k,j]:=0; bar(j*100+4,i*100+4,j*100+90,i*100+90); bar(j*100+4,k*100+4,j*100+90,k*100+90); summa:=summa+a[i,j]; str(summa,schet); bar(700,400,1000,480); outtextxy(700,400,schet); str(a[i,j],s1); outtextxy(j*100,i*100,s1); end else break; end; end; end; end; //а -¤®¬ if proverka(a)=false then begin delay(200); random4ik(sran,a); end; end; #80: begin //============================================ВН ИЗ for j:=1 to 4 do begin for i:=4 downto 1 do begin for k:=i-1 downto 1 do begin if (a[k,j] <> 0) then begin if (a[i,j] = 0) then begin a[i,j]:= a[k,j]; a[k,j]:=0; bar(j*100+4,i*100+4,j*100+90,i*100+90); bar(j*100+4,k*100+4,j*100+90,k*100+90); str(a[i,j],s1); outtextxy(j*100,i*100,s1); end else if (a[i,j] = a[k,j]) then begin a[i,j]:=a[i,j]+a[k,j]; a[k,j]:=0; bar(j*100+4,i*100+4,j*100+90,i*100+90); bar(j*100+4,k*100+4,j*100+90,k*100+90); summa:=summa+a[i,j]; str(summa,schet); bar(700,400,1000,480); outtextxy(700,400,schet); str(a[i,j],s1); outtextxy(j*100,i*100,s1); end else break; end; end; end; end; //а -¤®¬ if proverka(a)=false then begin delay(100); random4ik(sran,a); end; end; #77: begin //=========================================ВПРАВ О for i:=1 to 4 do begin for j:=4 downto 1 do begin for k:=j-1 downto 1 do begin if (a[i,k] <> 0) then begin if (a[i,j] = 0) then begin a[i,j]:= a[i,k]; a[i,k]:=0; bar(j*100+4,i*100+4,j*100+90,i*100+90); bar(k*100+4,i*100+4,k*100+90,i*100+90); str(a[i,j],s1); outtextxy(j*100,i*100,s1); end else if (a[i,j] = a[i,k]) then begin a[i,j]:=a[i,j]+a[i,k]; a[i,k]:=0; bar(j*100+4,i*100+4,j*100+90,i*100+90); bar(k*100+4,i*100+4,k*100+90,i*100+90); summa:=summa+a[i,j]; str(summa,schet); bar(700,400,1000,480); outtextxy(700,400,schet); str(a[i,j],s1); outtextxy(j*100,i*100,s1); end4 else break; end; end; end; end; if proverka(a)=false then begin delay(100); random4ik(sran,a); end; end; #75: begin //========================================ВЛЕВО for i:=1 to 4 do begin for j:=1 to 4 do begin for k:=j+1 to 4 do begin if (a[i,k] <> 0) then begin if (a[i,j] = 0) then begin a[i,j]:= a[i,k]; a[i,k]:=0; bar(j*100+4,i*100+4,j*100+90,i*100+90); bar(k*100+4,i*100+4,k*100+90,i*100+90); str(a[i,j],s1); outtextxy(j*100,i*100,s1); end else if (a[i,j] = a[i,k]) then begin a[i,j]:=a[i,j]+a[i,k]; a[i,k]:=0; bar(j*100+4,i*100+4,j*100+90,i*100+90); bar(k*100+4,i*100+4,k*100+90,i*100+90); summa:=summa+a[i,j]; str(summa,schet); bar(700,400,1000,480); outtextxy(700,400,schet); str(a[i,j],s1); outtextxy(j*100,i*100,s1); end else break; end; end; end; end; if proverka(a)=false then begin delay(100); random4ik(sran,a); end; end; end; end; //================Победа========================= == procedure gg(a:mas); var i,j:integer; begin for i:=1 to 4 do for j:=1 to 4 do if a[i,j] = 2048 then begin cleardevice; putimage(0,0,win^,xorput); end; end; //==================Процедура заставки==================== procedure zastavka(var xzas,yzas,dxzas,dyzas:integer); begin putimage(xzas,yzas,p2048^,xorput); xzas:=xzas+dxzas; yzas:=yzas+dyzas; if (xzas>getmaxx-100) then dxzas:=-dxzas; if (xzas<0) then dxzas:=-dxzas; putimage(xzas,yzas,p2048^,xorput); if (yzas>getmaxy-100) then dyzas:=-dyzas; if (yzas<0) then dyzas:=-dyzas; settextstyle(1,1,1); outtextxy(0,getmaxy-20,'Game created: Vyacheslav Agibalov'); delay(30); end; //===================Процедура игры========================= procedure game; var x1,y1,start11,start12,start2,start22,summa:integer; s,s1:string; begin cleardevice; start11:=0; start12:=0; start2:=0; summa:=0; for i:=1 to 4 do for j:=1 to 4 do a[i,j]:=0; //=====================Отрисовка игрового поля============ setfillstyle(1,red); putimage(0,0,game12^,xorput); bar(700,400,1000,480); settextstyle(0,1,5); outtextxy(700,400,'0'); //=============================================== ========= start11:=random(4)+1; start2:=random(4)+1 ; a[start11,start2]:=2; repeat start12:=random(4)+1; start22:=random(4)+1; until a[start12,start2]=0; a[start12,start22]:=2; settextstyle(0,1,5); str(a[start11,start2],s); str(a[start12,start22],s1); outtextxy(start2*100,start11*100,s); outtextxy(start22*100,start12*100,s1); repeat uprav(ch,x,x2,y,summa); gg(a); until (ch=#27)or(proverka(a)); if proverka(a) then begin delay(2000); cleardevice; putimage(0,0,proigral^,xorput); delay(2000); end; end; //======================HELP==================== =========== procedure help; begin cleardevice; putimage(0,0,helpkar^,xorput); readkey; end; //==================ГЛАВНАЯ ПРОГРАММА================= begin gd:=detect; initgraph(gd,gm ,''); randomize; //=================Загрузка картинок========================= menu:=loader('2048/menu2.bmp'); kmenu:=loader('2048/kursor.bmp'); helpkar:=loader('2048/help1.bmp');5 p2048:=loader('2048/2048.bmp'); game12:=loader('2048/game12.bmp'); proigral:=loader('2048/pr5.bmp'); win:=loader('2048/win.bmp'); //=================Начальные значения переменных============== xzas:=random(getmaxx div 2); yzas:=random(getmaxy div 2); x2:=200; dxzas:=random(10)+20; dyzas:=random(10)+20; //==================Заставка====================== =========== putimage(xzas,yzas,p2048^,xorput); repeat zastavka(xzas,yzas,dxzas,dyzas); until keypressed; readkey; //==================Меню======================== =========== repeat x:=400; y:=100; cleardevice; putimage(0,0,menu^,xorput); putimage(x,y,kmenu^,xorput); repeat upr(ch,x,y); until ch=#13; case y of 100:game; 320:help; end; until y=540; end.
Решение задачи: «Не запускается код»
textual
Листинг программы
uses wingraph,wincrt; type mas=array[1..4,1..4] of integer; var ch:char; a:mas; g,d,gm,x,x2,y,i,j,xzas,yzas,dxzas,dyzas:integer; //====================Переменные для картинок============= p2048,menu,kmenu,helpkar,game12,proigral,win:pointer; //================Функция которая загружает картинки========= function loader(filename:string):pointer; var sz:longint; p:pointer; f:file; begin assign(f,filename); reset(f,1); sz:=filesize(f); getmem(p,sz); blockread(f,p^,sz); close(f); loader:=p; end; //================Управление курсором===================== procedure upr (var ch:char;var x,y:integer); begin ch:=readkey; putimage(x,y,kmenu^,xorput); if ch=#0 then ch:=readkey; case ch of #72: if y>99 then y:=y-220; #80: if y<550 then y:=y+220; end; if y>545 then y:=100; if y<100 then y:=540; putimage(x,y,kmenu^,xorput); end; ///==============Спавн случайной плитки на поле ================= procedure random4ik(sran:string;var a:mas); var start11,start2,r1:integer; bb:boolean; begin bb:=false; for i:=1 to 4 do for j:=1 to 4 do if a[i,j] = 0 then bb:=true; if (bb = true) then begin repeat start11:=random(4)+1; start2:=random(4)+1; until a[start11,start2]=0; r1:=random(100)+1; case r1 of 1..89 : a[start11,start2]:=2; 90..100:a[start11,start2]:=4; end; settextstyle(0,1,5); str(a[start11,start2],sran); outtextxy(start2*100,start11*100,sran); end; end; //===========Есть ли пустые клетки на поле==================== function proverka(a:mas): boolean; var i,j,k,z:integer; begin proverka:=true; for i:=1 to 4 do for j:=1 to 4 do if (a[i,j] = 0) then proverka:=false else end; //====================Управление плитками==================== procedure uprav (var ch:char; var x,x2,y,summa:integer); var k,i,l,start11,start2,y2,x3:integer; b:boolean; s1,schet,sran:string; begin ch:=readkey; if ch=#0 then ch:=readkey; case ch of #72: begin //======================================ВВЕРХ for j:=1 to 4 do begin for i:=1 to 4 do begin for k:=i+1 to 4 do begin if (a[k,j] <> 0) then begin if (a[i,j] = 0) then begin a[i,j]:= a[k,j]; a[k,j]:=0; bar(j*100+4,i*100+4,j*100+90,i*100+90); bar(j*100+4,k*100+4,j*100+90,k*100+90); str(a[i,j],s1); outtextxy(j*100,i*100,s1); end else if (a[i,j] = a[k,j]) then begin a[i,j]:=a[i,j]+a[k,j]; a[k,j]:=0; bar(j*100+4,i*100+4,j*100+90,i*100+90); bar(j*100+4,k*100+4,j*100+90,k*100+90); summa:=summa+a[i,j]; str(summa,schet); bar(700,400,1000,480); outtextxy(700,400,schet); str(a[i,j],s1); outtextxy(j*100,i*100,s1); end else break; end; end; end; end; //р -дом if proverka(a)=false then begin delay(200); random4ik(sran,a); end; end; #80: begin //============================================ВНИЗ for j:=1 to 4 do begin for i:=4 downto 1 do begin for k:=i-1 downto 1 do begin if (a[k,j] <> 0) then begin if (a[i,j] = 0) then begin a[i,j]:= a[k,j]; a[k,j]:=0; bar(j*100+4,i*100+4,j*100+90,i*100+90); bar(j*100+4,k*100+4,j*100+90,k*100+90); str(a[i,j],s1); outtextxy(j*100,i*100,s1); end else if (a[i,j] = a[k,j]) then begin a[i,j]:=a[i,j]+a[k,j]; a[k,j]:=0; bar(j*100+4,i*100+4,j*100+90,i*100+90); bar(j*100+4,k*100+4,j*100+90,k*100+90); summa:=summa+a[i,j]; str(summa,schet); bar(700,400,1000,480); outtextxy(700,400,schet); str(a[i,j],s1); outtextxy(j*100,i*100,s1); end else break; end; end; end; end; //р -дом if proverka(a)=false then begin delay(100); random4ik(sran,a); end; end; #77: begin //=========================================ВПРАВО for i:=1 to 4 do begin for j:=4 downto 1 do begin for k:=j-1 downto 1 do begin if (a[i,k] <> 0) then begin if (a[i,j] = 0) then begin a[i,j]:= a[i,k]; a[i,k]:=0; bar(j*100+4,i*100+4,j*100+90,i*100+90); bar(k*100+4,i*100+4,k*100+90,i*100+90); str(a[i,j],s1); outtextxy(j*100,i*100,s1); end else if (a[i,j] = a[i,k]) then begin a[i,j]:=a[i,j]+a[i,k]; a[i,k]:=0; bar(j*100+4,i*100+4,j*100+90,i*100+90); bar(k*100+4,i*100+4,k*100+90,i*100+90); summa:=summa+a[i,j]; str(summa,schet); bar(700,400,1000,480); outtextxy(700,400,schet); str(a[i,j],s1); outtextxy(j*100,i*100,s1); end else break; end; end; end; end; if proverka(a)=false then begin delay(100); random4ik(sran,a); end; end; #75: begin //========================================ВЛЕВО for i:=1 to 4 do begin for j:=1 to 4 do begin for k:=j+1 to 4 do begin if (a[i,k] <> 0) then begin if (a[i,j] = 0) then begin a[i,j]:= a[i,k]; a[i,k]:=0; bar(j*100+4,i*100+4,j*100+90,i*100+90); bar(k*100+4,i*100+4,k*100+90,i*100+90); str(a[i,j],s1); outtextxy(j*100,i*100,s1); end else if (a[i,j] = a[i,k]) then begin a[i,j]:=a[i,j]+a[i,k]; a[i,k]:=0; bar(j*100+4,i*100+4,j*100+90,i*100+90); bar(k*100+4,i*100+4,k*100+90,i*100+90); summa:=summa+a[i,j]; str(summa,schet); bar(700,400,1000,480); outtextxy(700,400,schet); str(a[i,j],s1); outtextxy(j*100,i*100,s1); end else break; end; end; end; end; if proverka(a)=false then begin delay(100); random4ik(sran,a); end; end; end; end; //================Победа========================= procedure gg(a:mas); var i,j:integer; begin for i:=1 to 4 do for j:=1 to 4 do if a[i,j] = 2048 then begin cleardevice; putimage(0,0,win^,xorput); end; end; //==================Процедура заставки==================== procedure zastavka(var xzas,yzas,dxzas,dyzas:integer); begin putimage(xzas,yzas,p2048^,xorput); xzas:=xzas+dxzas; yzas:=yzas+dyzas; if (xzas>getmaxx-100) then dxzas:=-dxzas; if (xzas<0) then dxzas:=-dxzas; putimage(xzas,yzas,p2048^,xorput); if (yzas>getmaxy-100) then dyzas:=-dyzas; if (yzas<0) then dyzas:=-dyzas; settextstyle(1,1,1); outtextxy(0,getmaxy-20,'Game created: Vyacheslav Agibalov'); delay(30); end; //===================Процедура игры========================= procedure game; var x1,y1,start11,start12,start2,start22,summa:integer; s,s1:string; begin cleardevice; start11:=0; start12:=0; start2:=0; summa:=0; for i:=1 to 4 do for j:=1 to 4 do a[i,j]:=0; //=====================Отрисовка игрового поля============ setfillstyle(1,red); putimage(0,0,game12^,xorput); bar(700,400,1000,480); settextstyle(0,1,5); outtextxy(700,400,'0'); //======================================================== start11:=random(4)+1; start2:=random(4)+1 ; a[start11,start2]:=2; repeat start12:=random(4)+1; start22:=random(4)+1; until a[start12,start2]=0; a[start12,start22]:=2; settextstyle(0,1,5); str(a[start11,start2],s); str(a[start12,start22],s1); outtextxy(start2*100,start11*100,s); outtextxy(start22*100,start12*100,s1); repeat uprav(ch,x,x2,y,summa); gg(a); until (ch=#27)or(proverka(a)); if proverka(a) then begin delay(2000); cleardevice; putimage(0,0,proigral^,xorput); delay(2000); end; end; //======================HELP=============================== procedure help; begin cleardevice; putimage(0,0,helpkar^,xorput); readkey; end; //==================ГЛАВНАЯ ПРОГРАММА================= begin g:=detect; initgraph(g,gm ,''); randomize; //=================Загрузка картинок========================= menu:=loader('2048/menu2.bmp'); kmenu:=loader('2048/kursor.bmp'); helpkar:=loader('2048/help1.bmp'); p2048:=loader('2048/2048.bmp'); game12:=loader('2048/game12.bmp'); proigral:=loader('2048/pr5.bmp'); win:=loader('2048/win.bmp'); //=================Начальные значения переменных============== xzas:=random(getmaxx div 2); yzas:=random(getmaxy div 2); x2:=200; dxzas:=random(10)+20; dyzas:=random(10)+20; //==================Заставка================================= putimage(xzas,yzas,p2048^,xorput); repeat zastavka(xzas,yzas,dxzas,dyzas); until keypressed; readkey; //==================Меню=================================== repeat x:=400; y:=100; cleardevice; putimage(0,0,menu^,xorput); putimage(x,y,kmenu^,xorput); repeat upr(ch,x,y); until ch=#13; case y of 100:game; 320:help; end; until y=540; end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д