Реферат по предмету "Программирование, Базы данных"


Разработка игровой программы на языке программирования Turbo Pascal

МАГНИТОГОРСКИЙГОСУДАРСТВЕННЫЙ  УНИВЕРСИТЕТ
КАФЕДРА ИНФОРМАТИКИ

Курсовая работа поинформатике
 
                                                               
                                                           Выполнили: студентка  2 курса         
                                                                           Гойтина Ю.В.
     Руководитель:  ст. преподаватель                                                                                   Гусева Е. Н.       


СОДЕРЖАНИЕ
ВВЕДЕНИЕ……………………………………………………………3
1.    
ИГРЫ «SIEGE»………..……………….……………………………… 5
2.    
«SIEGE»……….……………………………………………………… 9
3.    
3.1 Описание назначения  модулей……..……………………...11
ЗАКЛЮЧЕНИЕ…………………..…………………………………. 13
СПИСОК ЛИТЕРАТУРЫ…………………………………………. 14
ПРИЛОЖЕНИЕ……………………………………………………… 15












ВВЕДЕНИЕ
Большинство пользователей, как опытных, так и начинающих, небез удовольствия играют в компьютерные игры. Компьютерные игры сравнительномолодое явление, обладающие достаточно богатой со своими падениями и взлетами.Их история началась не с конца 1970 годов. Начало лежит гораздо раньше. Насамом деле все начиналось с модели железной дороги, на основе которой появились предпосылки для дальнейшегоразвития первых компьютерных игр.
Игры дают нам шанс расслабиться играя, сбросить стресс. Чтоони делают лучше всего, так это создают альтернативные реальности, в которыеможно погрузиться. Иногда эти реальности пытаются повторить наш реальный мир. Ииногда они могут перенести нас в полностью враждебный или фантастический мир.От управления реактивным истребителем до управления командой НациональнойФутбольной лиги, от сражения с драконами до создания новых миров, постройкидорог, исследование космоса, до всего, что может изобрести наше воображение.
Указать точное число компьютерных игр очень трудно. Можнотолько примерно оценить число различных наименований игр, находящихся на рынкев любое время.
Компьютерная игра – один из наиболее популярных видовпрограммного обеспечения, давший начало целому направлению – игровойинформатике. Несмотря на многообразие подобных программ, все игры могут бытьразделены на следующие виды:
1.    Обучающие
2.    Развивающие
3.    Деловые
4.    Развлекательные
5.    Комбинированные
Целью нашей курсовой работыявляется изучение основных положений теории игр, а также разработка игровойпрограммы  на языке программированияTurbo Pascal.
Проектирование игрового продукта состоит из несколькихэтапов:
1.    Определениякласса игры. На данном этапе необходимо сформулировать правила игры.
2.    Выделениекомпонентов игры.
3.    Определениеиерархического уровня игры:
А) оперативный
Б) тактический
В) стратегический
4.    Разработкадизайна игры.
5.     Разработка интерфейса игры.
Чтобы достигнуть поставленной цели необходимо решить задачи,связанные  психологической областью(использование палитры, образы на экране) и областями теории игр, а такжезадачи, связанные с областью программирования (изучение графическихвозможностей Turbo Pascal).       








1.РАЗРАБОТКА ИГРОВОЙ ПРОГРАММЫ НАПРИМЕРЕ  ИГРЫ «SIEGE»
      Для того чтобы разработать игровуюпрограмму необходимо определить цели и задачи, которые будут сопровождать нас впроцессе  ее создания.
   Создание компьютерной игры – это не только работа программистов, но и творческих деятелей, так как приразработке игровой программы необходимо уделять большое внимание дизайну игры.Будут ли играть в игру, во многом зависит от ее дизайна. Поэтому желательноиспользовать все свое воображение и фантазию.
     Вообще, под  и г р о й  понимается такой вид деятельности, который характеризуетсявзаимодействием игроков, действия которых ограничены правилами и направлены надостижение цели.
  Под  иг р о к о м  понимается человек илигруппа людей. Особенностью компьютерных игр является то, что в качестве одногоиз игроков выступает компьютер.
   В каждой игре обязательно существуют свои определенные  правила.
  П р а в и л о – предписание, устанавливающеепорядок действий играющих.
     Внашей игре также существуют свои правила – используя клавиши управлениякурсором играющий может последовательно передвигать героя на протяжении всейстены. Он должен сбрасывать камни на своих врагов, находясь именно над темиврагами, на которые нужно сбросить камень.Чтобы перейти на слудующий уровеньему нужно уничтожить определенное количество врагов. При этом ни один из враговне должен добраться до верха стены, в противном случае игра будет закончена.
