Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2013, 15:50   #1
Kcilika
Пользователь
 
Регистрация: 06.11.2013
Сообщений: 19
Восклицание помгите найти ошибки...

Код:
uses graph, crt;
const
left=#75;
right=#77;
up=#72;
down=#80;
esc=#27;
enter=#13;
probel=#32;
var gd,gm:integer;
    x1,y1,hx1,hy1:integer;
    x2,y2,h,xp,yp:integer;
    ch:char;
    p,p2,pk,p1,p3,p4,pp:pointer;
    vistrel:boolean;
function loader(filename:string):pointer;
var f:file; p:pointer; size:longint;
begin
    assign(f,filename);
    reset(f,1);
    size:=filesize(f);
    getmem(p,size);
    blockread(f,p^,size);
    close(f);
    loader:=p;
end;
procedure initpict;
begin
    p1:=loader('vrug.bmp');
    p2:=loader('drug.bmp');
    p3:=loader('cursor.bmp');
    p4:=loader('pulya.bmp');
end;
procedure neupr(var x,y,hx,hy:integer;p:pointer);
begin
    putimage(x,y,p^,1);
    x:=x+hx;
    y:=y+hy;
    if (x<=0) or (x>=40) then hx:=-hx;
    if (y<=0)or (y>=40) then hy:=-hy;
    putimage;
end;
procedure upr(var x,y:integer;h:integer;p:pointer);
begin
    ch:=readkey;
    if ch=#0 then  begin
        ch:=readkey;
        putimage(x,y,p^,1);
        case ch of
           left: if x>h then x:=x-h else x:=x+h;
           right: if x<getmaxx-50 then x:=x+h else x:=x-h;
           up: if y>h then y:=y-h else y:=y+h;
           down: if y<getmaxy-10 then y:=y+h else y:=y-h;
        end;
        putimage(x,y,p^,1);
    end;
    if ch=probel then   begin
          xp:=x+25;
          yp:=y-10;
          putimage(xp,yp,pp^,1);
          vistrel:=true;
     end;
end;
procedure polet(var xp,yp:integer; var vistrel:boolean; pp:pointer);
begin
     putimage(xp,yp,pp^,1);
     yp:=yp-2;
     if yp<2 then vistrel:=false else
     putimage(xp,yp,pp^,1);
end;

function proverka(x1,y1,x2,y2:integer):boolean;
begin
    if (abs(y1-y2)<40) and (abs(x1-x2)<50) then proverka:=true else proverka:=false;
end;
procedure init;
begin
    hx1:=2;
    hy1:=2;
    x1:=40;
    y1:=getmaxy div 2;
    h2:=5;
    x2:=40;
    y2:=400;
    putimage(x1,y1,p1^,1);
    putimage(x2,y2,p2^,1);
end;
procedure zastavka;
var c,n:integer;
begin
   cleardevice;
   repeat;
    c:=yellow;
    setcolor(c);
    settextstyle(0,0,5);
    outtextxy(250,10,'интересная игра');
    outtextxy(250,40,'защита города');
    settextstyle(0,0,3);
    outtextxy(250,300,'желаем удачи');
    outtextxy(250,350,'нажмите любую клавишу');
    delay(500);
   until keypressed;
   cleardevice;
end;
procedure help;
var f:text;
s:string;
y:integer;
begin
    assign(f,'help.pas');
    reset(f);
    setcolor(blue);
    settextstyle(0,0,3);
    y:=20;
    cleardevice;
    while not(eof(f)) do
    begin
        readln(f,s);
        outtextxy(50,y,s);
        y:=y+20;
    end;
    close(f);
    readkey;
    cleardevice;
end;
procedure game;
begin
    init;
    repeat;
    neupr(x1,y1,hx1,hy1,p1);
    if keypressed then upr(x2,y2,h2,p2);
    if vistrel then polet(xp,yp,vistrel,pp);
    if proverka(x1,y1,xp,yp)then
    begin
        putimage(xp,yp,pp^,1);
        putimage(x1,y1,p1^,1);
        vistrel:=false;
        putimage(x1,y1,pvz^,1);
        delay(1000);
        putimage(x1,y1,pvz^,1);
        n:=n+1;
        schet(10,10,n);
        x1:=random(getmaxx-50)+1;
        y1:=10;
        putimage(x1,y1,p1^,1);
     end;
     if proverka(x1,y1,x2,y2) then
     begin
         putimage(x1,y1,p1^,1);
         putimage(x2,y2,p2^,1);
         putimage(x1,y1,pvz^,1);
         delay(1000);
         putimage(x1,y1,pvz^,1);
         life:=life-1;
         schet(10,10,life);
         x1:=random(getmaxx-50)+1;
         y1:=10;
         putimage(x1,y1,p1^,1);
         x2:=100;
         y2:=400;
         putimage(x2,y2,p2^,1);
      end;
      until ch=esc;
