Russian Belarusian English French German Japanese Ukrainian

Игра на TP

Незаконченный проект моей студенческой юности, в данном случае глупости.
Жалко просто закинуть результат недосыпаний и мучений, поэтому решил выложить на портале. Поделиться мыслями так сказать, показать что и такое в жизни бывает, и в надежде, что кто-нибудь заинтересуется и захочет продолжить... А может это просто вдохновит кого нибудь на новые подвиги в программировании... В любом случае, вот Вам одна история.

 

Предистория

Когда то, давным давно, на первом курсе, когда я только познакомился с понятием "программирование", с минимальными знаниями на базе школьной программе об основах программирования, я загорелся идеей написать собственную игру... Тогда я еще не понимал что значит написать игру (да и вообще серьёзную программу), и совершенно не понимал какой это геморрой... Но тем не менее, не имея опыта, и привычки (на тот момент ) ковыряться в поиска ответов в интернете, я , вооружившись знаниями о кнопках F1 и Ctrl+F1, забурился в IDE-шке Turbo Pascal 7.0. Точнее будет сказать Borland Pascal 7.0 (с 7-й версии вместе с tp.exe поставлялся и bp.exe, об этом поговорим в другой раз), не в этом суть...

Вот такая коротенькая предистория как появилась за свет первая моя, недоведёная к сожалению до полнорабочего состояния, игрушка, которую я нарёк "The STUDENT"....

Игрушкой это по факту назвать толком нельзя! А вот примером рвения к поглощению знаний о программировании вполне можно...

Начну с показа...

 

Что это такое

Суть, точнее предполагаемая суть - это перемещение персонажем по виртуальному учебному учреждению, получение заданий, развлечения... Во всякому случае такова была идея, ну а на деле получилось это

  1. Что то вроде приглашения в игру


     

  2. А это главное меню... Моя гордость - это кнопки!


     

  3. Это такие себе мини настройки для игры, хотя на деле они не применены


     

  4. А вот и "интерфейс" игры


     

Судить конечно Вам, но помоему для новичка, да на BP, да без знаний ООП, очень даже ничего так

 

Зачем и почему

Начну с конца. Почему так получилось, что я её не закончил - не могу никак вспомнить... Чисто предположение: это было на кануне каникул, а в сентябре я попросту забыл про неё... Но может и не поэтому... В общем не помню...

А вот зачем я это сделал (точнее начал, и не доделал) я помню хорошё... Началось всё с идеи, и с примеров на лабах с простенькими программулями типа подсчёта уравнений и т.п. всячина. Дома, сутками на пролёт я ковырял этот бедный компилятор в поисках чего нить интересного (так я нашёл мануал, ибо преподаватели почему то не соизволили расказать о его существовании), и наткнулся на библиотеку graph. Это была последняя капля, которая переполнила чашу, и меня понесло. Я эксперементировал со всеми функциями, которые только находил в мануале, подставлял все допустимые и недопустимые варианты, и так ломая себе мозг и компилятор находил прикольные и интересные решения задач, которых по факту даже не ставил перед собой.

Я, как и любой начинающий программист (наверно любой, в этом я пока не совсем уверен), хотел всё и сразу - знать все языки, штамповать проги налево и направо и получать кайф от шкрябанья кодов... Но я наткнулся на жестокую правду жизни - всё оказалось совсем даже не просто... Точно уже не помню сколько времени я потратил на создание этого кода. Но одно я помню точно, весь вторник какой то недели, в течении трёх пар я рисовал на листике в клетку персонажа и переносил его координаты в код (функция чувак, дальше в коде расскажу подробней), на что очень весело реагировали мои однокурсники.

Вот пожалуй и всё, что я смог вспомнить спустя столько лет...
Вот недавно наткнулся на старый архив с проектами, и там был архив "My_game_BP"... Захотелось продолжить, а оказалось что не всё так просто, сейчас у меня выработался стиль программирования и определённые привычки, и разобраться в этом старом коде оказалось не так просто, убил много времени и сделал вывод что проще начать заново!

Но может кому нибудь пригодиться или кто нибудь заинтересуется, и я передам эстафету...

 

Код

Весь код кидать не буду - читать неудобно, буду покусочкам

Начнёмс с начала, там всё понятно, почти! От куда я брал названия переменных ума не приложу...

 

  1. Program My;
  2. Uses crt,graph;
  3. Var d,m,k,x,y,ycur,n,chuvak:integer;
  4.     q:char;
  5.     firstname,passvord:string;

 

А дальше тело главной функции программы... всё просто...

 

  1. Begin
  2. randomize;d:=9;m:=2;initgraph(d,m,'');
  3. cleardevice;randomize;ycur:=40;firstname:='Player';
  4.  
  5. {zagruzka};menu;
  6. repeat
  7. Najatie;
  8. until m=123;if d=123 then EXIT;m:=0;d:=0;
  9.  
  10. repeat
  11. knopki1;tehnar;
  12. repeat
  13. Najatie1;
  14. until m=123;if d=123 then exit;
  15. until m=13;
  16. exit;
  17.  
  18. closegraph;
  19. End.

 

