www.gcmsite.ru

Новости Программы PHP-скрипты Статьи Числа
Услуги Резюме Игры Автомобили Поиск

СИСТЕМНОЕ И ВЕБ-ПРОГРАММИРОВАНИЕ
компьютерная техника, игры

Разработка простейшей аркадной игры "Солдат"

Дата написания: 11.12.2016

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

Для описания программного кода будет использоваться Borland Pascal 7.0

Program Solder_Version_1;             {    Make 21.11.1998    }
  Uses                                {  All rights reserved  }
    Crt,Dos;
  Var
    key              : char;
    stop             : Boolean;
    skor,startskor   : byte;
    r,c,rm,cm,p,o,i  : integer;
    dead,win,level,soldat,x,y : integer;
    s,t              : array [1..255] of byte;
    b,d              : boolean;
    hsc,sc           : integer;
 
{---------------------------------------------------------------------}
  procedure help;
    begin
      clrscr;
      readkey
    end;
{---------------------------------------------------------------------}
  procedure cursoroff;
    begin
      asm
        mov ah,1
        mov cx,$0100
        int $10
      end
    end;
{---------------------------------------------------------------------}
  procedure nastr;
    var
      stop      : boolean;
      x,y       : byte;
    begin
      clrscr;
      window(1,1,40,8);
      textbackground(5);
      clrscr;
      textcolor(14);
      stop:=false;
      gotoxy(3,3);
      writeln('    ',#26,' Ускорить     ',#27,' Затормозить');
      writeln('       ENTER-выход в главное меню');
      textcolor(10);
      x:=3;
      y:=6;
      while not stop do
        begin
          while not keypressed do
            begin
              gotoxy(x-1,y);
              write(' ',#2);
              delay(startskor);
              x:=x+1;
              if x = 37
                then
                  begin
                    gotoxy(x-2,y);
                    write('   ');
                    x:=3
                  end
            end;
          key:=readkey;
          if key = #13
            then stop:=true;
          if key = #0
            then
              begin
                key:=readkey;
                case key of
                  #75 : begin
                          startskor:=startskor+10;
                          if startskor = 250
                            then
                              startskor:=240
                        end;
                  #77 : begin
                          startskor:=startskor-10;
                          if startskor = 10
                            then
                              startskor:=20
                        end
                end
              end
        end;
      window(1,1,40,25);
      textbackground(0);
      clrscr
    end;
{---------------------------------------------------------------------}
  procedure klavisha;
    begin
      if  keypressed
        then
      begin
      key:=readkey;
      if key = #27
        then
          begin
            dead := 1;
            soldat := 1;
          end;
      if key = #0
        then
          begin
            key:=readkey;
            case key of
              #75:
                   begin
                     rm:=-1;
                     cm:=0
                   end;
              #77:
                   begin
                     rm:=1;
                     cm:=0
                   end;
              #72:
                   begin
                     rm:=0;
                     cm:=-1
                   end;
              #80:
                   begin
                     rm:=0;
                     cm:=1
                   end
            end
          end
      end
    end;
{---------------------------------------------------------------------}
  procedure bomb;
    begin
      textcolor(blue);
      for i:=1 to 255 do
        begin
          s[i]:=0;
          t[i]:=0
        end;
      for i:=1 to 6+level do
        begin
          s[i]:=r;
          t[i]:=c;
          while ((s[i]=r) and (t[i]=c)) or ((s[i]=p) and 
                 (t[i]=o)) or (t[i]=12)do
            begin
              s[i]:=random(30)+2;
              t[i]:=random(18)+4;
            end;
          gotoxy(s[i],t[i]);
          write('+')
        end
    end;
{---------------------------------------------------------------------}
  procedure status;
    begin
      clrscr;
      textcolor(1);
      for i:=0 to 1 do
        begin
          gotoxy(1,2+22*i);
          write('+++++++++++++++++++++++++++++++++++++++')
        end;
      for i:=2 to 24 do
        begin
          gotoxy(1,i);
          write('+');
          gotoxy(40,i);
          write('+')
        end;
      if sc>hsc
        then
          hsc:=sc;
      textcolor(10);
      gotoxy(1,1);
      write('Ваши очки :',sc:3,'   Лучший показатель :',hsc:3);
      textcolor(11);
      gotoxy(1,25);
      write('Уровень игры :',level:2,'   Количество жизней :',soldat);
    end;
{---------------------------------------------------------------------}
  procedure gobble;
    begin
      inc(sc);
      skor:=skor-5;
      if skor = 10
        then
          skor:=20;
      win:=1
    end;
{---------------------------------------------------------------------}
  procedure solder;
    begin
      gotoxy(r,c);
      write(' ');
      r:=r+rm;
      c:=c+cm;
      if (r < 2) or (c < 3) or (r > 39) or (c > 23)
        then
          dead:=1;
      for i:=1 to 6*level do
        begin
          if (r = s[i]) and (c = t[i])
            then
              begin
                dead:=1;
                break
              end;
        end;
      if (r = p) and (c = o)
        then
          gobble;
      gotoxy(r,c);
      textcolor(red);
      write(#2)
    end;
{---------------------------------------------------------------------}
  procedure target;
    begin
      p:=r;
      o:=c;
      while (p=r) and (o=c) do
        begin
          p:=random(30)+5;
          o:=random(20)+4;
        end;
      gotoxy(p,o);
      textcolor(green);
      write('$')
    end;
{---------------------------------------------------------------------}
  procedure game;
    begin
      skor:=startskor;
      d:=true;
      b:=true;
      while b  do
        begin
          if d
            then
              begin
                sc:=0;
                soldat:=3;
                level:=1;
                d:=false
              end;
          dead:=0;
          win:=0;
          c:=12;
          r:=10;
          cm:=0;
          rm:=1;
          randomize;
          status;
          target;
          bomb;
          while (dead=0) and (win=0) do
            begin
              klavisha;
              solder;
              delay(skor*30);
            end;
          if win = 1
            then
              inc(level);
          if dead = 1
            then
              begin
                dec(soldat);
                if soldat = 0
                  then
                    b:=false;
                textcolor(red);
                gotoxy(13,12);
                write('Солдат взорвался');
                delay(1500)
              end;
          if key = #0
            then
              key:=readkey
        end;
      clrscr
    end;
{---------------------------------------------------------------------}
BEGIN
  textmode(1);
  cursoroff;
  stop:=false;
  startskor:=50;
  while not stop do
    begin
      textcolor(11);
      gotoxy(7,2);
      writeln('Программа студента гр. ПА-97');
      gotoxy(13,4);
      writeln('Шарова Евгения');
      gotoxy(10,23);
      writeln('All rights reserved.');
      textcolor(14);
      gotoxy(13,6);
      writeln('Бегущий человек');
      textcolor(15);
      gotoxy(10,11);
      write('Игра.................1');
      gotoxy(10,12);
      write('О программе..........2');
      gotoxy(10,13);
      write('Настройка............3');
      gotoxy(10,14);
      write('Выход в ДОС..........4');
      key:=readkey;
      case key of
        '1' : game;
        '2' : help;
        '3' : nastr;
        '4' : stop:= not stop;
        else
          begin
            Sound(160);
            Delay(17);
            NoSound
          end
      end
    end;
  textmode(3)
END.

Apache — это кросплатформаенное программное обеспечение, относящееся к классу http-серверов. Поддерживается множеством операционных систем: Windows, Linux, MacOS и т.д. Одним из ключевых факторов в вопросе использования данного web-сервера является гибкость настройки и надежность выполнения операций. Apache включает в себя множество дополнительных модулей, позволяющих работать с различными базами данных, контролировать аутентификацию пользователей и т.д.

Интересные материалы на сайте:

Автор, разработчик: Шаров Евгений   (gcmsite@yandex.ru)
(c) 2000-2020 GCM-Site - системное и веб-программирование
Цитирование материалов сайта возможно только при наличии гиперссылки