end;
procedure menu;
var np:integer;
begin
     setcolor(green);
     settextstyle(0,0,5);
     outtextxy(250,40,'меню');
     outtextxy(50,200,'1.игра');
     outtextxy(50,240,'2.помощь');
     outtextxy(50,280,'3.выход');
     setcolor(red);
     settextstyle(0,0,3);
     outtextxy(150,400,'выберите нужнфй пункт и нажмите enter');
     np:=1;
     putimage(400,200+(np-1)*40,pk^,1);
     repeat;
        ch:=readkey;
        if ch=#0 then
           begin
               ch:=readkey;
               putimage(400,200+(np-1)*40,pk^,1);
               case ch of
               up: if np>1 then np:=np-1;
               down: if np<3 then np:=np+1;
               end;
               putimage(400,200+(np-1)*40,pk^,1);
               end;
         unti;
         ch=enter
         case np of
         1:game;
         2:help;
         3:halt;
         end;
end;
begin
   gd:=detect;
   initgraph(gd,gm,' ');
   randomize;
   initpict;
   zastavka;
   init;
   repeat
       menu;
   until 1=2;
   closegraph;
end.

_____
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 06.11.2013 в 15:59.
Kcilika вне форума Ответить с цитированием
Старый 06.11.2013, 15:54   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код оформляйте нормально) кнопочка с "#"
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 06.11.2013, 15:59   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А как именно программа реагирует?
В чем ошибки проявляются?

P.S. Код я оформил.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.11.2013, 16:09   #4
Kcilika
Пользователь
 
Регистрация: 06.11.2013
Сообщений: 19
По умолчанию

в процедуре меню пишет перед until что нашел end а искал ;

спасибо за помощь с оформлением) буду знать) я первы1 раз на этом форуме просто

Последний раз редактировалось Stilet; 06.11.2013 в 16:14.
Kcilika вне форума Ответить с цитированием
Старый 06.11.2013, 16:11   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Правильно пишет:
Цитата:
unti;
ch=enter
unti это что? поправляй на правильное слово и условие вписать не забудь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.11.2013, 16:12   #6
Kcilika
Пользователь
 
Регистрация: 06.11.2013
Сообщений: 19
По умолчанию

Изображения
Тип файла: jpg Безымянный.jpg (73.0 Кб, 120 просмотров)
Kcilika вне форума Ответить с цитированием
Старый 06.11.2013, 16:18   #7
Kcilika
Пользователь
 
Регистрация: 06.11.2013
Сообщений: 19
По умолчанию

а что значит если пишет что модули graph и crt не найдены и так же с модулями wingraph и wincrt? точнее что с этим делать?
Kcilika вне форума Ответить с цитированием
Старый 06.11.2013, 16:46   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Kcilika Посмотреть сообщение
а что значит если пишет что модули graph и crt не найдены и так же с модулями wingraph и wincrt? точнее что с этим делать?
он так пишет, потому как этот код Вы взяли для программы Turbo Pascal (под DOS), а у Вас PascalABC.NET
это другой компилятор со своими "нюансами"


p.s. кроме until, в этом коде ещё достаточно и других ошибок.. к сожалению..
Вы его где взяли?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.11.2013, 17:11   #9
Kcilika
Пользователь
 
Регистрация: 06.11.2013
Сообщений: 19
По умолчанию

методичка.. я знаю что там их еще много.. кое-что уже исправила.. я с паскалем работаю недавно и не очень еще хорошо его знаю..
Kcilika вне форума Ответить с цитированием
Старый 06.11.2013, 23:08   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Kcilika Посмотреть сообщение
методичка.. я знаю что там их еще много.. кое-что уже исправила.. я с паскалем работаю недавно и не очень еще хорошо его знаю..
ясно. остаётся пожелать Вам терпения и успехов.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помгите найти ошибку Марина93 Помощь студентам 1 22.12.2012 10:39
Помгите найти ошибку. vbh Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 01.01.2012 18:51
найти ошибки!!)) Ангел без крыльев Visual C++ 1 01.05.2011 01:06
найти ошибки Marseline Помощь студентам 0 22.01.2010 15:48
Помгите найти ошибку (MV C++) JOFRIF Общие вопросы C/C++ 8 08.10.2009 03:28