В теории игр существуют 2широких класса компьютерных игр:
1.    игры с преобладанием роли;
2.    игры с преобладанием правил;
Игры с преобладанием ролиможно разделить на следующие подклассы:
ü сюжетно-ролевые; 
ü деловые;
ü организационно-деятельностные;
ü имитационные;
Игры с преобладанием правилможно разделить на:
ü дидактические;
ü развивающие;
ü  спортивные;
ü  военные;
ü  азартные;
      Игра «Siege» относится к играм, в которыхпреобладают правила. В данной игре не предусматривается то, что играющий можетизменять и вводить свои правила на всем ее протяжении. Во время игры играющемунеобходимо принимать  решения: в какомнаправлении нужно двигать героя вдоль стены и останавливать его в определенномместе для сбрасывания камней.
Можно выделить следующиесоставляющие при разработке компьютерной игры:  
üцель
üигровуюсреду
ü взаимодействие с играющим
ü оценку игровой ситуации
     Целью является прохождение всех уровней игры, а средством – выбор правильныхдействий для  достижения нужногорезультата.
   В нашей игре под этим подразумевается принятие правильного хода игроком в быстро меняющейся ситуации.

И г р о в а я   с р е д а – совокупность связей объектов вигре и правил их изменения.
   В игре «Siege» в качестве игровой среды выступает стена с героем иврагами. Во время игры герой уничтожает врагов, сбрасывая на них камни. Когдагерой уничтожает врагов, он попадает на уровень выше. Если герой не успеетсбросить камень на какого — либо  врагалибо  пройдет все уровни, игразаканчивается.  По мере прохождениякаждого уровня игры увеличивается скорость и количество врагов.
В з а и м о д е й с т в и е   с   иг р а ю щ и м  – совокупность средств,предоставляемых для изменения игровой среды.
      В нашей игре при помощи клавиш управлениякурсором  можно изменить напрвление  движения героя, движущегося вдоль стены. Должнаучитываться быстрота реакции на  быстродвижущихся и появляющихся в разных местах врагов.
 О ц е н к а  и г р о в о й    с и т у а ц ии  — соотношения и условия, которыеопределяют цель поведения играющего.
В игре «Siege» начальное положениегероя – середина верхней части стены. Задачей игрока является то, что он,должен уничтожить всех врагов. Находясь в разных положениях, он  должен передвигаться  именно в то место, где находится враг исбрасывать на него камень.
      Этап создания компьютерной программыначинается только после выбора  сюжета,  способов взаимодействия сиграющим и системы критериев оценки поведения играюще­го, описания игровойсреды. Игровая программа состоит из двух частей: первая реализует внутреннюю,логическую структуру компьютерной игры, т. е. отображает игру в системемашинных дан­ных и алгоритмов, вторая — отображает процесс игры на терминале.
    Основную роль любой компьютерной игрысоставляет логическая структура, в которой выделяют три уровня – оперативный,тактический и стратегический.
     Под   о п е р а т и в н ы м     у р о вн е м      понимают совокупность действийвнутри программы между двумя последовательными действиями играющего.Результатом действия оперативного уровня является отображение всех перемещенийи изменений на экране дисплея.
   Т а к т и ч е с к и й       у р о в е н ь    определяется как совокупность игровыхдействий, ведущих к достижению какой-либо локальной цели. В результатедействия  тактического плана играющийдостигает улучшения (или ухудшения) положения в игре.
     С т р а т е г и че с к и й      у р о в е н ь       предполагает планирование всей игры,которая должна  строиться так, чтобыдостичь цели и добиться выигрыша.
    В игре «Siege» можно выделить все триуровня, но преобладает тактический, так как от играющего требуется приниматьрешения, куда переместить героя в быстроменяющейся ситуации.
 
    Так же при разработке компьютерных игр,должно уделяться большое внимание на проектирование интерфейса между человекоми компьютером.
      Среди множества вариантов интерфейсачеловек-компьютер есть два принципиально отличных вида:
1.    «вспоминай-и-набирай» — это язык команд, которыесначала надо вспомнить, потом набрать и выполнить;
2.    «смотри-и-выбирай» — это язык всевозможных меню ипиктограмм, в котором следует выбрать необходимое, после чего произойдетсоответствующее действие.
        Мы в нашей курсовой работе использоваливторой вид интерфейса человек-компьютер для разработки меню игры.  
  В  игре«Siege»  мы использовали стандартныесредства для работы с графическими изображениями языка программирования ТурбоПаскаль. Диалог между компьютером и играющим осуществляется как в  меню, так и во время  самой игры.


 