Пойдём по порядку...

 

  1. Procedure Zagruzka;
  2.      BEGIN
  3.        d:=0;m:=20;randomize;
  4.        repeat
  5.        d:=d+1;settextstyle(0,0,d);
  6.        k:=random(14)+1;setcolor(k);outtextxy(0,m,'Starting');delay(100);
  7.        k:=random(14)+1;setcolor(k);outtextxy(0,m,'Starting');delay(100);
  8.        k:=random(14)+1;setcolor(k);outtextxy(0,m,'Starting');
  9.        if d=10 then begin d:=0;m:=m+50;end;
  10.        until m>450;
  11.        cleardevice;
  12.        settextstyle(0,0,2);setcolor(4);outtextxy(240,200,'loading...');setcolor(10);setfillstyle(1,10);
  13.        for k:=0 to 360 do begin pieslice(250,350,k,0,20);delay(1000);pieslice(320,350,k,0,20);delay(1000);
  14.        pieslice(390,350,k,0,20);delay(1000);end;setcolor(0);
  15.        for k:=0 to 40 do begin d:=330+k;line(230,d,410,d);delay(10000);end;setcolor(0);
  16.        for k:=0 to 160 do begin d:=240+k;line(d,170,d,220);delay(1000);end;cleardevice;setcolor(15);outtextxy(240,200,'W');
  17.        delay(10000);delay(10000);outtextxy(260,200,'e');delay(10000);delay(10000);outtextxy(280,200,'l');delay(10000);
  18.     delay(10000);outtextxy(300,200,'c');delay(10000);delay(10000);outtextxy(320,200,'o');delay(10000);delay(10000);
  19.       outtextxy(340,200,'m');delay(10000);delay(10000);outtextxy(360,200,'e');delay(10000);delay(10000);delay(10000);
  20.        delay(10000);delay(10000);delay(10000);
  21.      END;

 

Далее... Пока всё понятно. Надеюсь Вам тоже )))

 

  1. Procedure Cursor;
  2.      begin
  3.        setcolor(15);
  4.        line(35,40,35,60);line(35,40,115,40);
  5.        line(35,85,35,105);line(35,85,115,85);
  6.        line(35,130,35,150);line(35,130,115,130);
  7.        line(35,175,35,195);line(35,175,115,175);
  8.        line(35,220,35,240);line(35,220,115,220);
  9.        {----------------------------------------}
  10.        line(36,41,36,59);line(36,41,114,41);
  11.        line(36,86,36,104);line(36,86,114,86);
  12.        line(36,131,36,149);line(36,131,114,131);
  13.        line(36,176,36,194);line(36,176,114,176);
  14.        line(36,221,36,239);line(36,221,114,221);
  15.  
  16.        setcolor(8);
  17.        line(115,40,115,60);line(35,60,115,60);
  18.        line(115,85,115,105);line(35,105,115,105);
  19.        line(115,130,115,150);line(35,150,115,150);
  20.        line(115,175,115,195);line(35,195,115,195);
  21.        line(115,220,115,240);line(35,240,115,240);
  22.        {----------------------------------------}
  23.        line(114,41,114,59);line(36,59,114,59);
  24.        line(114,86,114,104);line(36,104,114,104);
  25.        line(114,131,114,149);line(36,149,114,149);
  26.        line(114,176,114,194);line(36,194,114,194);
  27.        line(114,221,114,239);line(36,239,114,239);
  28.  
  29.        setcolor(12);rectangle(35,ycur,115,ycur+20);
  30.      end;

 

