Реферат

Реферат Создание игры

Работа добавлена на сайт bukvasha.net: 2015-10-28

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 11.11.2024



Министерство образования РФ.

ИжГТУ.

Кафедра Радиотехники.

Курсовая работа


по информатике.

Тема: ”Создание игры”.
                                                                Проверил:          

Старший преподаватель

Сидорина В.А.
                                                                  Выполнил:

Студент гр.2-29-1

Скворцов Я.А.
Ижевск.2003.
                                                    Содержание                                              Стр.
Введение--------------------------------------------------------------------------------3

1 Постановка задачи------------------------------------------------------------------4

2 Алгоритмы и блок-схемы---------------------------------------------------------5

3 Программа на языке Pascal с комментариями--------------------------------6

4 Руководство пользователя для работы в программе-----------------------16

Заключение----------------------------------------------------------------------------17

Список использованной литературы---------------------------------------------18
ВВЕДЕНИЕ:
Основной целью данного курсового проекта является закрепление и демонстрация знаний, полученных при изучении курса информатики.

Выполнение работы требует творческого подхода и применения дополнительных знаний из области графики. Курсовой проект не предполагает дальнейшего коммерческого использования данного программного продукта.
1 Постановка задачи.

Требуется создать игру, основным смыслом которой является то, что в одной части экрана перемещаются объект-(объекты) одного типа(«Самолёты»), а в другой части экрана находится объект другого типа(«Средство противовоздушной обороны»), и «Средство ПВО» должно сбивать «Самолёты».

а) Выбор, обоснование и изложение метода решения задачи.

Я предпочёл использование динамической памяти, прорисовку текстур в отдельной процедуре и звуковое сопровождение.

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

Прорисовка текстур в отдельной процедуре удобна тем, что при желании имеется возможность прорисовать движущийся объект не вникая в особенности программы.

Звуковое сопровождение через системный динамик предрасполагает пользователя к получению приятных ощущений при использовании программы.

б) Построение алгоритма задачи.

Программа  начинается с меню, если же выбор пал на меню «Программа» то сначала в динамическую память заносятся «чистые» квадраты экрана, затем последовательно на экран выводятся изображения динамических объектов и последовательно же заносятся в динамическую память. «Чистые» квадраты при этом накладываются на зарисованную  область экрана, чтобы при сканировании последующих изображений не возникало конфузов.

Далее в зависимости от нажатых клавиш динамические объекты двигаются так или иначе.

в) Создание и отладка программы.

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

г) Оформление пояснительной записки и защита курсового проекта.
2 Блок-схема.



3 Программа на языке
Pascal
c комментариями.

program jim;

uses crt,graph;

label 1,3;

