Как создавать игры на паскале. Создание компьютерной игры на языке Pascal

Сегодня несложные игры, где нет ни графических, ни звуковых эффектов, переживают второе рождение. Играя в них, пользователь сосредотачивается на сюжете, а не на художественных приемах. Для создания таких игр хорошо подходит язык Паскаль.

Инструкция

  • Скачайте компилятор языка Паскаль со следующей страницы - http://edn.embarcadero.com/article/20803. Ознакомьтесь с условиями использования данного программного пакета, после чего установите его.
  • Попробуйте создать игру, в которой от игрока требуется угадать число в интервале от 0 до 100. Вначале введите название программы:program ugadayka;
  • Подключите модуль CRT:uses crt;
  • Обозначьте переменные следующим образом:var
  • zagadka,mnenie,popytki:integer;

  • Начните программу с очистки экрана и переменных, а также присвоения загаданному числу псевдослучайного значения:begin
  • zagadka:=int(rnd*100);

  • Заставьте компьютер спрашивать у пользователя, каким, по его мнению, является загаданное число, до тех пор, пока он его не угадает:while not mnenie=zagadka do
  • popytki:=popytki+1;

    writeln("Попытка номер ",popytki,".");

    write("Как ты думаешь, какое число загадано? ");

    if zagadka>mnenie then writeln("Нет, загаданное число больше!")

    else writeln("Нет, загаданное число меньше!")

  • После того как число будет угадано, автоматическое повторение указанных выше событий прекратится. Начнется выполнение следующих строк программы. В них заставьте машину вывести информацию о том, что пользователь угадал число:writeln("Поздравляю! Ты угадал число с попытки номер ",popytki,". Оно действительно равно ",zagadka,".");
  • knopochka:=readkey

  • Введите оператор для завершения работы программы:end.
  • Сохраните программу под любым желаемым именем, используя пункты меню file -> Save as. В дальнейшем после каждого редактирования сохраняйте ее нажатием клавиши F2.
  • Для запуска программы на исполнения нажмите одновременно клавиши Control и F9.
  • После завершения работы программы для того, чтобы увидеть, что она вывела на экран непосредственно перед этим, нажмите одновременно клавиши Alt и F5. Для возврата к редактору нажмите это же сочетание клавиш еще раз.
  • Начинающему программисту не стоит сразу браться за написание на языке Паскаль сложной, многоуровневой игровой программы. Начать следует с логической или математической игры с текстовым интерфейсом. Постепенно набираясь опыта, можно переходить к работе над более крупными проектами.

    Инструкция

  • Начните работу над программой с заголовка и указания перечня используемых подключаемых модулей:program reshiprimer;uses crt;
  • Укажите компилятору, какие в состав программы будут входить переменные:vara,b,c:integer;d:string;Здесь a и b - слагаемые, c - сумма, d - ответ на вопрос о том, желает ли пользователь играть дальше.
  • Обозначьте начало программы и бесконечного цикла, а также инициализируйте генератор случайных чисел:beginrandomize;while 0=0 dobegin
  • Запрограммируйте генерацию двух случайных чисел в диапазоне от 0 до 1000:a:=round(random(1000));b:=round(random(1000));
  • Покажите пользователю пример, который он должен решить, а затем запросите результат:writeln("Сколько будет"),a,("+"),b,("?");readln(c);
  • Сообщите пользователю, правильно ли он решил пример:if a+b=c then writeln("Правильно!") else writeln("Неправильно!);
  • Спросите у пользователя, желает ли он играть еще:writeln("Будем играть дальше?");readln(d);
  • При отрицательном ответе завершите работу программы:if upcase(d)"Y" then halt(0);
  • Завершите сначала цикл, а затем и саму программу:endend.Обратите внимание на точку после второго оператора end.
  • Запустите программу, нажав Ctrl+F9. На экран будет выведен первый пример. Сосчитайте в уме и введите ответ на него. Машина тут же сообщит вам, правильно ли он решен. Затем будет задан вопрос о том, желаете ли вы играть дальше. Ответ Y или y приведет к выводу следующего примера, а ввод любой другой буквы - к завершению работы программы.
  • Добившись правильной работы игры, приступите к ее усовершенствованию. Например, добавьте очистку экрана перед показом каждого нового примера командой cls. Используя процедуру textcolor, сделайте, чтобы надписи выводились различными цветами. Подумайте, как можно заставить программу автоматически менять сложность примеров: при правильных ответах усложнять их, а при неправильных - упрощать. Чтобы разнообразить игру, добавьте функцию генерации примеров на различные математические действия.
  • Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

    хорошую работу на сайт">

    Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

    Размещено на http://www.allbest.ru/

    Размещено на http://www.allbest.ru/

    Введение

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

    2. Описание данных

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

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

    Заключение

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

    ВВЕДЕНИЕ

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

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

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

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

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

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

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

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

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

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

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

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

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

    2. Описание данных:

    Size1, Size2, Size3, Size4 - переменные целого типа, которые хранят в себе область, выделяемую для динамических переменных.

    Pustota, Sam1, Rocket, F16 - динамические переменные, которые хранят в себе объекты игры.

    Key - булиновая переменная, принимает значение TRUE при нажатии клавиш.

    Name , Head, Cl - строковые переменные, записываемые в файл:

    NAME - хранит имя игрока, вводимое с клавиатуры;

    HEAD и CL - содержат строку, представляющую из себя совокупность дискрипторов языка HTML, которые, после записи в файл, преобразовывают его в HTML страницу.

    F1 - файловая переменная

    Event - переменная, описывающая события (тип: Tevent);

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

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

    Uses Crt,App,Dialogs,Objects,Drivers,Views,Graph;

    Procedure Super_Mega_Game;

    Label b1;

    var Driver1,Mode,Size,Size2,x,y,size3,n,xs,d2,d11,d12,m,xt,p,h,Size4:Integer; s:char; Pustota,Sam1,Rocket,F16:Pointer; key:boolean; Name,Head,Cl:String; F1:Text;

    begin

    Randomize;

    xs:=1;

    Driver1:=Detect;

    Mode:=Detect;

    InitGraph(Driver1,Mode,"");

    ClearDevice;

    SetBkColor(3);

    Size:=ImageSize(0,0,53,53);

    GetMem(Pustota,size);

    GetImage(0,0,53,53,Pustota^);

    Size2:=ImageSize(640,0,600,40);

    GetMem(Sam1,Size2);

    SetColor(Yellow);

    Line(605,35,630,35);

    LIne(630,35,635,40);

    LIne(600,40,605,35);

    Line(600,40,635,40);

    Line(615,35,615,29);

    Line(615,29,620,35);

    SetColor(6);

    Line(610,32,620,24);

    Line(610,29,620,21);

    SetColor(Red);

    Line(620,24,624,20);

    Line(620,21,624,20);

    Arc(610,30,0,90,2);

    GetImage(640,0,600,40,Sam1^);

    Size4:=ImageSize(100,100,150,150);

    GetMem(F16,Size4);

    {КОРПУС}

    SetColor(6);

    Line(105,120,135,120);

    Line(105,114,130,114);

    {КАБИНА}

    Setcolor(Blue);

    Arc(131,117,0,90,3);

    Setcolor(6);

    Line(134,117,144,118);

    Line(134,120,144,118);

    {ПЕРВОЕ КРЫЛО}

    Line(115,119,113,130);

    Line(113,130,117,130);

    Line(117,130,121,119);

    Line(115,119,121,119);

    {ХВОСТ}

    Line(105,114,101,110);

    Line(101,110,105,120);

    {ВТОРОЕ КРЫЛО}

    Line(119,114,117,109);

    Line(117,109,113,109);

    Line(113,109,114,114);

    GetImage(100,100,150,150,F16^);

    PutImage(100,100,Pustota^,NormalPut);

    Size3:=ImageSize(640,0,600,40);

    GetMem(Rocket,Size3);

    SetColor(6);

    Line(610,32,620,24);

    Line(610,29,620,21);

    SetColor(Red);

    Line(620,24,624,20);

    Line(620,21,624,20);

    Arc(610,30,0,90,2);

    GetImage(640,0,600,40,Rocket^);

    Setcolor(6);

    Line(1,460,640,460);

    x:=6;

    y:=400;

    n:=0;

    m:=0;

    xt:=5;

    p:=1;

    h:=0;

    PutImage(585,10,Pustota^,NormalPut);

    RepeatRepeatif p=1 then begin Delay(100); PutImage(xt,100,F16^,NormalPut); xt:=xt+1; h:=h+1; if h=550 then p:=0; end;if p=0 then begin delay(100); PutImage(xt,100,F16^,NormalPut); xt:=xt-1; h:=h-1; if h=0 then p:=1; end;key:=KeyPressed;if (key=True) then goto b1;until s=chr(27);

    b1:

    s:=ReadKey;

    if s=chr(77) then x:=x+4;

    if s=chr(75) then x:=x-4;

    if s=chr(72) then begin Repeat PutImage(x+51+n,y-35-n,RocKet^,NormalPut); inc(n); PutImage(x+51+n,y-35-n,Pustota^,NormalPut); if (x+51+n)=550 then n:=300; until n=300; PutImage(x+n,y-35-n,Pustota^,NormalPut); if ((y+51+n)>100) and ((x+51+n)>(xt-10)) and ((x+51+n)<(xt+60)) then begin OutTextXY(250,200,"F16-vipe out!!!"); s:=chr(27); end; n:=0; end;

    PutImage(x-4,y,Pustota^,NormalPut);

    PutImage(x,y,Sam1^,NormalPut);

    until s=chr(27);

    readln;

    CloseGraph;

    TextColor(Green);

    Write("Input Your Name: ");

    Readln(Name);

    Head:="
    Winer!!!

    ";

    Cl:="
    ";

    Head:=concat(Head," MegaMen: ",name,cl);

    assign(F1,"Namer.htm");

    Rewrite(f1);

    Write(f1,head);

    Close(f1);

    end;

    type

    PProg=^TProg;

    TProg=object(TApplication)

    Constructor Init;

    end;

    Pdial=^TDial;

    TDial=object(Tdialog)

    Procedure HandleEvent (var Event:TEvent);

    Virtual;

    end;

    constcmPrint = 100;

    Constructor TProg.Init;

    varR:TRect;Dia:Pdial;g:char;

    begin

    Inherited Init;

    R.assign(20,9,60,17);

    Dia:=New(PDial,Init(R,""));

    R.assign(3,4,22,6);

    Dia^.Insert(New(PButton,Init(R,"Start Game",cmPrint,bfDefault)));

    R.assign(23,4,35,6);

    Dia^.Insert(New(PButton,Init(R,"Quit",cmCancel,bfNormal)));

    if execView(Dia)=cmPrint then begin Super_Mega_Game; Writeln("Press "b" for back to main menu"); repeat g:=ReadKey; if g="b" then begin clrscr; end; until g="b"; Writeln("Press "Alt-x" for Quit"); end;

    end;

    Procedure TDial.HandleEvent (var Event:TEvent);

    begin

    Inherited HandleEvent(Event);

    if (Event.What=evCommand) and (Event.Command=cmPrint) then EndModal(cmPrint);

    end;

    Procedure Batva;

    var

    Prog:TProg;

    begin

    Prog.Init;

    Prog.Run;

    Prog.Done;

    end;

    begin

    batva;

    end.

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

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

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

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

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

    Средство ПВО может с помощью курсора перемещаться по экрану в горизонтальном направлении. При нажатии клавиши «пробел» средство ПВО совершает выстрел. Если снаряд попадает в то появляется надпись-“F-16 wipe out”. После того, как самолёт сбит вам предлагается написать своё имя, а затем просит нажать “b” -которая выводит вас на экран, на котором при нажатии ALT+X выводит вас из программы.

    компьютерный игра текстура программа

    Заключение

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

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

    Необходимо, чтобы в той папке, где лежит данная программа, находился файл 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;

    Размещено на Allbest.ru

    Подобные документы

      Разработка и реализация компьютерной игры "Змейка" с помощью языка программирования Pascal и модуля CRT. Составление общего алгоритма программы, выделение ее функциональных частей. Разработка тестовых примеров. Использование типизированных файлов.

      курсовая работа , добавлен 23.02.2011

      Характеристика вычислительной системы и инструментов разработки. Программирование на языке Pascal в среде Turbo Pascal и на языке Object Pascal в среде Delphi. Использование процедур, функций, массивов, бинарного поиска. Создание базы данных в виде файла.

      отчет по практике , добавлен 02.05.2014

      История развития языка программирования Java. История тетриса - культовой компьютерной игры, изобретённой в СССР. Правила проведения игры, особенности начисления очков. Создание интерфейса программы, ее реализация в среде Java, кодирование, тестирование.

      курсовая работа , добавлен 27.09.2013

      Алгоритмическое представление и описание правил игры "Эволюция". Построение диаграммы прецедентов. Разработка графического интерфейса пользователя. Реализация интерфейса в среде Unity. Структура файла сохранения игры. Проектирование поведения компьютера.

      дипломная работа , добавлен 18.02.2017

      Описание правил игры "Морской бой". Особенности современных компьютеров и искусственного интеллекта. Создание общей блок-схемы программы, ее внешний вид. Необходимые переменные, процедуры и функции. Характеристика объектов, используемых в приложении.

      курсовая работа , добавлен 05.11.2012

      Разработка программы логической игры в "крестики-нолики" пять в ряд на поле размера 15х15 клеток с применением графики на языке Pascal с использованием объектно-ориентированного программирования. Структура алгоритма программы и описание ее работы.

      курсовая работа , добавлен 13.02.2012

      Основы работы на языке высокого уровня Turbo Pascal. Основное оборудование и программное обеспечение. Операторы, необходимы для работы в графической среде Turbo Pascal. Запуск графического режима. Текст программы в графической среде Turbo Pascal.

      лабораторная работа , добавлен 14.05.2011

      Разработка программы казуальной игры "Zuma Deluxe" на языке С\С++. Использование стиля древних инков и ацтеков, возможностей графического движка HGE version 1.53. Назначение основных классов игры. Руководство пользователя, содержание главного меню.

      курсовая работа , добавлен 28.10.2014

      Язык программирования Pascal и его турбооболочка. Аналитический обзор игрового программного обеспечения. Функции модуля Crt. Постановка задачи создания несложной игровой программы "Турбозмей", алгоритм реализации и описание пользовательского интерфейса.

      курсовая работа , добавлен 15.05.2014

      Реализация основных алгоритмических структур. Усеченный условный оператор и оператор exit. Цикл с параметром (счетный цикл). Распечатка таблиц функций. Средства разработки программ на языке Free Pascal. Разработка игрового приложения "Быки и коровы".

    Похожие публикации