А вот это уже интересно... Функция обработки нажатия клавиш... По сути прорисовка меню...

 

  1. Procedure Najatie;
  2.      begin
  3.        q:=readkey;
  4.         if ord(q)=50 then ycur:=ycur+45;
  5.         if ord(q)=56 then ycur:=ycur-45;
  6.         if ord(q)=13 then
  7.                 begin
  8.                   if ycur=40 then
  9.                      begin     {game}
  10.                        setcolor(8);
  11.                         line(35,40,35,60);line(35,40,115,40);line(36,41,36,59);line(36,41,114,41);
  12.                        setcolor(15);
  13.                         line(115,40,115,60);line(35,60,115,60);line(114,41,114,59);line(36,59,114,59);
  14.                        delay(10000);delay(10000);
  15.                         line(35,40,35,60);line(35,40,115,40);line(36,41,36,59);line(36,41,114,41);
  16.                        setcolor(8);
  17.                         line(115,40,115,60);line(35,60,115,60);line(114,41,114,59);line(36,59,114,59);
  18.                        delay(10000);delay(10000);
  19.                        setfillstyle(8,9);setcolor(14);settextstyle(0,0,2);
  20.                        if firstname='Player' then begin;bar(140,30,610,450);outtextxy(250,240,'Enter the NAME !!!');q:=readkey;
  21.                        end;
  22.                        bar(140,30,610,450);settextstyle(0,0,0);
  23.                        setcolor(15);outtextxy(300,240,'Use 2,8 and ENTER');
  24.                        if firstname<>'Player'then m:=123;
  25.                      end;
  26.                   if ycur=85 then
  27.                      begin      {name}
  28.                        setcolor(8);
  29.                         line(35,85,35,105);line(35,85,115,85);line(36,86,36,104);line(36,86,114,86);
  30.                        setcolor(15);
  31.                         line(115,85,115,105);line(35,105,115,105);line(114,86,114,104);line(36,104,114,104);
  32.                        delay(10000);delay(10000);
  33.                         line(35,85,35,105);line(35,85,115,85);line(36,86,36,104);line(36,86,114,86);
  34.                        setcolor(8);
  35.                         line(115,85,115,105);line(35,105,115,105);line(114,86,114,104);line(36,104,114,104);
  36.                        delay(10000);delay(10000);
  37.  
  38.                        closegraph;clrscr;textcolor(14);writeln;writeln;writeln;writeln;writeln;writeln;writeln;
  39.                        writeln('                          Enter your name :');
  40.                        textcolor(10);write('                                           ');readln(firstname);
  41.                        d:=9;m:=2;initgraph(d,m,'');
  42.                        setfillstyle(8,3);bar(0,0,640,480);setcolor(10);rectangle(9,9,631,471);rectangle(10,10,630,470);
  43.                        setfillstyle(8,3);bar(0,0,640,480);setcolor(10);rectangle(9,9,631,471);
  44.                       rectangle(10,10,630,470);rectangle(15,15,625,465);rectangle(14,14,626,466);setfillstyle(8,1);
  45.                        bar(30,30,120,450);setfillstyle(8,9);bar(140,30,610,450);setcolor(15);
  46.                        outtextxy(300,240,'Use 2,8 and ENTER');
  47.                        setfillstyle(9,1);
  48.                        bar(35,40,115,60);setcolor(14);outtextxy(60,47,'GAME');
  49.                        bar(35,85,115,105);setcolor(14);outtextxy(60,92,'Name');
  50.                        bar(35,130,115,150);setcolor(14);outtextxy(45,137,'Password');
  51.                        bar(35,175,115,195);setcolor(14);outtextxy(55,182,'Avtor');
  52.                        bar(35,220,115,240);setcolor(12);outtextxy(60,227,'EXIT');
  53.                        setcolor(15);
  54.                        line(35,40,35,60);line(35,40,115,40);
  55.                        line(35,85,35,105);line(35,85,115,85);
  56.                        line(35,130,35,150);line(35,130,115,130);
  57.                        line(35,175,35,195);line(35,175,115,175);
  58.                        line(35,220,35,240);line(35,220,115,220);
  59.                        {----------------------------------------}
  60.                        line(36,41,36,59);line(36,41,114,41);
  61.                        line(36,86,36,104);line(36,86,114,86);
  62.                        line(36,131,36,149);line(36,131,114,131);
  63.                        line(36,176,36,194);line(36,176,114,176);
  64.                        line(36,221,36,239);line(36,221,114,221);
  65.                        setcolor(8);
  66.                        line(115,40,115,60);line(35,60,115,60);
  67.                        line(115,85,115,105);line(35,105,115,105);
  68.                        line(115,130,115,150);line(35,150,115,150);
  69.                        line(115,175,115,195);line(35,195,115,195);
  70.                        line(115,220,115,240);line(35,240,115,240);
  71.                        {----------------------------------------}
  72.                        line(114,41,114,59);line(36,59,114,59);
  73.                        line(114,86,114,104);line(36,104,114,104);
  74.                        line(114,131,114,149);line(36,149,114,149);
  75.                        line(114,176,114,194);line(36,194,114,194);
  76.                        line(114,221,114,239);line(36,239,114,239);
  77.  
  78.                      end;
  79.                   if ycur=130 then
  80.                      begin       {passvord}
  81.                        setcolor(8);
  82.                         line(35,130,35,150);line(35,130,115,130);line(36,131,36,149);line(36,131,114,131);
  83.                        setcolor(15);
  84.                         line(115,130,115,150);line(35,150,115,150);line(114,131,114,149);line(36,149,114,149);
  85.                        delay(10000);delay(10000);
  86.                         line(35,130,35,150);line(35,130,115,130);line(36,131,36,149);line(36,131,114,131);
  87.                        setcolor(8);
  88.                         line(115,130,115,150);line(35,150,115,150);line(114,131,114,149);line(36,149,114,149);
  89.                        delay(10000);delay(10000);
  90.                        closegraph;delay(10000);delay(10000);delay(10000);delay(10000);delay(10000);delay(10000);textcolor(10);
  91.                        for k:=1 to 1000 do begin n:=(random(9));write(n,' ');delay(1000);end;delay(10000);delay(10000);
  92.                        textcolor(14);clrscr;writeln;writeln;writeln;writeln;writeln;writeln;writeln;
  93.                        writeln('                                Enter the PASSVORD');
  94.                        write('                                          ');textcolor(15);readln(passvord);
  95.           {proverka}   if (passvord='') or (passvord='') or (passvord='') or (passvord='') then begin k:=10; end
  96.                        else k:=4;textcolor(k);clrscr;
  97.                        for k:=1 to 1000 do begin n:=(random(9));write(n,' ');delay(1000);end;
  98.                        d:=9;m:=2;initgraph(d,m,'');
  99.                        setfillstyle(8,3);bar(0,0,640,480);setcolor(10);rectangle(9,9,631,471);rectangle(10,10,630,470);
  100.                        setfillstyle(8,3);bar(0,0,640,480);setcolor(10);rectangle(9,9,631,471);
  101.                        rectangle(10,10,630,470);rectangle(15,15,625,465);rectangle(14,14,626,466);setfillstyle(8,1);
  102.                        bar(30,30,120,450);setfillstyle(8,9);bar(140,30,610,450);setcolor(15);
  103.                        outtextxy(300,240,'Use 2,8 and ENTER');
  104.                        setfillstyle(9,1);
  105.                        bar(35,40,115,60);setcolor(14);outtextxy(60,47,'GAME');
  106.                        bar(35,85,115,105);setcolor(14);outtextxy(60,92,'Name');
  107.                        bar(35,130,115,150);setcolor(14);outtextxy(45,137,'Password');
  108.                        bar(35,175,115,195);setcolor(14);outtextxy(55,182,'Avtor');
  109.                        bar(35,220,115,240);setcolor(12);outtextxy(60,227,'EXIT');
  110.                        setcolor(15);
  111.                        line(35,40,35,60);line(35,40,115,40);
  112.                        line(35,85,35,105);line(35,85,115,85);
  113.                        line(35,130,35,150);line(35,130,115,130);
  114.                        line(35,175,35,195);line(35,175,115,175);
  115.                        line(35,220,35,240);line(35,220,115,220);
  116.                        {----------------------------------------}
  117.                        line(36,41,36,59);line(36,41,114,41);
  118.                        line(36,86,36,104);line(36,86,114,86);
  119.                        line(36,131,36,149);line(36,131,114,131);
  120.                        line(36,176,36,194);line(36,176,114,176);
  121.                        line(36,221,36,239);line(36,221,114,221);
  122.                        setcolor(8);
  123.                        line(115,40,115,60);line(35,60,115,60);
  124.                        line(115,85,115,105);line(35,105,115,105);
  125.                        line(115,130,115,150);line(35,150,115,150);
  126.                        line(115,175,115,195);line(35,195,115,195);
  127.                        line(115,220,115,240);line(35,240,115,240);
  128.                        {----------------------------------------}
  129.                        line(114,41,114,59);line(36,59,114,59);
  130.                        line(114,86,114,104);line(36,104,114,104);
  131.                        line(114,131,114,149);line(36,149,114,149);
  132.                        line(114,176,114,194);line(36,194,114,194);
  133.                        line(114,221,114,239);line(36,239,114,239);
  134.                      end;
  135.  
  136.                   if ycur=175 then
  137.                      begin       {avtor}
  138.                        setcolor(8);
  139.                         line(35,175,35,195);line(35,175,115,175);line(36,176,36,194);line(36,176,114,176);
  140.                        setcolor(15);
  141.                         line(115,175,115,195);line(35,195,115,195);line(114,176,114,194);line(36,194,114,194);
  142.                        delay(10000);delay(10000);
  143.                         line(35,175,35,195);line(35,175,115,175);line(36,176,36,194);line(36,176,114,176);
  144.                        setcolor(8);
  145.                         line(115,175,115,195);line(35,195,115,195);line(114,176,114,194);line(36,194,114,194);
  146.                        delay(10000);delay(10000);
  147.                      end;
  148.                   if ycur=220 then
  149.                      begin        {exit}
  150.                        setcolor(8);
  151.                         line(35,220,35,240);line(35,220,115,220);line(36,221,36,239);line(36,221,114,221);
  152.                        setcolor(15);
  153.                         line(115,220,115,240);line(35,240,115,240);line(114,221,114,239);line(36,239,114,239);
  154.                        delay(10000);delay(10000);
  155.                         line(35,220,35,240);line(35,220,115,220);line(36,221,36,239);line(36,221,114,221);
  156.                        setcolor(8);
  157.                         line(115,220,115,240);line(35,240,115,240);line(114,221,114,239);line(36,239,114,239);
  158.                        delay(10000);delay(10000);
  159.  
  160.                        m:=123;d:=123;setcolor(0);for k:=0 to 480 do begin line(0,k,640,k);delay(1000);end;
  161.                      end;
  162.                 end;
  163.         if ycur>221 then ycur:=40;
  164.         if ycur<39 then ycur:=220;
  165.        cursor;
  166.      end;

 