2. СПЕЦИФИКАЦИЯ ИГРОВОЙ ПРОГРАММЫ«SIEGE»

1.    Названиезадачи
Компьютерная игра.
Название программы – «Siege».
Система программирования TurboPascal.
2.    Описание
Игра начинается с заставки, гденаписано название игры. Затем следует главное меню, где пользователь можетвыбрать один из трех пунктов меню: «Play the game», «Instruction», «Story»,«Exit to DOS». Если пользователь выбирает первый пункт меню, то послепредисловия  он может начать игру. Еслион выбирает – второй, то можно ознакомиться с инструкцией.  Если он выберет третий пункт, то он можетпрочитать предысторию. Иначе пользователь может выйти из игры.  Игрок должен успеть сбрасывать камни на своихврагов, пока они не добрались до верха стены. При неудачном окончании игры,если враг достиг героя, игра заканчивается и выдается сообщение — «Game Over».При выигрыше, если пользователь прошел десять уровней, то он может выйти изигры. 
3. Управление режимами работы программы
Игра осуществляется с помощью меню.
4. Входные данные
Входными данными являются действия играющего во время игры,то есть информация о нажатии клавиш управления курсором для управления героем идля выбора пункта меню, клавиши Esc для выхода из игры, клавиши Enter длявыбора пункта меню, клавиши  Space длясброса камней.
5. Выходные данные
Сообщение о победе после каждого пройденного уровня «Levelcomplete», о проигрыше  «Game over», либосообщения, сопровождающие успешные или неуспешные действия игрока «Looser» — неудача, «2 hit combo» — при уничтожение сразу двух врагов, «Ough! 4 mans atonce» — при уничтожении сразу четырех врагов, «Aaaaaaaaamazing!!!» -приуничтожении более четырех врагов.

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











3. СТРУКТУРНАЯ ДИАГРАММА


Siege

                                                                     
SiegeLogo
VGASpr
VGA13H
Buttons LogoScreen
Refrace
SiegeSpr







3.1 Описание назначения модулей.
S i e g e – основная программа, вызывающая на выполнениепрограммные модули.
Модуль S i e g e S p r - модуль, содержащий игровые объекты (картинки).
Модуль V G A S p r – модуль для рисования спрайтов.
Модуль L o g o s c r e e n –заставка курсовой работы.
Модуль S i e g e L o g o – модуль, содержащий меню,инструкцию, предысторию.
Модуль B u t t o n s – модуль, позволяющий осуществлять нажатие и отпускание клавиши,информацию о состоянии клавиш в реальном времени и об отпущенных клавишах.
Модуль R e t r a c e – модуль, позволяющий осуществлять синхронизацию вывода в видеопамять.
Модуль V G A 1 3 H — модуль для работы с графикой.





















ЗАКЛЮЧЕНИЕ
         Таким образом, представляемая  компьютерная игра относится к классукомбинаторных игр, поскольку может быть использована как в качестве развивающейвнимание, реакцию,  психомоторные навыки(способности) игры, так и для приятного времяпрепровождения и отдыха. Присоздании компьютерной игры мы старались сделать её по возможности красочнее,интереснее и увлекательнее.
   Мы бы порекомендовали эту игру для детей школьного возраста, однако, показав ее врозлым, она заинтересовала и их. Поэтому нам кажется, что она  вполне пригодна и для более взрослой аудитории.











СПИСОК ИСПОЛЬЗУЕМОЙ  ЛИТЕРАТУРЫ
1.     Игнатьева  А.И. Компьютерные игры. (с. 3-10, 31-35) М.1988.
2.     Домашний компьютер — №4(с.62-68),1999
3.     Домашний компьютер — №12(с.78-88),1999
4.     Инфо–№2: Компьютерные игры вобучение (с.61-65) /Под ред. Марнуми Е., Когов Ю. 1990.
5.     Лукашенко М.А. «Информатика виграх и задачах» (с.1-5) //Нач.шк. /Приложение к газете «1 сентября» — 1994,№44
6.      Инфо-№4: Компьютерная игра: учим или играем(64-67) /Под ред.
Марусева И.В. 1997.
7. Коубс Р. и Влейминк И. Интерфейс (36-40) 1991.
8. Ла Мот А. Секреты программирования игр (7-10) 1995.
9. Фридланд А.Я. Информатика. Толковый словарь основныхтерминов. (57-62) М. 1998.
10. 350 игр для IBM PC, Дж. Дворак, «Пергамент» -                      Санкт -Петербург, 1994 .
11. Turbo Pascal 7. 0, Фаронов В.В. /Изд. «Нолидж», 1999.