var a:char;

    b:integer;

    procedure beep;{Выдача звука}

    begin

    sound(300);delay(6000);nosound;delay(700);

    end;

     procedure zemlya;{прорисовка нижней части экрана}

     begin

     setcolor(3);

     line(0,55,640,55);

     line(0,479,0,430);

     line(0,430,639,430);

     line(639,430,639,479);

     line(639,479,0,479);

     setfillstyle(7,5);

     floodfill(10,470,3);

     end;

  procedure PVO;{Прорисовка средства ПВО}

    begin

        setcolor(6);

        line(5,37,45,37);line(45,37,47,39);

        line(47,40,37,50);line(37,50,7,50);

        line(7,50,3,39);line(3,38,5,37);

        circle(15,43,6);circle(30,43,6);

        circle(6,39,2);circle(44,39,2);

        setfillstyle(1,6);

        floodfill(41,43,6);floodfill(22,49,6);

        floodfill(7,43,6);floodfill(10,39,6);

        setcolor(2);

        line(3,39,3,34);line(3,34,20,34);

        line(21,34,21,23);line(21,23,33,23);

        line(33,23,47,36);line(47,36,47,36);

        line(47,36,3,36);

        line(36,26,29,26);line(29,27,30,30);

        line(31,31,42,31);

        setfillstyle(1,2);floodfill(26,32,2);

        setcolor(9);

        line(8,33,8,23);line(9,24,9,13);

        line(9,13,11,12);line(11,12,11,9);line(11,12,13,13);

        line(13,13,13,24);line(14,23,14,33);

        line(8,28,3,33);line(3,33,19,33);

        line(19,33,14,28);

        setfillstyle(1,9);floodfill(11,28,9);

        line(21,24,24,24); line(21,25,24,25);

        setcolor(4);line(21,26,25,26);line(21,27,25,27);

        setcolor(15);line(21,28,26,28);line(21,29,26,29);
    end;

  procedure NLO; {прорисовка летающей тарелки}

    var l:integer;

    begin randomize;l:=random(256);

        setcolor(l);

        line(9,8,7,8);line(7,9,5,9);

        line(5,10,3,10);line(3,11,1,11);

        line(1,11,1,13);line(2,14,4,14);

        line(3,15,5,15); line(5,16,8,16);

        line(7,17,10,17);line(10,18,16,18);

        line(16,19,35,19);line(35,18,41,18);

        line(41,17,44,17);line(44,16,46,16);

        line(46,15,48,15);line(48,14,49,14);

        line(49,14,49,11);line(49,11,48,11);

        line(48,10,46,10);line(46,9,44,9);

        line(44,8,41,8);line(41,7,41,9);

        line(41,9,40,9);line(40,10,37,10);

        line(37,11,33,11);line(33,12,17,12);

        line(17,11,13,11);line(13,10,10,10);

        line(10,9,9,8);

        setfillstyle(1,l);floodfill(24,15,l);

        putpixel(31,16,0);putpixel(42,12,0);

        putpixel(18,16,0);putpixel(7,13,0);

        setcolor(11);

        line(18,11,32,11);line(32,10,36,10);

        line(36,9,39,9);line(40,8,40,5);

        line(39,4,36,4);line(36,3,32,3);

        line(32,2,18,2);line(18,3,14,3);

        line(14,4,11,4);line(10,5,10,8);

        line(11,9,14,9);line(14,10,18,10);

        setfillstyle(1,11);floodfill(25,7,11);

     end;

  procedure pulka;{Прорисовка снаряда}

        begin

        setcolor(5);

        line(2,6,2,3);line(3,6,3,0);line(4,6,4,3);

        setcolor(13);

        line(3,8,3,7);

        setcolor(14);

        line(1,5,1,7);line(2,7,2,9);

        putpixel(3,9,14);line(4,7,4,9);line(5,5,5,7);

        end;

    procedure gameover(b,v:integer);{предписания при выигрыше одной

      var u,o:integer;                                      из сторон}

          i:^integer;

          siz:word;

     begin

      siz:=imagesize(0,100,1,100);

      getmem(i,siz);

      getimage(0,100,1,100,i^);

      if v>500 then begin

      outtextxy(300,240,'Y');beep;

      outtextxy(308,240,'o');beep;

      outtextxy(316,240,'u');beep;

      outtextxy(324,240,'_');beep;

      outtextxy(332,240,'W');beep;

      outtextxy(340,240,'I');beep;

      outtextxy(348,240,'N');beep;

                    end;

      if b>500 then begin

                       outtextxy(300,240,'G');beep;

                       outtextxy(308,240,'a');beep;

                       outtextxy(316,240,'m');beep;

                       outtextxy(324,240,'e');beep;

                       outtextxy(332,240,'_');beep;

                       outtextxy(340,240,'O');beep;

                       outtextxy(348,240,'v');beep;

                       outtextxy(356,240,'e');beep;

                       outtextxy(364,240,'r');beep;

                       delay(45000);outtextxy(330,260,':');beep;

                                    outtextxy(338,260,'-');beep;

                                    outtextxy(346,260,'>');beep;

                    end;

      delay(64500);delay(64500);

      delay(64500);

      for u:=0 to 640 do

      for o:=0 to 480 do begin

                           putimage(u,o,i^,copyput);

                         end;

     end;

  procedure jim; {Непосредственно игра}

  label 2,3;

  var i,j,x,y,m,n,v,b:integer;

      key:boolean;

      s,ss,s1,s2,s3:word;p,pp,p1,p2,p3:pointer;{рр-пустой квадрат;р-ПВО...;р1-пулька}

  begin i:=9;j:=2;initgraph(i,j,'');

