МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Создание игры

    Создание игры

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

    ИжГТУ.

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

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

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

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

    Проверил:

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

    Сидорина В.А.

    Выполнил:

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

    Скворцов Я.А.

    Ижевск.2003.

    Содержание

    Стр.

    Введение-------------------------------------------------------------

    -------------------3

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

    ----------------4

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

    ------------5

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

    ------6

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

    ---16

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

    -----------------17

    Список использованной литературы-------------------------------------

    --------18

    ВВЕДЕНИЕ:

    Основной целью данного курсового проекта является закрепление и

    демонстрация знаний, полученных при изучении курса информатики.

    Выполнение работы требует творческого подхода и применения

    дополнительных знаний из области графики. Курсовой проект не

    предполагает дальнейшего коммерческого использования данного

    программного продукта.

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

    Требуется создать игру, основным смыслом которой является то, что в

    одной части экрана перемещаются объект-(объекты) одного

    типа(«Самолёты»), а в другой части экрана находится объект другого

    типа(«Средство противовоздушной обороны»), и «Средство ПВО» должно

    сбивать «Самолёты».

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

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

    отдельной процедуре и звуковое сопровождение.

    С динамической памятью в данном случае очень удобно организовать

    одновременное перемещение динамических объектов по экрану с минимальным

    мерцанием экрана.

    Прорисовка текстур в отдельной процедуре удобна тем, что при желании

    имеется возможность прорисовать движущийся объект не вникая в

    особенности программы.

    Звуковое сопровождение через системный динамик предрасполагает

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

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

    Программа начинается с меню, если же выбор пал на меню «Программа»

    то сначала в динамическую память заносятся «чистые» квадраты экрана,

    затем последовательно на экран выводятся изображения динамических

    объектов и последовательно же заносятся в динамическую память. «Чистые»

    квадраты при этом накладываются на зарисованную область экрана, чтобы

    при сканировании последующих изображений не возникало конфузов.

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

    так или иначе.

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

    Создание программы состояло из трёх этапов: создание меню, создание

    основного тела игры в виде отдельной процедуры без прорисовки текстур и

    окончательная прорисовка текстур.

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

    2 Блок-схема.

    [pic]

    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(x-50) then

    if

    round(n/3)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>>');

    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;


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.