ПРИЛОЖЕНИЕ:
Program Siege;
UsesLogoScreen,
     DOS, VGA13h, VGASpr, Retrace, Buttons,
     SiegeLogo, SiegeS
pr;
Type
    EnemyType = record
      X,Y,D,S,A:Integer;
      Falling:Boolean;
      Free:Boolean;
    end;
Const
     MaxEnemies = 50;
     ComboStr:Array [0..5] of String[20] =
     ('Looser!!!',
      '',
      '2 hit combo',
      'Eat this!',
      'Ough! 4 mans at once',
      'Aaaaaaaaamazing!!!');
Var
   ManX,StoneY,StoneX,EnemyDelay,EnemyLimit:Integer;
   Enemies:Array [1..MaxEnemies] of EnemyType;
   Score,Level,Kills,Combo:Word;
   Timer:Longint;
   GameOver:Boolean;
{==================================================================}
Const
     ca:Word       = 0;
     cc:String[20] = '';
ProcedureComboString(s:String);
begin
   if s'' then
   begin
     cc:=s;
     ca:=10;
   end;
   if ca>0 then
   begin
     DrawString(Base2,160-Byte(cc[0])*4,90,cc);
     Dec(ca);
   end;
end;
ProcedureNextLevel; forward;
{==================================================================}
ProcedureInitEnemies;
Var
   i:Byte;
begin
   for i:=1 to MaxEnemies doEnemies[i].Free:=true;
end;
ProcedureDrawEnemies;
Var
   i:Byte;
begin
   for i:=1 to MaxEnemies do
   With Enemies[i] do if not Free then
    DrawTSpr(Base2,X,Y,EnemyHgt,EnemyWdt,@EnemySpr[A]);
end;
ProcedureMoveEnemies;
Var
   i:Byte;
begin
   for i:=1 to MaxEnemies do
   With Enemies[i] do
   if not Free then
   begin
     if Falling then
     begin
       Y:=Y+10;
       if Y>199 then
       begin
         Free:=true;
         if Kills=(Level+1)*20 then NextLevel;
       end;
       if D=0 then
       begin
         Inc(A);
         if A>2 then A:=1;
         D:=2;
       end else Dec(D);
     end else
       if D=0 then
       begin
        Y:=Y-5;
         if Y
         Inc(A);
         if A>2 then A:=1;
         D:=S;
       end else Dec(D);
   end else
   if (EnemyLimit>0) and (EnemyDelay=0) then
   begin
     X:=Random(38)*8;
     Y:=200;
     D:=0;
     S:=(10-Level);
     A:=1;
     EnemyDelay:=(13-Level)*2+1;
     Falling:=false;
     Free:=false;
     Dec(EnemyLimit);
   end;
   Dec(EnemyDelay);
end;
{==================================================================}
ProcedureDrawScreen;
Var
   x,y:Integer;
   s:String[80];
   tmp:String[6];
begin
   Bar(Base2,0,0,319,9,8);
   FillBase(Base2,3200,9600,$03030303);
   for y:=0 to 15 do
     for x:=0 to 31 do
      DrawOSpr(Base2,x*10,40+y*10,BrickHgt,BrickWdt,@BrickSpr);
   s:='ю~SIEGE~  ю  Level:';
   Str(Level,tmp);
   While Byte(tmp[0])
   s:=s+tmp+' ю  Score:';
   Str(Score,tmp);
   While Byte(tmp[0])
   s:=s+tmp+' ю';
   DrawString(Base2,1,1,s);
end;
{==================================================================}
ProcedureDrawMan;
begin
   if StoneY=0 then
   begin
    DrawTSpr(Base2,ManX*8,20,ManHgt,ManWdt,@ManSpr[2]);
    DrawTSpr(Base2,ManX*8+4,17,StoneHgt,StoneWdt,@StoneSpr);
   end else
   begin
    DrawTSpr(Base2,ManX*8,20,ManHgt,ManWdt,@ManSpr[1]);
    DrawTSpr(Base2,StoneX,StoneY,StoneHgt,StoneWdt,@StoneSpr);
     Inc(StoneY,10);
     if StoneY>199 then
     begin
       StoneY:=0;
       if Combo
       Combo:=0;
     end;
   end;
end;
{==================================================================}
ProcedureCheckCollisions;
Var
   i:Byte;