Рисуем кнопки

 

  1. Procedure Knopki;
  2.      begin
  3.        setfillstyle(9,1);
  4.        bar(35,40,115,60);setcolor(14);outtextxy(60,47,'GAME');
  5.        bar(35,85,115,105);setcolor(14);outtextxy(60,92,'Name');
  6.        bar(35,130,115,150);setcolor(14);outtextxy(45,137,'Password');
  7.        bar(35,175,115,195);setcolor(14);outtextxy(55,182,'Avtor');
  8.        bar(35,220,115,240);setcolor(12);outtextxy(60,227,'EXIT');
  9.        setcolor(15);
  10.        line(35,40,35,60);line(35,40,115,40);
  11.        line(35,85,35,105);line(35,85,115,85);
  12.        line(35,130,35,150);line(35,130,115,130);
  13.        line(35,175,35,195);line(35,175,115,175);
  14.        line(35,220,35,240);line(35,220,115,220);
  15.        {----------------------------------------}
  16.        line(36,41,36,59);line(36,41,114,41);
  17.        line(36,86,36,104);line(36,86,114,86);
  18.        line(36,131,36,149);line(36,131,114,131);
  19.        line(36,176,36,194);line(36,176,114,176);
  20.        line(36,221,36,239);line(36,221,114,221);
  21.  
  22.        setcolor(8);
  23.        line(115,40,115,60);line(35,60,115,60);
  24.        line(115,85,115,105);line(35,105,115,105);
  25.        line(115,130,115,150);line(35,150,115,150);
  26.        line(115,175,115,195);line(35,195,115,195);
  27.        line(115,220,115,240);line(35,240,115,240);
  28.        {----------------------------------------}
  29.        line(114,41,114,59);line(36,59,114,59);
  30.        line(114,86,114,104);line(36,104,114,104);
  31.        line(114,131,114,149);line(36,149,114,149);
  32.        line(114,176,114,194);line(36,194,114,194);
  33.        line(114,221,114,239);line(36,239,114,239);
  34.        cursor;
  35.      end;

 

