ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Розробка ігрової програми на мові програмування Turbo Pascal
         

     

    Інформатика, програмування

    Магнітогорському державному університеті

    КАФЕДРА ІНФОРМАТИКИ

    Курсова робота з інформатики

    Виконали: студентка 2 курсу

    Гойтіна Ю.В.

    Керівник: ст. викладач

    Гусева Е. Н.

    ЗМІСТ

    ВСТУП ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3

    1. РОЗРОБКА ІГРОВИЙ ПРОГРАМИ НА ПРИКЛАДІ

    ІГРИ «SIEGE» ... ... ... .. ... ... ... ... ... .... ... ... ... ... ... ... ... ... ... ... ... .. 5

    1. СПЕЦИФІКАЦІЯ ІГРОВИЙ ПРОГРАМИ

    «SIEGE» ... ... .... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 9

    1. СТРУКТУРНА ДІАГРАМА ... .. ... ... ... ... ... ... ... ... ... ... ... 11

    3.1 Опис призначення модулів ... ... .. ... ... ... ... ... ... ... ... ... 11

    ВИСНОВОК ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ... ... .... 13

    СПИСОК ЛІТЕРАТУРИ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .... 14

    ДОДАТОК ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 15

    ВСТУП
    Більшість користувачів, як досвідчених, так і початківців, не беззадоволення грають у комп'ютерні ігри. Комп'ютерні ігри порівняномолоде явище, що володіють досить багатою зі своїми падіннями ізлетами. Їхня історія почалася не з кінця 1970 років. Початок лежить набагатораніше. Насправді все починалося з моделі залізниці, на основіякої з'явилися передумови для подальшого розвитку перших комп'ютернихігор.
    Ігри дають нам шанс розслабитися граючи, скинути стрес. Що вони роблятькраще за все, так це створюють альтернативні реальності, в які можназануритися. Іноді ці реальності намагаються повторити наш реальний світ. Ііноді вони можуть перенести нас в повністю ворожий або фантастичнийсвіт. Від управління реактивним винищувачем до керування командою
    Національної Футбольної ліги, від бою з драконами до створення новихсвітів, будівництва доріг, дослідження космосу, до всього, що може винайтинаша уява.
    Вказати точне число комп'ютерних ігор дуже важко. Можна лише приблизнооцінити кількість різних найменувань ігор, що знаходяться на ринку в будь-якийчас.
    Комп'ютерна гра - одна з найбільш популярних видів програмногозабезпечення, що дав початок цілому напряму - ігровий інформатики.
    Незважаючи на різноманіття подібних програм, всі ігри можуть бути розділеніна наступні види:
    1. Навчальні
    1. Розвиваючі
    1. Ділові
    1. Розважальні
    2. Комбіновані
    Метою нашої курсової роботи є вивчення основних положень теоріїігор, а також розробка ігрової програми на мові програмування Turbo
    Pascal.
    Проектування ігрового продукту складається з декількох етапів:
    1. Визначення класу гри. На даному етапі необхідно сформулювати правила гри.
    1. Виділення компонентів гри.
    1. Визначення ієрархічного рівня гри:
    А) оперативний
    Б) тактичний
    В) стратегічний
    1. Розробка дизайну гри.
    1. Розробка інтерфейсу гри.
    Щоб досягти поставленої мети необхідно вирішити завдання, пов'язаніпсихологічної областю (використання палітри, образи на екрані) іобластями теорії ігор, а також завдання, пов'язані з ділянкою програмування
    (вивчення графічних можливостей Turbo Pascal).

    1.РАЗРАБОТКА ІГРОВИЙ ПРОГРАМИ НА ПРИКЛАДІ ІГРИ «SIEGE»

    Для того щоб розробити ігрову програму необхідно визначитицілі і завдання, які будуть супроводжувати нас в процесі її створення.

    Створення комп'ютерної гри - це не тільки робота програмістів, але йтворчих діячів, так як при розробці ігрової програми необхідноприділяти велику увагу дизайну гри. Чи будуть грати у гру, багато в чомузалежить від її дизайну. Тому бажано використовувати всі свою уявуі фантазію.

    Взагалі, під і г р о й розуміється такий вид діяльності, якийхарактеризується взаємодією гравців, дії яких обмеженіправилами і спрямовані на досягнення мети.
    Під и г р о к о м мається на увазі людина або група людей. Особливістюкомп'ютерних ігор є те, що в якості одного з гравців виступаєкомп'ютер.

    У кожній грі обов'язково існують свої певні правила.
    П р о в и л о - припис, що встановлює порядок дій, що грають.

    У нашій грі також існують свої правила - використовуючи клавішіуправління курсором гравець може послідовно пересувати героя наПротягом всієї стіни. Він повинен скидати каміння на своїх ворогів, перебуваючисаме над тими ворогами, на які потрібно скинути камень.Чтоби перейти наслудующій рівень йому потрібно знищити певну кількість ворогів. Прицьому жоден з ворогів не повинен дістатися до верху стіни, в іншомувипадку гра буде закінчена.
    В теорії ігор є 2 широких класу комп'ютерних ігор:
    1. ігри з переважанням ролі;
    1. ігри з переважанням правил;
    Ігри з переважанням ролі можна розділити на наступні підкласи:
    V сюжетно-рольові;
    V ділові;
    V організаційно-діяльні;
    V імітаційні;
    Ігри з переважанням правил можна розділити на:
    V дидактичні;
    V розвиваючі;
    V спортивні;
    V військові;
    V азартні;

    Гра «Siege» відноситься до ігор, в яких переважають правила. Уданій грі не передбачається те, що гравець може змінювати і вводитисвої правила на всьому її протязі. Під час гри грає необхідноприймати рішення: в якому напрямку потрібно рухати героя уздовж стіни ізупиняти його в певному місці для скидання каміння.
    Можна виділити наступні складові при розробці комп'ютерної гри:
    V мета
    V ігрове середовище
    V взаємодія з граючим
    V оцінку ігрової ситуації

    Метою є проходження всіх рівнів гри, а засобом - вибірправильних дій для досягнення потрібного результату.

    У нашій грі під цим мається на увазі прийняття правильного ходугравцем у мінливої ситуації.

    І г р о в а я з р е д а - сукупність зв'язків об'єктів в грі і правил їхзміни.

    У грі «Siege» в якості ігрового середовища виступає стіна з героєм іворогами. Під час гри герой знищує ворогів, скидаючи на них каміння.
    Коли герой знищує ворогів, він потрапляє на рівень вище. Якщо герой невстигне скинути камінь на якого - або ворога або пройде всі рівні,гра закінчується. У міру проходження кожного рівня гри збільшуєтьсяшвидкість і кількість ворогів.
    У з а и м о д е й с т в и е с и г р а ю щ и м - сукупність засобів,що надаються для зміни ігрового середовища.

    У нашій грі за допомогою клавіш управління курсором можна змінитинапрямки руху героя, що рухається уздовж стіни. Повинна враховуватисяшвидкість реакції на швидко рухомих і що з'являються в різних місцяхворогів.
    О ц е н я и г р о в о й с и т у а ц і ї - співвідношення та умови,які визначають мету поведінки грає.
    У грі «Siege» початкове положення героя - середина верхній частині стіни.
    Завданням гравця є те, що він, повинен знищити всіх ворогів. Перебуваючив різних положеннях, він повинен пересуватися саме в те місце, дезнаходиться ворог і скидати на нього камінь.

    Етап створення комп'ютерної програми починається тільки після виборусюжету, способів взаємодії з граючим і системи критеріїв оцінкиповедінки граючого, опису ігрового середовища. Ігрова програма складається здвох частин: перша реалізує внутрішню, логічну структуру комп'ютерноїгри, тобто відображає гру в системі машинних даних і алгоритмів, другий
    - Відображає процес гри на терміналі.

    Основну роль будь-якої комп'ютерної гри складає логічна структура,в якій виділяють три рівні - оперативний, тактичний і стратегічний.

    Під о п е р а т и в н и м у р о в н е м розуміютьсукупність дій всередині програми між двома послідовнимидіями грає. Результатом дії оперативного рівня євідображення всіх переміщень і змін на екрані дисплея.

    Т а к т и ч е с к и й у р о в е н ь визначається яксукупність ігрових дій, що ведуть до досягнення будь-якої локальноїмети. У результаті дії тактичного плану грає досягаєполіпшення (або погіршення) положення в грі.

    С т р а т е р и ч е с к и й у р о в е н ь припускаєпланування всієї гри, яка повинна будуватися так, щоб досягти мети ідобитися виграшу.

    У грі «Siege» можна виділити всі три рівня, але переважаєтактичний, так як від грає потрібно приймати рішення, кудиперемістити героя в швидкоплинні ситуації.

    Так само при розробці комп'ютерних ігор, повинна приділятися великаувагу на проектування інтерфейсу між людиною і комп'ютером.

    Серед безлічі варіантів інтерфейсу людина-комп'ютер є двапринципово відмінних виду:
    1. «Згадуй-і-набирай» - це мова команд, які спочатку треба пригадати, потім набрати і виконати;
    1. «Дивися-і-вибирай» - це мова всіляких меню і піктограм, в якому слід вибрати необхідне, після чого відбудеться відповідна дія.

    Ми в нашій курсовій роботі використовували другий вид інтерфейсулюдина-комп'ютер для розробки меню гри.
    У грі «Siege» ми використовували стандартні засоби для роботи зграфічними зображеннями мови програмування Турбо Паскаль. Діалогміж комп'ютером і граючим здійснюється як в меню, так і під чассамої гри.

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

    1. Назва завдання
    Комп'ютерна гра.
    Назва програми - «Siege».
    Система програмування Turbo Pascal.
    1. Опис
    Гра починається з заставки, де написана назва гри. Потім слідголовне меню, де користувач може вибрати один з трьох пунктів меню:
    «Play the game», «Instruction», «Story», «Exit to DOS». Якщо користувачвибирає перший пункт меню, то після передмови він може почати гру.
    Якщо він вибирає - другий, то можна ознайомитися з інструкцією. Якщо вінвибере третій пункт, то він може прочитати передісторію. Інакше користувачможе вийти з гри. Гравець повинен встигнути скидати каміння на своїх ворогів,поки вони не дісталися до верху стіни. При невдалому закінчення гри, якщоворог досяг героя, гра закінчується і видається повідомлення - «Game Over».
    При виграші, якщо користувач пройшов десять рівнів, то він може вийти згри.
    3. Керування режимами роботи програми
    Гра здійснюється за допомогою меню.
    4. Вхідні дані
    Вхідними даними є дії що грає під час гри, тобтоінформація про натискання клавіш управління курсором для управління героєм і длявибору пункту меню, клавіші Esc для виходу з гри, клавіші Enter длявибору пункту меню, клавіші Space для скидання каміння.
    5. Вихідні дані
    Повідомлення про перемогу після кожного пройденого рівня «Level complete», пропрограші «Game over», або повідомлення, які супроводжують успішні абонеуспішні дії гравця «Looser» - невдача, «2 hit combo» - признищення відразу двох ворогів, «Ough! 4 mans at once »- при знищеннівідразу чотирьох ворогів, «Aaaaaaaaamazing!»-при знищенні більше чотирьохворогів.

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

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

    3.1 Опис призначення модулів.
    S iege - основна програма, що викликає на виконання програмнімодулі.
    Модуль S iege S pr - модуль, що містить ігрові об'єкти (картинки).
    Модуль VGAS pr - модуль для малювання спрайтів.
    Модуль L ogoscreen-заставка курсової роботи.
    Модуль S iege L ogo - модуль, що містить меню, інструкцію,передісторію.
    Модуль B uttons - модуль, що дозволяє здійснювати натискання івідпускання клавіші, інформацію про стан клавіш в реальному часі та провідпущених клавішах.
    Модуль R etrace - модуль, що дозволяє здійснювати синхронізаціювиводу в відеопам'ять.
    Модуль VGA 1 3 H - модуль для роботи з графікою.

    ВИСНОВОК

    Таким чином, яка надається комп'ютерна гра відноситься докласу комбінаторних ігор, оскільки може бути використана як у якостірозвиває увагу, реакцію, психомоторні навички (спроможності) ігор,так і для приємного відпочинку. При створенні комп'ютерноїгри ми намагалися зробити її якомога яскравіше, цікавіше ізабавною.

    Ми б порекомендували цю гру для дітей шкільного віку, проте,показавши її врозлим, вона зацікавила і їх. Тому нам здається, що вонацілком придатна і для дорослої аудиторії.

    Список використаної літератури
    1. Ігнатьєва А.І. Комп'ютерні ігри. (с. 3-10, 31-35) М. 1988.
    2. Домашній комп'ютер - № 4 (с. 62-68), 1999
    3. Домашній комп'ютер - № 12 (с. 78-88), 1999
    1. Інфо-№ 2: Комп'ютерні ігри в навчання (с.61-65)/Под ред. Марнумі Є.,

    Когов Ю. 1990.
    2. Лукашенко М.А. «Інформатика в іграх та задачах» (с.1-5)// Нач.шк.

    /Додаток до газети «1 вересня» - 1994, № 44
    3. Інфо-№ 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;
    Uses LogoScreen,

    DOS, VGA13h, VGASpr, Retrace, Buttons,

    SiegeLogo, SiegeSpr;
    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 !!!');< br>Var

    ManX, StoneY, StoneX, EnemyDelay, EnemyLimit: Integer;

    Enemies: Array [1 .. MaxEnemies] of EnemyType;

    Score, Level, Kills, Combo: Word;

    Timer: Longint;

    GameOver: Boolean;
    {================================================= =================}< br>Const ca: Word = 0; cc: String [20] ='';
    Procedure ComboString (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;
    Procedure NextLevel; forward;
    {================================================= =================}< br>Procedure InitEnemies;
    Var i: Byte;begin for i: = 1 to MaxEnemies do Enemies [i]. Free: = true;end;
    Procedure DrawEnemies;
    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;
    Procedure MoveEnemies;
    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 Y2 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;
    {================================================= =================}< br>Procedure DrawScreen;
    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]) X) and (StoneXY) and (StoneY0 then Dec (ManX); if Key [keyRight] then if ManX = 10) or GameOver; if GameOver then GameOverProc;end;
    Procedure Done;begin

    DoneButtons;

    SetTextMode;

    DoneVirtualPage;end;
    {================================================= =================}< br>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
    Uses DOS;
    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; keyBackIndex = 27; keyEnter = 28; keyCapsLock = 58; keyA = 30; keyS = 31; keyD = 32; keyF = 33; keyG = 34; keyH = 35; keyJ = 36 ; keyK = 37; keyL = 38; keyDoublePeriod = 39; keyApostroph = 40; keyLShift = 42; keyBackSlash = 43; keyZ = 44; keyX = 45; keyC = 46; keyV = 47; keyB = 48; keyN = 49; keyM = 50; keyComma = 51; keyPeriod = 52; keySlash = 53; keyRShift = 54; keyCtrl = 29; keyAlt = 56; keySpace = 57; keyNumLock = 69; keyMultiply = 55; keyMinus = 74; keyPlus = 78; keyDelete = 83 ; keyHome = 71; keyUp = 72; keyPgUp = 73; keyLeft = 75; keyFive = 76; keyRight = 77; keyEnd = 79; keyDown = 80; keyPgDn = 81; keyInsert = 82;

    KeyPressed: Boolean = FALSE;
    Var

    Key: Array [1 .. 128] of Boolean;

    WasPressed: Array [1 .. 128] of Boolean;
    Const

    CheckWarmReboot: Boolean = TRUE;

    WarmRebootFlag: Boolean = FALSE;
    Procedure InitButtons;
    Procedure DoneButtons;
    Function ButtonsInited: Boolean;
    Function IsKeypressed: Boolean;
    Function Pressed (Index: Byte): Boolean;
    Procedure ClearKeys;
    IMPLEMENTATION
    Const

    Init: Boolean = FALSE;
    Var

    OldKbdHandler: Pointer;
    Procedure Int9; INTERRUPT;
    Var

    ScanCode, Tmp: Byte;begin

    ScanCode: = Port [$ 60]; if ScanCode and 128 = 0 then begin

    Key [ScanCode]: = TRUE;

    KeyPressed: = TRUE ; end else begin

    ScanCode: = ScanCode xor 128;

    Key [ScanCode]: = FALSE;

    WasPressed [ScanCode]: = TRUE;

    KeyPressed: = FALSE; end; if CheckWarmReboot and (ScanCode = keyDelete) then begin

    Tmp: = Mem [Seg0040: $ 0017]; if Tmp and 12 = 12 then begin

    Tmp: = Tmp xor 21;

    WarmRebootFlag: = TRUE; end;

    Mem [Seg0040: $ 0017]: = Tmp; end; asm in al, 61h or al, 82h out 61h, al and al, 7Fh out 61h, al mov al, 20h out 20h, al end;

    end;
    Procedure InitButtons;begin if not Init then begin

    GetIntVec ($ 9, OldKbdHandler);

    SetIntVec ($ 9, @ Int9);

    FillChar (Key, SizeOf (Key) , FALSE);

    FillChar (WasPressed, SizeOf (WasPressed), FALSE);

    CheckWarmReboot: = TRUE;

    WarmRebootFlag: = FALSE;

    Init: = TRUE; end;end;
    Procedure DoneButtons;begin if Init then begin

    SetIntVec ($ 9, OldKbdHandler);

    WarmRebootFlag: = FALSE;

    Init: = FALSE; end;end;
    Function ButtonsInited;begin

    ButtonsInited: = Init;end;
    Function IsKeypressed;
    Var i: Byte; f: Boolean;begin f: = false; i: = 1;

    While (i');

    Old: = Res; end; if Pressed (keyUp) then begin < p> Res: = Res-1; if Res4 then Res: = 1; end;

    Until Key [keyEnter];

    Logo: = Res;end;
    Procedure Center (y: Integer; Const s: String);begin

    DrawString (Base1, 160 - (Length (s) * 8 div 2), y, s);end;
    Procedure Info;begin

    ClearBase (Base1);

    Center (2, 'Instructions');

    Center (20,' Arrows - moving Hero');

    Center (30, 'Space - throw stone');

    Center (40,' Esc - exit the game');

    Center (190, 'Press any key');

    ClearKeys;

    Repeat Until IsKeypressed;end;
    Procedure Story;begin
    ClearBase (Base1);
    Center (2, 'Передісторія');
    DrawString (Base1, 1,20, 'Багато л?? т тому на Землю впав метеорит .');< br> DrawString (Base1, 1,30, 'При дослідженні в лабораторії вчені');
    DrawString (Base1, 1,40, 'виявили в ньому біологічне вещес-' );
    DrawString (Base1, 1,50, 'тво позаземного походження. Зрозумівши всю');
    DrawString (Base1, 1,60, 'небезпеку цього вірусу, вони спробували');
    DrawString (Base1 , 1,70, 'нейтралізувати его.Но вірус став швидко');
    DrawString (Base1, 1,80, 'поширюватися і заразив всіх учасни');
    DrawString (Base1, 1,90, 'ков дослідження . Вийшовши за стіни лабораторних ');
    DrawString (Base1, 1,100,' торії він став зарожать людей.Зараженние ');
    DrawString (Base1, 1,110,' вірусом зовні не відрізнялися від звичайних ');
    DrawString (Base1, 1,120, 'людей, але підпорядковувалися позаземного розуму .');< br> DrawString (Base1, 1,130,' Їх завданням було: знищити решту ');
    DrawString (Base1, 1,140,' населеніе.Тогда люди стали поєднувати-');
    DrawString (Base1, 1,150,' ся, щоб захистити себе. Вони влаштували ');
    DrawString (Base1, 1,160,' засідку у фортеці. Але агресивних "лик-');
    DrawString (Base1, 1,170, 'відаторов ніщо не могло зупинити .....');< br> ClearKeys;

    Repeat Until IsKeypressed;end;
    END.

    UNIT SiegeSpr;
    INTERFACE
    Const

    BrickHgt = 10;

    BrickWdt = 10;

    BrickSpr: Array [1 .. BrickHgt, 1 .. BrickWdt] of Byte =

    ((7,7,7,7,7,7,7,7,7,7),

    (4,4,4,4,4,4,4,4 , 4,7),

    (4,4,4,4,4,4,4,4,4,7),

    (4,4,4,4 , 4,4,4,4,4,7),

    (4,4,4,4,4,4,4,4,4,7),

    (7,7,7,7,7,7,7,7,7,7),

    (4,4,4,4,7,4,4,4,4,4) ,

    (4,4,4,4,7,4,4,4,4,4),

    (4,4,4,4,7,4, 4,4,4,4),

    (4,4,4,4,7,4,4,4,4,4));
    Const

    StoneHgt = 8;

    StoneWdt = 8;

    StoneSpr: Array [1 .. StoneHgt, 1 .. StoneWdt] of Byte =

    ((0,0,8,8,8,8,0,0),

    (0,8,7,7,8,8,8,0),

    (8,7,8,8,8,8,8,8),

    (8,7,8,8,8,8,8,8),

    (8,8,8,8,8,8,8,8),

    (8,8,8,8,8,8,8,8),

    (0,8,8,8,8,8,8,0),

    (0,0,8,8,8,8,0,0)); < br>Const

    ManHgt = 20;

    ManWdt = 16;

    ManSpr: Array [1 .. 2,1 .. ManHgt, 1 .. ManWdt] of Byte =

    (((00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00), < p> (00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00),

    (00,00,00, 00,00,00,00,00,00,00,00,00,00,00,00,00),

    (00,00,00,00,00,00,00,00 , 00,00,00,00,00,00,00,00),

    (00,00,00,00,00,00, 7, 7, 7, 7,00,00, 00,00,00,00),

    (00,00,00,00,00, 7, 7, 7, 7, 7, 7,00,00,00,00,00),

    (00,00,00,00,00, 7,15,15,15,15, 7,00,00,00,00,00),

    (00 , 00,00,00,00,15, 3, 1, 1, 3,15,00,00,00,00,00),

    (00,00,00,00,00, 15,15,15,15,15,15,00,00,00,00,00),

    (00,00,00,00,00,15,15, 8, 8,15 , 15,00,00,00,00,00),

    (00,00,00,00,00,15,15,13,13,15,15,00,00,00, 00,00),

    (00,00,00,00,00,00,15,15,15,15,00,00,00,00,00,00),

    (00,00,00,00,12,12,15,15,15,15,12,12,00,00,00,00),

    (00,12,12 , 12,12,12,12,14,14,12,12,12,12,12,12,00),

    (12,12,12,12,12,12,12, 14,14,12,12,12,12,12,12,12),

    (12,12,12,12,12,12,12,12,12,12,12,12 , 12,12,12,12),

    (12,12, 8,12,12,12,12,12,12,12,12,12,12, 8,12,12) ,

    (12,12, 8,12,12,12,12,12, 8,12,12,12,12, 8,12,12),

    ( 12,12, 8,12,12,12,12,12,12,12,12,12,12, 8,12,12),

    (12,12, 8,12,12 , 12,12,12, 8,12,12,12,12, 8,12,12 )),

    ((00,00,00,15,00,00,00,00, 00,00,00,00,15,00,00,00),

    (00,00,00,15,00,00,00,00,00,00,00,00,15 , 00,00,00),

    (00,00,12,12,00,00,00,00,00,00,00,00,12,12,00,00),

    (00,00,12,12,00,00,00,00,00,00,00,00,12,12,00,00),

    (00, 00,12,12,00,00, 7, 7, 7, 7,00,00,12,12,00,00),

    (00,00,12,12,00, 7 , 7, 7, 7, 7, 7,00,12,12,00,00),

    (00,12,12,00,00, 7,15,15,15,15, 7,00,00,12,12,00),

    (00,12,12,00,00,15, 3, 1, 1, 3,15,00,00,12,12 , 00),

    (00,12,12,00,00,15,15,15,15,15,15,00,00,12,12,00), < p> (00,12,12,00,00,15,15, 8, 8,15,15,00,00,12,12,00),

    (00,12,12, 00,00,15,15,13,13,15,15,00,00,12,12,00),

    (00,12,12,12,00,00,15,15 , 15,15,00,00,12,12,12,00),

    (00,00,12,12,12,12,15,15,15,15,12,12, 12,12,00,00),

    (00,00,12,12,12,12,12,14,14,12,12,12,12,12,00,00),

    (00,00,12,12,12,12,12,14,14,12,12,12,12,12,00,00),

    (00 , 00,12,12,12,12,12,12,12,12,12,12,12,12,00,00),

    (00,00,00,12,12, 12,12,12,12,12,12,12,12,00,00,00),

    (00,00,00,12,12,12,12,12, 8,12 , 12,12,12,00,00,00),

    (00,00,00,12,12,12,12,12,12,12,12,12,12,00, 00,00),

    (00,00,00,12,12,12,12,12, 8,12,12,12,12,00,00,00 )));< br >Const

    EnemyHgt = 42;

    EnemyWdt = 16;

    EnemySpr: Array [1 .. 2,1 .. EnemyHgt, 1 .. EnemyWdt] of Byte =

    (((00,00,00,00,00,00,00,00,00,00,00,00,00,00,15,00), < p> (00,00,00,00,00,00,00,00,00,00,00,00,00,00,15,00),

    (00,00,00, 00,00,00,00,00,00,00,00,00,00,10,10,00),

    (00,00,00,00,00,00,00,00 , 00,00,00,00,00,10,10,00),

    (00,00,00,00,00,00, 7, 7, 7, 7,00,00, 00,10,10,00),

    (00,00,00,00,00, 7, 7, 7, 7, 7, 7,00,00,10,10,00),

    (00,00,00,00,00, 7, 7, 7, 7, 7, 7,00,00,10,10,00),

    (00 , 00,00,00,00, 7, 7, 7, 7, 7, 7,00,00,10,10,00),

    (00,00,00,00,00, 7, 7, 7, 7, 7, 7,00,00,10,10,00),

    (00,00,00,00,00,15, 7, 7, 7, 7 , 15,00,00,10,10,00),

    (00,00,00,00,00,15, 7, 7, 7, 7,15,00,00,10, 10,00),

    (00,00,00,00,00,00,15,15,15,15,00,00,10,10,10,00),

    (00,00,00,00,10,10,15,15,15,15,10,10,10,10,00,00),

    (00,10,10 , 10,10,10,10,10,10,10,10,10,10,10,00,00),

    (10,10,10,10,10,10,10, 10,10,10,10,10,10,10,00,00),

    (10,10,10,10,10,10,10,10,10,10,10,10 , 10,10,00,00),

    (10,10,00,10,10,10,10,10,10,10,10,10,10,00,00,00) ,

    (10,10,00,10,10,10,10,10,10,10,10,10,10,00,00,00),

    ( 10,10,00,10,10,10,10,10,10,10,10,10,10,00,00,00),

    (00,10,10,10,10 , 10,10,10,10,10,10,10,10,00,00,00),

    (00,10,10,10,10,10,10,10,10, 10,10,10,10,00,00,00),

    (00,10,10,10,10,10,10,10,10,10,10,10,10,00 , 00,00),

    (00,00,00,10,10,10,10,10,10,10,10,10,10,00,00,00),

    (00,00,00, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,00,00,00),

    (00,00, 00, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,00,00,00),

    (00,00, 8, 8, 8, 8, 8 , 8, 8, 8, 8, 8, 8,00,00,00),

    (00,00, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,00,00,00),

    (00, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,00,00,00 ),

    (00, 8, 8, 8, 8,00,00,00,00, 8, 8, 8, 8,00,00,00),

    (8, 8, 8, 8, 8,00,00,00,00, 8, 8, 8, 8, 8,00,00),

    (8, 8, 8, 8, 00,00,00,00,00,00, 8, 8, 8, 8,00,00),

    (8, 8, 8, 8,00,00,00,00,00 , 00, 8, 8, 8, 8,00,00),

    (8, 8, 8, 8,00,00,00,00,00,00, 8, 8, 8, 8,00,00),

    (00, 8, 8, 8,00,00,00,00,00,00, 8, 8, 8, 8,00,00),

    (00, 8, 8, 8,00,00,00,00,00,00, 8, 8, 8, 8,00,00),

    (00,00 , 8, 8, 8,00,00,00,00,00,00, 8, 8, 8, 8,00),

    (00,00, 8, 8, 8,00, 00,00,00,00,00, 8, 8, 8, 8,00),

    (00,00, 8, 8, 8,00,00,00,00,00,00 , 8, 8, 8, 8,00),

    (00,00,00,00,00,00,00,00,00,00,00, 8, 8, 8, 8, 00),

    (00,00,00,00,00,00,00,00,00,00,00, 8, 8, 8, 8,00),

    (00,00,00,00,00,00,00,00,00,00,00, 8, 8, 8, 8,00),

    (00,00,00,00 , 00,00,00,00,00,00,00, 8, 8, 8, 8,00 )),

    ((00,15,00,00,00,00,00, 00,00,00,00,00,00,00,00,00),

    (00,15,00,00,00,00,00,00,00,00,00,00 , 00,00,00,00),

    (00,10,10,00,00,00,00,00,00,00,00,00,00,00,00,00) ,

    (00,10,10,00,00,00,00,00,00,00,00,00,00,00,00,00),

    ( 00,10,10,00,00,00, 7, 7, 7, 7,00,00,00,00,00,00),

    (00,10,10,00,00 , 7, 7, 7, 7, 7, 7,00,00,00,00,00),

    (00,10,10,00,00, 7, 7, 7, 7, 7, 7,00,00,00,00,00),

    (00,10,10,00,00, 7, 7, 7, 7, 7, 7,00,00,00 , 00,00),

    (00,10,10,00,00, 7, 7, 7, 7, 7, 7,00,00,00,00,00),

    (00,10,10,00,00,15, 7, 7, 7, 7,15,00,00,00,00,00),

    (00,10, 10,00,00,15, 7, 7, 7, 7,15,00,00,00,00,00),

    (00,10,10,10,00,00,15 , 15,15,15,00,00,00,00,00,00),

    (00,00,10,10,10,10,15,15,15,15,10, 10,10,10,00,00),

    (00,00,10,10,10,10,10,10,10,10,10,10,10,10,10,00 ),

    (00,00,10,10,10,10,10,10,10,10,10,10,10,10,10,10),

    (00,00,10,10,10,10,10,10,10,10,10,10,10,10,10,10),

    (00,00,00,10, 10,10,10,10,10,10,10,10,10,00,10,10),

    (00,00,00,10,10,10,10,10,10 , 10,10,10,10,00,10,10),

    (00,00,00,10,10,10,10,10,10,10,10,10,10, 00,10,10),

    (00,00,00,10,10,10,10,10,10,10,10,10,10,10,10,00),

    (00,00,00,10,10,10,10,10,10,10,10,10,10,10,10,00),

    (00,00 , 00,10,10,10,10,10,10,10,10,10,10,10,10,00),

    (00,00,00,10,10,10, 10,10,10,10,10,10,10,00,00,00),

    (00,00,00, 9, 9, 9, 9, 9, 9, 9, 9 , 9, 9,00,00,00),

    (00,00,00, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,00,00, 00),

    (00,00,00, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,00,00),

    (00,00,00, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,00,00),

    (00,00,00, 8 , 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,00),

    (00,00, 8, 8, 8, 8, 8,00, 00,00,00, 8, 8, 8, 8,00),

    (00,00, 8, 8, 8, 8, 8,00,00,00,00, 8, 8 , 8, 8, 8),

    (00,00, 8, 8, 8, 8,00,00,00,00,00,00, 8, 8, 8, 8),

    (00,00, 8, 8, 8, 8,00,00,00,00,00,00, 8, 8, 8, 8),

    (00, 00, 8, 8, 8, 8,00,00,00,00,00,00, 8, 8, 8, 8),

    (00,00, 8, 8, 8, 8 , 00,00,00,00,00,00, 8, 8, 8,00),

    (00,00, 8, 8, 8, 8,00,00,00,00, 00,00, 8, 8, 8,00),

    (00, 8, 8, 8, 8,00,00,00,00,00,00, 8, 8, 8,00 , 00),

    (00, 8, 8, 8, 8,00,00,00,00,00,00, 8, 8, 8,00,00), < p> (00, 8, 8, 8, 8,00,00,00,00,00,00, 8, 8, 8,00,00),

    (00, 8, 8, 8, 8,00,00,00,00,00,00,00,00,00,00,00),

    (00, 8, 8, 8, 8,00,00,00 , 00,00,00,00,00,00,00,00),

    (00, 8, 8, 8, 8,00,00,00,00,00,00,00, 00,00,00,00),

    (00, 8, 8, 8, 8,00,00,00,00,00,00,00,00,00,00,00)) );
    IMPLEMENTATION
    END.

    UNIT VGA13h;
    INTERFACE
    Type

    PScreen = ^ TScreen;

    TScreen = Array [0 .. 199,0 .. 319] of Byte;
    Const

    ScreenHeight = 200;

    ScreenWidth = 320;

    GetMaxY = ScreenHeight-1;

    GetMaxX = ScreenWidth-1;

    MidX = GetMaxX div 2;

    MidY = GetMaxY div 2;

    PageSize = ScreenHeight * ScreenWidth;

    QuarterSize = PageSize div 4 ;

    VideoSegment: Word = 0;

    Base1: Word = 0;

    Base2: Word = 0;

    Page1: PScreen = NIL;

    Page2: PScreen = NIL;
    Function DetectVGA: Boolean;
    Procedure SetGraphMode;
    Procedure SetTextMode;
    Procedure MakePixelSquare;
    Procedure CopyBase (Source, Destin: Word);
    Procedure ClearBase (Base: Word);
    Procedure FillBase (Base, Ofs, Count: Word; Color: Longint);
    Procedure MoveBase (Source, Destin, Count: Word);
    Procedure TileBase (Base, Ofs, Count: Word; Tile: Pointer; Len: Word);
    Procedure PutPixel (Base: Word; x, y: Integer; Color: Byte);
    Function GetPixel (Base: Word; x, y: Integer): Byte;
    Procedure Line (Base: Word; x1, y1, x2, y2: Integer; Color: Byte);
    Procedure VLine (Base: Word; x, y1, y2: Integer; Color: Byte);
    Procedure HLine (Base: Word; y, x1, x2: Integer; Color: Byte);
    Procedure Bar (Base: Word; x1, y1, x2, y2: Integer; Color: Byte);
    Procedure Polygon (Base: Word; x1, y1, x2, y2, x3, y3, x4, y4: Integer; c: Byte);
    Function InitVirtualPage: Boolean;
    Procedure DoneVirtualPage;
    IMPLEMENTATION
    Var

    VirtualPage: Pointer;

    ($ L VGA13H.OBJ)
    Function DetectVGA; external;
    Procedure SetGraphMode; external;
    Procedure SetTextMode; external;
    Procedure MakePixelSquare; external;
    Procedure CopyBase; external;
    Procedure ClearBase; external;
    Procedure FillBase; external;
    Procedure MoveBase; external;
    Procedure TileBase; external;
    Procedure PutPixel; external;
    Function GetPixel; external;
    Procedure HLine; external;
    Procedure VLine; external;

    Procedure Polygon;
    Var xpos: array [0 .. 199,0 .. 1] of Word; mny, mxy, y: Integer; i: Word; s1, s2, s3, s4: Shortint;begin mny: = y1; if y2mxy then mxy: = y4; s1: = byte (y1

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status