begin
   if StoneY>0 then
   for i:=1 to MaxEnemies do
   With Enemies[i] do
   if not Free and not Falling then
   begin
     if ((StoneX+8>X) and(StoneX
        ((StoneY+8>Y) and(StoneY
        begin
          Falling:=true;
          D:=0;
          Inc(Score);
          Inc(Kills);
          Inc(Combo);
        end;
   end;
end;
{==================================================================}
ProcedureNextLevel;
Var
   i:Byte;
begin
   Timer:=MemL[Seg0040:$006C];
   Inc(Level);
   for i:=1 to 30 do
   begin
     ClearBase(Base2);
     DrawScreen;
    DrawTSpr(Base2,ManX*8,20,ManHgt,ManWdt,@ManSpr[1+Byte(i and 1=1)]);
     DrawString(Base2,132,80,'Level'+Char($30+Level));
     WaitRetraceMode;
     CopyBase(Base2,Base1);
     While Timer=MemL[Seg0040:$006C] do;
     Timer:=MemL[Seg0040:$006C];
   end;
   EnemyLimit:=(1+Level)*20;
   EnemyDelay:=0;
   Kills:=0;
   ca:=0;
end;
ProcedureGameOverProc;
Var
   i:Byte;
begin
   ClearBase(Base2);
   DrawScreen;
   DrawString(Base2,124,80,'Game Over');
   WaitRetraceMode;
   CopyBase(Base2,Base1);
   Timer:=MemL[Seg0040:$006C];
   for i:=1 to 30 do
   begin
     While Timer=MemL[Seg0040:$006C] do;
     Timer:=MemL[Seg0040:$006C];
   end;
end;
{==================================================================}
ProcedureInit;
begin
   if not DetectVGA then
   begin
     Writeln('НеобходимVGA совместимый видеоадаптер.'#7);
     Halt(1);
   end;
   SetGraphMode;
   InitButtons;
   Randomize;
   ManX:=19;
   Timer:=MemL[Seg0040:$006C];
   EnemyLimit:=(Level+1)*20;
   GetIntVec($43, Pointer(Font));
end;
ProcedureGame;
begin
   InitEnemies;
   Level:=0;
   Score:=0;
   Kills:=0;
   Combo:=0;
   EnemyLimit:=(Level+1)*20;
   GameOver:=false;
   Repeat
     ClearBase(Base2);
     DrawScreen;
     DrawEnemies;
     DrawMan;
     ComboString('');
     MoveEnemies;
     CheckCollisions;
     if Key[keyLeft] then if ManX>0 thenDec(ManX);
     if Key[keyRight] then if ManX
     if Key[keySpace] then if StoneY=0 then
     begin
       StoneX:=(ManX*8)+4;
       StoneY:=24;
     end;
     WaitRetraceMode;
     CopyBase(Base2,Base1);
     While Timer=MemL[Seg0040:$006C] do;
     Timer:=MemL[Seg0040:$006C];
   Until Key[keyEsc] or (Level>=10) orGameOver;
   if GameOver then GameOverProc;
end;
ProcedureDone;
begin
   DoneButtons;
   SetTextMode;
   DoneVirtualPage;
end;
{==================================================================}
Var
   choice:Byte;
begin
   Init;
   Repeat
     choice:=Logo;
     Case choice of
       1:Game;
       2:Info;
       3:Story;
     end;
   Until choice=4;
   Done;
end.

UNIT Buttons;
INTERFACE
UsesDOS;
Const
     keyESC             = 1;
     keyF1              = 59;
     keyF2              = 60;
     keyF3              = 61;
     keyF4              = 62;
     keyF5              = 63;
     keyF6              = 64;
     keyF7              = 65;
     keyF8              = 66;
     keyF9              = 67;
     keyF10             = 68;
     keyF11             = 87;
     keyF12             = 88;
     keyScrollLock      = 70;
     keyTilde           = 41;
     key1               = 2;
     key2               = 3;
     key3               = 4;
     key4               = 5;
     key5               = 6;
     key6               = 7;
     key7               = 8;
     key8               = 9;
     key9               = 10;
     key0               = 11;
    keyUnderline       = 12;
     keyEquality        = 13;
     keyBackspace       = 14;
     keyTab             = 15;
     keyQ               = 16;
     keyW               = 17;
     keyE               = 18;
     keyR               = 19;
     keyT              = 20;
     keyY               = 21;
     keyU               = 22;
     keyI               = 23;
     keyO               = 24;
     keyP               = 25;
     keyIndex           = 26;


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.