Построение меню

 

  1. Procedure Menu;
  2.      begin
  3.        clrscr;cleardevice;setfillstyle(8,3);bar(0,0,640,480);setcolor(10);rectangle(9,9,631,471);rectangle(10,10,630,470);
  4.        rectangle(15,15,625,465);rectangle(14,14,626,466);settextstyle(0,0,4);setcolor(14);outtextxy(160,200,'The STUDENT');
  5.        settextstyle(0,0,0);setcolor(15);outtextxy(269,400,'Press any key');q:=readkey;setfillstyle(8,3);bar(0,0,640,480);
  6.        setcolor(10);rectangle(9,9,631,471);rectangle(10,10,630,470);rectangle(15,15,625,465);rectangle(14,14,626,466);
  7.        setfillstyle(8,1);bar(30,30,120,450);{menu}
  8.        setfillstyle(8,9);bar(140,30,610,450);{rabochee pole}
  9.        setcolor(15);outtextxy(300,240,'Use 2,8 and ENTER');
  10.        knopki;
  11.      end;

 

Переходим к интерфейсу игры...

 

  1. Procedure Tehnar;
  2.      begin
  3.        setfillstyle(0,0);
  4.        bar(140,30,610,450);
  5.        setcolor(14);rectangle(142,32,608,448);rectangle(140,30,610,450);setcolor(8);rectangle(144,34,606,436);{s 436 decor}
  6.        setfillstyle(1,7);bar(145,35,605,435);setfillstyle(1,15);
  7.  
  8.        setcolor(8);
  9.                    line(145,75,605,75);
  10.                    line(145,135,605,135);
  11.                    line(145,175,605,175);
  12.                    line(145,235,605,235);
  13.                    line(145,275,605,275);
  14.                    line(145,335,605,335);
  15.                    line(145,375,605,375);
  16.  
  17.                     floodfill(150,40,8);
  18.                     floodfill(150,140,8);
  19.                     floodfill(150,340,8);
  20.                     floodfill(150,240,8);
  21.  
  22.                    line(145,55,605,55);
  23.                    line(145,155,605,155);
  24.                    line(145,255,605,255);
  25.                    line(145,355,605,355);
  26.                     setfillstyle(1,14);
  27.                     floodfill(150,70,8);
  28.                     floodfill(150,170,8);
  29.                     floodfill(150,370,8);
  30.                     floodfill(150,270,8);
  31.  
  32.                    {dveri}
  33.  
  34. {3 etaj}     setfillstyle(1,6);setcolor(8);
  35.                 bar(225,45,240,75);rectangle(225,45,240,75);
  36.                 bar(265,45,280,75);rectangle(265,45,280,75);
  37.                 bar(305,45,320,75);rectangle(305,45,320,75);
  38.                 bar(345,45,360,75);rectangle(345,45,360,75);
  39.                 bar(385,45,400,75);rectangle(385,45,400,75);
  40.                 bar(425,45,440,75);rectangle(425,45,440,75);
  41.                 bar(465,45,480,75);rectangle(465,45,480,75);
  42.                 bar(505,45,520,75);rectangle(505,45,520,75);
  43.                 bar(545,45,560,75);rectangle(545,45,560,75);
  44.                 bar(585,45,600,75);rectangle(585,45,600,75);
  45.              setfillstyle(1,15);
  46.                 bar(144,34,185,75);rectangle(144,34,185,75); line(145,55,165,75);line(165,35,185,55);
  47.                                                              setfillstyle(1,14);floodfill(150,70,8);
  48.  
  49. {2 etaj}     setfillstyle(1,6);setcolor(8);
  50.                 bar(265,145,280,175);rectangle(265,145,280,175);
  51.                 bar(305,145,320,175);rectangle(305,145,320,175);
  52.                 bar(345,145,360,175);rectangle(345,145,360,175);
  53.                 bar(385,145,400,175);rectangle(385,145,400,175);
  54.                 bar(425,145,440,175);rectangle(425,145,440,175);
  55.                 bar(465,145,480,175);rectangle(465,145,480,175);
  56.                 bar(505,145,520,175);rectangle(505,145,520,175);
  57.                 bar(545,145,560,175);rectangle(545,145,560,175);
  58.                 bar(585,145,600,175);rectangle(585,145,600,175);
  59.              setfillstyle(1,15);
  60.                 bar(144,135,185,175);rectangle(144,135,185,175); line(145,155,165,175);line(165,135,185,155);
  61.                                                                  setfillstyle(1,14);floodfill(150,170,8);
  62.              setfillstyle(1,15);
  63.                 bar(205,135,245,175);rectangle(205,135,245,175); line(225,135,205,155);line(205,175,245,135);
  64.                                                                  setfillstyle(1,14);floodfill(210,155,8);
  65.                                                                  setfillstyle(1,7); floodfill(240,170,8);
  66.                 line(210,170,245,170);line(215,165,245,165);line(220,160,245,160);line(225,155,245,155);line(230,150,245,150);
  67.                 line(235,145,245,145);line(240,140,245,140);
  68.  
  69. {1 etaj}     setfillstyle(1,6);setcolor(8);
  70.                 bar(265,245,280,275);rectangle(265,245,280,275);
  71.                 bar(305,245,320,275);rectangle(305,245,320,275);
  72.         bar(405,245,425,275);rectangle(405,245,425,275);bar(425,245,445,275);rectangle(425,245,445,275);  {vuhod}
  73.                 bar(465,245,480,275);rectangle(465,245,480,275);
  74.                 bar(505,245,520,275);rectangle(505,245,520,275);
  75.                 bar(545,245,560,275);rectangle(545,245,560,275);
  76.                 bar(585,245,600,275);rectangle(585,245,600,275);
  77.              setfillstyle(1,15);
  78.                 bar(144,235,185,275);rectangle(144,235,185,275); line(145,255,165,275);line(165,235,185,255);
  79.                                                                  setfillstyle(1,14);floodfill(150,270,8);
  80.              setfillstyle(1,15);
  81.                 bar(205,235,245,275);rectangle(205,235,245,275); line(225,235,205,255);line(205,275,245,235);
  82.                                                                  setfillstyle(1,14);floodfill(210,255,8);
  83.                                                                  setfillstyle(1,7); floodfill(240,270,8);
  84.                 line(210,270,245,270);line(215,265,245,265);line(220,260,245,260);line(225,255,245,255);line(230,250,245,250);
  85.                 line(235,245,245,245);line(240,240,245,240);
  86.  
  87.      {doska obyavleniy} setfillstyle(1,6);bar(345,240,385,265);setfillstyle(1,15);bar(350,250,380,260);
  88.                         setcolor(12);line(355,245,375,245);
  89.  
  90. {0 etaj}     setfillstyle(1,6);setcolor(8);
  91.                 bar(265,345,280,375);rectangle(265,345,280,375);
  92.                 bar(305,345,320,375);rectangle(305,345,320,375);
  93.                 bar(405,345,420,375);rectangle(405,345,420,375);
  94.                 bar(545,345,560,375);rectangle(545,345,560,375);
  95.                 bar(585,345,600,375);rectangle(585,345,600,375);
  96.              setfillstyle(1,15);
  97.                 bar(144,335,185,375);rectangle(144,335,185,375); line(145,355,165,375);line(165,335,185,355);
  98.                                                                  setfillstyle(1,14);floodfill(150,370,8);
  99.              setfillstyle(1,15);
  100.                 bar(205,335,245,375);rectangle(205,335,245,375); line(225,335,205,355);line(205,375,245,335);
  101.                                                                  setfillstyle(1,14);floodfill(210,355,8);
  102.                                                                  setfillstyle(1,7); floodfill(240,370,8);
  103.                 line(210,370,245,370);line(215,365,245,365);line(220,360,245,360);line(225,355,245,355);line(230,350,245,350);
  104.                 line(235,345,245,345);line(240,340,245,340);
  105.  
  106.             {bufet} setfillstyle(1,6);bar(345,345,385,375);rectangle(345,345,385,375);line(345,360,385,360);
  107.                     line(365,345,365,360);setfillstyle(1,2);floodfill(350,370,8);
  108.             {razdevalka} setfillstyle(1,0);bar(445,345,525,360);rectangle(445,345,525,360);line(485,345,485,360);
  109.          end;

 