3:      ss:=imagesize(0,430,50,480);a:='y';

        getmem(pp,ss);

        getimage(0,430,50,480,pp^);

        s:=imagesize(0,0,50,50);

        getmem(p,s);

        PVO;

        getimage(0,0,50,50,p^);

        putimage(0,0,pp^,copyput);

        s1:=imagesize(0,0,5,10);

        getmem(p1,s1);

        pulka;

        getimage(0,0,5,10,p1^);

        putimage(0,0,pp^,copyput);

        s2:=imagesize(0,0,5,10);{р2-маленький квадратик пульки}

        getmem(p2,s2);

        getimage(0,0,5,10,p2^);

        s3:=imagesize(0,0,50,20);

        getmem(p3,s3);

        NLO;

        getimage(0,0,50,20,p3^);  putimage(0,0,pp^,copyput);

        zemlya;

        x:=200;y:=379;putimage(x,y,p^,copyput);

        v:=0;b:=0;delay(45000);delay(45000);

      repeat        {Начало самого процесса игры}

              for n:=1 to 1770 do begin

              putimage(round(n/3),60,p3^,copyput);

              if n>1760 then begin

                               putimage(round(n/3),60,pp^,copyput);

                               sound(300);delay(100);nosound;

                             end;

              key:=keypressed;

              if key=false then goto 2;

              a:=readkey;
                  if a=chr(77) then begin

                                     x:=x+3;

                                     if x>580 then begin

                                                    putimage(x,y,pp^,copyput);

                                                    x:=10;

                                                   end;

                                     putimage(x,y,p^,copyput);
                                     end;

                  if a=chr(75) then begin

                                     x:=x-3;

                                     if x<10 then begin

                                                     putimage(x,y,pp^,copyput);

                                                     x:=580;

                                                  end;

                                     putimage(x,y,p^,copyput);

                                    end;
                  if a=chr(32) then begin for m:=y-2 downto 56 do begin
                                                        putimage(x+8,m,p1^,copyput);

                                                        delay(5);

                                                                  end;

                                                        if m<90 then

                                                        if round(n/3)>(x-50) then

                                                        if round(n/3)<(x+10) then begin

                                                        sound(800);delay(2000);

                                                        nosound;putimage(round(n/3),60,pp^,copyput);

                                                        putimage(v,10,p1^,copyput);n:=1;

                                                        v:=v+15;if v>500 then begin gameover(b,v);goto 3;end;end;
                                         putimage(x+8,56,p2^,copyput);

                                    end;

2:                                 end;putimage(b,24,p3^,copyput);b:=b+50;

                                   if b>500 then begin gameover(b,v);goto 3;end;
                            if a=chr(113) then begin

                                  v:=550;gameover(b,v);goto 3;

                                     end;

      until a=chr(27);

  end;

begin{Основная программа}

