Не запускается код - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д