Какие то кнопки ))

 

  1. Procedure Knopki1;
  2.      begin
  3.        setfillstyle(9,1);
  4.        bar(35,40,115,60);setcolor(14);outtextxy(47,47,'New game');
  5.        bar(35,85,115,105);setcolor(14);outtextxy(70,92,'');
  6.        bar(35,130,115,150);setcolor(14);outtextxy(45,137,'Password');
  7.        bar(35,175,115,195);setcolor(14);outtextxy(60,182,'Help');
  8.        bar(35,220,115,240);setcolor(12);outtextxy(60,227,'EXIT');
  9.  
  10.        setcolor(15);
  11.        line(35,40,35,60);line(35,40,115,40);
  12.        line(35,85,35,105);line(35,85,115,85);
  13.        line(35,130,35,150);line(35,130,115,130);
  14.        line(35,175,35,195);line(35,175,115,175);
  15.        line(35,220,35,240);line(35,220,115,220);
  16.        {----------------------------------------}
  17.        line(36,41,36,59);line(36,41,114,41);
  18.        line(36,86,36,104);line(36,86,114,86);
  19.        line(36,131,36,149);line(36,131,114,131);
  20.        line(36,176,36,194);line(36,176,114,176);
  21.        line(36,221,36,239);line(36,221,114,221);
  22.  
  23.        setcolor(8);
  24.        line(115,40,115,60);line(35,60,115,60);
  25.        line(115,85,115,105);line(35,105,115,105);
  26.        line(115,130,115,150);line(35,150,115,150);
  27.        line(115,175,115,195);line(35,195,115,195);
  28.        line(115,220,115,240);line(35,240,115,240);
  29.        {----------------------------------------}
  30.        line(114,41,114,59);line(36,59,114,59);
  31.        line(114,86,114,104);line(36,104,114,104);
  32.        line(114,131,114,149);line(36,149,114,149);
  33.        line(114,176,114,194);line(36,194,114,194);
  34.        line(114,221,114,239);line(36,239,114,239);
  35.        cursor;
  36.      end;

 