1:   clrscr;

     gotoxy(30,10);

     write('Введение');

     gotoxy(30,11);

     write('Постановка задачи');

     gotoxy(30,12);

     write('Математические методы...');

     gotoxy(30,13);

     write('Описание данных');

     gotoxy(30,14);

     write('Алгоритмы и блок-схемы');

     gotoxy(30,15);

     write('ПРОГРАММА');

     gotoxy(30,16);

     write('Текстовые примеры');

     gotoxy(30,17);

     write('Руководство пользователю');

     gotoxy(30,18);

     write('Заключение');

     gotoxy(30,19);

     write('Список литературы');{Это всё менюшка}

     gotoxy(26,10);

     write('>>>');

     gotoxy(25,10);

     repeat

           a:=readkey;

           if a=chr(80) then begin{движение курсора вниз}

                                   b:=wherey;

                                   gotoxy(26,b);

                                   write('   ');

                                   if b>=19 then b:=9;

                                   gotoxy(26,b+1);

                                   write('>>>');

                                   gotoxy(25,b+1);

                                   sound(3000);

                                   delay(1000);

                                   nosound;

                              end;

           if a=chr(72) then begin{движение курсора вверх}

                                   b:=wherey;

                                   gotoxy(26,b);

                                   write('   ');

                                   if b<=10 then b:=20;

                                   gotoxy(26,b-1);

                                   write('>>>');

                                   gotoxy(25,b-1);

                                   sound(4000);

                                   delay(1000);

                                   nosound;

                              end;

           if a=chr(13) then begin {Опрос клавиши ENTER}

                              b:=wherey;

                              if b=19 then begin  {Список литературы}

                                           sound(3000);

                                           delay(1000);

                                           nosound;

                                           clrscr;

                                           gotoxy(30,b);

                                           write('Книжка по Турбо-Паскалю');

                                           repeat

                                                 a:=readkey;

                                           until a=chr(13);

                                           sound(4000);

                                           delay(1000);

                                           nosound;

                                           goto 1;

                                           end;

                              if b=10 then begin {Введение}

                                           sound(3000);

                                           delay(1000);

                                           nosound;

                                           clrscr;

                                           gotoxy(30,b);

                               writeln('Основной целью данного курсового проекта');

                                           gotoxy(30,b+1);

                                writeln('является закрепление и демонстрация знаний,');

                                           gotoxy(30,b+2);

                                writeln('полученых при изучении курса информатики');

                                           repeat

                                                 a:=readkey;

                                           until a=chr(13);

                                           sound(4000);

                                           delay(1000);

                                           nosound;

                                           goto 1;

                                           end;

                              if b=11 then begin  {Постановка задачи}

                                           sound(3000);

                                           delay(1000);

                                           nosound;

                                           clrscr;

                                           gotoxy(30,b);

                                           write('Сделать игру: леталку-стрелялку');

                                           repeat

                                                 a:=readkey;

                                           until a=chr(13);

                                           sound(4000);

                                           delay(1000);

                                           nosound;

                                           goto 1;

                                           end;

                              if b=18 then begin  {Заключение}

                                           sound(3000);

                                           delay(1000);

                                           nosound;

                                           clrscr;

                                           gotoxy(30,b);

                                           write('Мне понравилась моя прога   :-)');

                                           repeat

                                                 a:=readkey;

                                           until a=chr(13);

                                           sound(4000);

                                           delay(1000);

                                           nosound;

                                           goto 1;

                                           end;

                              if b=17 then begin  {руководство пользователю}

                                           sound(3000);

                                           delay(1000);

                                           nosound;

                                           clrscr;

                                           gotoxy(30,b);

                                        write('Если Вы в этой проге ничего не поменяете');

                                           gotoxy(30,b+1);

                                           write('она будет работать ВЕЧНО...');

                                           repeat

                                                 a:=readkey;

                                           until a=chr(13);

                                           sound(4000);

                                           delay(1000);

                                           nosound;

                                           goto 1;

                                           end;

                               if b=12 then begin  {математические методы}

                                           sound(3000);

                                           delay(1000);

                                           nosound;

                                           clrscr;

                                           gotoxy(30,b);

                                           write('Задача сама по себе не математическая,');

                                           gotoxy(30,b+1);

                                 write('значит и математических методов никаких нет');

                                           repeat

                                                 a:=readkey;

                                           until a=chr(13);

                                           sound(4000);

                                           delay(1000);

                                           nosound;

                                           goto 1;

                                           end;

                                if b=13 then begin  {Описание данных}

                                           sound(3000);

                                           delay(1000);

                                           nosound;

                                           clrscr;

                                           gotoxy(30,b);

                                           write('Данных нет...');

                                           repeat

                                                 a:=readkey;

                                           until a=chr(13);

                                           sound(4000);

                                           delay(1000);

                                           nosound;

                                           goto 1;

                                           end;

                                 if b=14 then begin  {Алгоритм.блок-схема}

                                           sound(3000);

                                           delay(1000);

                                           nosound;

                                           clrscr;

                                           gotoxy(30,b);

                                           write('Смотри Пояснителную записку');

                                           repeat

                                                 a:=readkey;

                                           until a=chr(13);

                                           sound(4000);

                                           delay(1000);

                                           nosound;

                                           goto 1;

                                           end;

                                  if b=16 then begin  {Текстовые примеры}

                                           sound(3000);

                                           delay(1000);

                                           nosound;

                                           clrscr;

                                           gotoxy(30,b);

                                           write('Текстовых примеров у меня тоже нет');

                                           repeat

                                                 a:=readkey;

                                           until a=chr(13);

                                           sound(4000);

                                           delay(1000);

                                           nosound;

                                           goto 1;

                                           end;

                                  if b=15 then begin

                                           sound(3000);

                                           delay(1000);

                                           nosound;

                                           jim;

                                           closegraph;

                                           goto 1;

                                           end;

                              end;

     until a=chr(27);