Нажатие чего то там...

 

  1. Procedure Najatie1;
  2.      begin
  3.        q:=readkey;
  4.         if ord(q)=50 then ycur:=ycur+45;
  5.         if ord(q)=56 then ycur:=ycur-45;
  6.         if ord(q)=54 then
  7.                 begin
  8.  
  9.                 end;
  10.         if ord(q)=52 then
  11.                 begin
  12.  
  13.                 end;
  14.         if ord(q)=53 then
  15.                 begin
  16. {proverka mesta}
  17.  
  18.                 end;
  19.         if ord(q)=13 then
  20.                 begin
  21.                   if ycur=40 then
  22.                      begin     {new game}
  23.                        setcolor(8);
  24.                         line(35,40,35,60);line(35,40,115,40);line(36,41,36,59);line(36,41,114,41);
  25.                        setcolor(15);
  26.                         line(115,40,115,60);line(35,60,115,60);line(114,41,114,59);line(36,59,114,59);
  27.                        delay(10000);delay(10000);
  28.                         line(35,40,35,60);line(35,40,115,40);line(36,41,36,59);line(36,41,114,41);
  29.                        setcolor(8);
  30.                         line(115,40,115,60);line(35,60,115,60);line(114,41,114,59);line(36,59,114,59);
  31.                        delay(10000);delay(10000);
  32.                        setfillstyle(8,9);setcolor(14);settextstyle(0,0,2);
  33.                        if firstname='Player' then begin;bar(140,30,610,450);outtextxy(250,240,'Enter the NAME !!!');q:=readkey;
  34.                        end;
  35.                        bar(140,30,610,450);settextstyle(0,0,0);
  36.                        setcolor(15);outtextxy(300,240,'Use 2,8 and ENTER');
  37.                        if firstname<>'Player'then m:=123;
  38.                      end;
  39.                   if ycur=85 then
  40.                      begin      {}
  41.                        setcolor(8);
  42.                         line(35,85,35,105);line(35,85,115,85);line(36,86,36,104);line(36,86,114,86);
  43.                        setcolor(15);
  44.                         line(115,85,115,105);line(35,105,115,105);line(114,86,114,104);line(36,104,114,104);
  45.                        delay(10000);delay(10000);
  46.                         line(35,85,35,105);line(35,85,115,85);line(36,86,36,104);line(36,86,114,86);
  47.                        setcolor(8);
  48.                         line(115,85,115,105);line(35,105,115,105);line(114,86,114,104);line(36,104,114,104);
  49.                        delay(10000);delay(10000);
  50.                      end;
  51.  
  52.                   if ycur=130 then
  53.                      begin       {passvord}
  54.                        setcolor(8);
  55.                         line(35,130,35,150);line(35,130,115,130);line(36,131,36,149);line(36,131,114,131);
  56.                        setcolor(15);
  57.                         line(115,130,115,150);line(35,150,115,150);line(114,131,114,149);line(36,149,114,149);
  58.                        delay(10000);delay(10000);
  59.                         line(35,130,35,150);line(35,130,115,130);line(36,131,36,149);line(36,131,114,131);
  60.                        setcolor(8);
  61.                         line(115,130,115,150);line(35,150,115,150);line(114,131,114,149);line(36,149,114,149);
  62.                        delay(10000);delay(10000);
  63.                        closegraph;delay(10000);delay(10000);delay(10000);delay(10000);delay(10000);delay(10000);textcolor(10);
  64.                        for k:=1 to 1000 do begin n:=(random(9));write(n,' ');delay(1000);end;delay(10000);delay(10000);
  65.                        textcolor(14);clrscr;writeln;writeln;writeln;writeln;writeln;writeln;writeln;
  66.                        writeln('                                Enter the PASSVORD');
  67.                        write('                                          ');textcolor(15);readln(passvord);
  68.           {proverka}   if (passvord='') or (passvord='') or (passvord='') or (passvord='') then begin k:=10; end
  69.                        else k:=4;textcolor(k);clrscr;
  70.                        for k:=1 to 1000 do begin n:=(random(9));write(n,' ');delay(1000);end;
  71.                        d:=9;m:=2;initgraph(d,m,'');
  72.                        setfillstyle(8,3);bar(0,0,640,480);setcolor(10);rectangle(9,9,631,471);rectangle(10,10,630,470);
  73.                        setfillstyle(8,3);bar(0,0,640,480);setcolor(10);rectangle(9,9,631,471);
  74.                        rectangle(10,10,630,470);rectangle(15,15,625,465);rectangle(14,14,626,466);setfillstyle(8,1);
  75.                        bar(30,30,120,450);setfillstyle(8,9);bar(140,30,610,450);setcolor(15);
  76.                        tehnar;knopki1;
  77.  
  78.                      end;
  79.  
  80.                   if ycur=175 then
  81.                      begin       {help}
  82.                        setcolor(8);
  83.                         line(35,175,35,195);line(35,175,115,175);line(36,176,36,194);line(36,176,114,176);
  84.                        setcolor(15);
  85.                         line(115,175,115,195);line(35,195,115,195);line(114,176,114,194);line(36,194,114,194);
  86.                        delay(10000);delay(10000);
  87.                         line(35,175,35,195);line(35,175,115,175);line(36,176,36,194);line(36,176,114,176);
  88.                        setcolor(8);
  89.                         line(115,175,115,195);line(35,195,115,195);line(114,176,114,194);line(36,194,114,194);
  90.                        delay(10000);delay(10000);
  91.                      end;
  92.                   if ycur=220 then
  93.                      begin        {exit}
  94.                        setcolor(8);
  95.                         line(35,220,35,240);line(35,220,115,220);line(36,221,36,239);line(36,221,114,221);
  96.                        setcolor(15);
  97.                         line(115,220,115,240);line(35,240,115,240);line(114,221,114,239);line(36,239,114,239);
  98.                        delay(10000);delay(10000);
  99.                         line(35,220,35,240);line(35,220,115,220);line(36,221,36,239);line(36,221,114,221);
  100.                        setcolor(8);
  101.                         line(115,220,115,240);line(35,240,115,240);line(114,221,114,239);line(36,239,114,239);
  102.                        delay(10000);delay(10000);
  103.  
  104.                        m:=123;d:=123;setcolor(0);for k:=0 to 480 do begin line(0,k,640,k);delay(1000);end;
  105.                      end;
  106.                 end;
  107.         if ycur>221 then ycur:=40;
  108.         if ycur<39 then ycur:=220;
  109.        cursor;
  110.      end;

 

А вот и персонаж о котором я говорил:

 

  1. putpixel(x,y+6,0);putpixel(x,y+7,0);putpixel(x+1,y+6,0);putpixel(x+1,y+7,0);putpixel(x+1,y+8,0);putpixel(x+1,y+16,0);
  2. putpixel(x+1,y+17,0);putpixel(x+1,y+18,0);putpixel(x+1,y+19,0);putpixel(x+1,y+20,0);putpixel(x+1,y+21,0);putpixel(x+1,y+22,0);
  3. putpixel(x+2,y+1,0);putpixel(x+2,y+2,0);putpixel(x+2,y+3,0);putpixel(x+2,y+4,0);putpixel(x+2,y+6,0);putpixel(x+2,y+7,0);
  4. putpixel(x+2,y+8,0);putpixel(x+2,y+9,0);putpixel(x+2,y+10,0);putpixel(x+2,y+11,0);putpixel(x+2,y+12,0);putpixel(x+2,y+13,0);
  5. putpixel(x+2,y+14,0);putpixel(x+2,y+15,0);putpixel(x+2,y+16,0);putpixel(x+2,y+17,0);putpixel(x+2,y+18,0);putpixel(x+2,y+19,0);
  6. putpixel(x+2,y+20,0);putpixel(x+2,y+21,0);putpixel(x+2,y+22,0);putpixel(x+3,y,0);putpixel(x+3,y+1,0);putpixel(x+3,y+2,0);
  7. putpixel(x+3,y+3,0);putpixel(x+3,y+4,0);putpixel(x+3,y+22,0);putpixel(x+3,y+5,0);putpixel(x+3,y+6,0);putpixel(x+3,y+7,0);
  8. putpixel(x+3,y+8,0);putpixel(x+3,y+9,0);putpixel(x+3,y+10,0);putpixel(x+3,y+11,0);putpixel(x+3,y+12,0);putpixel(x+3,y+13,0);
  9. putpixel(x+3,y+14,0);putpixel(x+3,y+15,0);putpixel(x+3,y+16,0);putpixel(x+4,y,0);putpixel(x+4,y+1,0);putpixel(x+4,y+3,0);
  10. putpixel(x+4,y+4,0);putpixel(x+4,y+5,0);putpixel(x+4,y+6,0);putpixel(x+4,y+7,0);putpixel(x+4,y+8,0);putpixel(x+4,y+9,0);
  11. putpixel(x+4,y+10,0);putpixel(x+4,y+11,0);putpixel(x+4,y+12,0);putpixel(x+4,y+13,0);putpixel(x+4,y+14,0);putpixel(x+4,y+15,0);
  12. putpixel(x+5,y+2,0);putpixel(x+5,y+3,0);putpixel(x+5,y+4,0);putpixel(x+5,y+7,0);putpixel(x+5,y+8,0);putpixel(x+5,y+9,0);
  13. putpixel(x+5,y+10,0);putpixel(x+5,y+11,0);putpixel(x+5,y+12,0);putpixel(x+5,y+13,0);putpixel(x+5,y+14,0);putpixel(x+5,y+15,0);
  14. putpixel(x+5,y+16,0);putpixel(x+5,y+17,0);putpixel(x+5,y+18,0);putpixel(x+6,y+3,0);putpixel(x+6,y+10,0);putpixel(x+6,y+11,0);
  15. putpixel(x+6,y+15,0);putpixel(x+6,y+16,0);putpixel(x+6,y+17,0);putpixel(x+6,y+18,0);putpixel(x+6,y+19,0);putpixel(x+6,y+20,0);
  16. putpixel(x+6,y+21,0);putpixel(x+6,y+22,0);putpixel(x+7,y+11,0);putpixel(x+7,y+12,0);putpixel(x+7,y+18,0);putpixel(x+7,y+19,0);
  17. putpixel(x+7,y+20,0);putpixel(x+7,y+21,0);putpixel(x+7,y+22,0);putpixel(x+8,y+11,0);putpixel(x+8,y+12,0);putpixel(x+8,y+22,0);

 

А остальное я вроде описал коротко в комментах...
Для компиляции не забываем о файликах EGAVGA.BGI и GRAPH.TPU, без них в графике никак

В приложенных архивах .exe запуск игры, можете посмотреть и полная версия кода. Не забываем проверять на вирусы!!!

Ленты новостей Ленты новостей