end.


4 Руководство пользователя для работы в программе.

При запуске программы появляется меню, предлагающее широкий выбор пунктов.

Курсор перемещается при помощи клавиш курсора, выбор осуществляется клавишей ENTER .

При выборе какого-либо пункта меню появляется соответствующее сообщение, однако же, при выборе пункта «Программа» запускается непосредственно сама игра.

Суть игры заключается в сбивании летающих тарелок средством ПВО.

Средство ПВО может с помощью курсора перемещаться по экрану в горизонтальном направлении. При нажатии клавиши «пробел» средство ПВО совершает выстрел. Если снаряд попадает в летающую тарелку, то она считается сбитой и зачисляется в фонд игрока, что символизируется появлением значка снаряда в верхнем правом углу. Если же выпущенные снаряды не достигают цели и летающая тарелка долетает до правого края экрана, то это отмечается также в правом верхнем углу появлением значка летающей тарелки.

Игрок проигрывает в случае достижения числа не сбитых тарелок правого края экрана.

Игрок выигрывает в случае достижения числа сбитых тарелок правого края экрана.

После проигрыша либо выигрыша игра повторяется.


Заключение.

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

Длителен также процесс детальной прорисовки графики.

Необходимо, чтобы в той папке, где лежит данная программа, находился файл egavga.bgi . Этот файл имеется во многих версиях ТР в папке bin, он отвечает за инициализацию графики.


Список использованной литературы.
1 Меженный О.А. «Turbo Pascal-учитесь программировать»;Москва-С.Петербург-Киев; «Диалектика»;2001;448с.

2 Бабушкин И.А.; «Практикум по ТР»-учебное пособие по курсам ИВТ; Москва, 1998.

3 http://www.freepascal.org;

4 http://www.geocities.com/~franzglaser/tp.htm;

5 http://www.garbo.uwasa.fi/pc/turboobj.html;


1. Реферат на тему Как дело Бейлиса превратилось в дело Шульгина
2. Реферат на тему American Language Essay Research Paper In the
3. Реферат на тему Foreign Affairs Of America Essay Research Paper
4. Реферат на тему Business associations
5. Задача Центр скоростей и ускорение плоскодвижущегося шатуна
6. Реферат Гавро, Лайош
7. Реферат Гуманитарное право
8. Реферат Бюджетирование как средство координации деятельности всех структурных подразделений органи
9. Курсовая на тему Психолого-педагогические основы использования индивидуально-дифференцированного подхода в обучении
10. Реферат Общественно-политическое развитие России после Второй мировой войны