Программирывание на ЯВУ

Автор работы: Пользователь скрыл имя, 21 Декабря 2011 в 12:10, курсовая работа

Краткое описание

Для курсовой работы я выбрала игру Pac-Man. Меня заинтересовала история создания этой игры. Pac-Man — культовая компьютерная игра в жанре аркады, впервые вышедшая в 1979 г. в Японии. Игра была разработана в основном работником компании Namco Тору Иватани в течение восемнадцати месяцев. Сначала это творение называлось pakku-man [пакку-ман]., что на расово японском означает «поедать, откусывать, многократно широко раскрывая рот и захлопывая его». Часто упоминается, что идея игры к Иватани пришла, когда он увидел пиццу без одного кусочка пиццы. В интервью 1986 года он отметил, что это было наполовину правдой: Иватани округлил иероглиф кути (яп. рот) как символ поедания и придал ему подобие рта.
Иватани попытался сделать игру интересной для более широких слоёв населения, п

Содержание работы

Основные данные о работе 1
Содержание 2
Основная часть 5
1 Разработка эскизного и технического проектов программы 5
2 Разработка рабочего проекта 6
Заключение 42
Глоссарий 45
Список использованных источников 46
Приложения 47

Содержимое работы - 1 файл

КР, Программирование на ЯВУ.doc

— 543.00 Кб (Скачать файл)

     Основные данные о работе

Версия  шаблона 1.1
Филиал Елецкий
Вид работы Курсовая работа
Название  дисциплины Программирование  на ЯВУ
Тема Разработка  приложения для Windows, представляющего собой компьютерную игру “PacMan”
Фамилия студента Титова
Имя студента Татьяна
Отчество  студента Игоревна
№ контракта 11200090609001

     Содержание

 
 

 

Введение

     Для курсовой работы я выбрала игру Pac-Man. Меня заинтересовала история создания этой игры. Pac-Man — культовая компьютерная игра в жанре аркады, впервые вышедшая в 1979 г. в Японии. Игра была разработана в основном работником компании Namco Тору Иватани в течение восемнадцати месяцев. Сначала это творение называлось pakku-man [пакку-ман]., что на расово японском означает «поедать, откусывать, многократно широко раскрывая рот и захлопывая его». Часто упоминается, что идея игры к Иватани пришла, когда он увидел пиццу без одного кусочка пиццы. В интервью 1986 года он отметил, что это было наполовину правдой: Иватани округлил иероглиф кути (яп. рот) как символ поедания и придал ему подобие рта.

     Иватани попытался сделать игру интересной для более широких слоёв населения, помимо обычных мальчиков и подростков, и он добавил в игру элемент лабиринта. В результате игра получила название PUCK MAN. До выхода PUCK MAN  большинство американских игр были космическими шутерами такими как Space Invaders или Defender (англ.). PUCK MAN  же оказался совершенно новым стилем игры, не предлагающей насилия, потому игра позиционировалась и для мальчиков и для девочек.

     Несмотря  на то, что в России PUCK MAN  не нашел  широкой поддержки, в США образ  желтого круглого существа получил  большое распространение.

       Однако в следующем году за игру взялась компания Midway из США. Игра стала называться Pac-Man из-за того, что название PUCK MAN было слишком близко к ругательству (англ. FUCK), и вандалы могли легко его поменять, что загубило бы игру на корню. Однако в Европе можно найти как автоматы Pac-Man, так и PUCK MAN.

     Американская публика хорошо встретила игру, давшую альтернативу Space Invaders, что выразилось в беспрецедентной популярности и доходе, превзошедшем своего успешного предшественника. Даже Иватани был удивлён продажами в США. Игра вскоре стала общемировым явлением в видеоиндустрии, были выпущены многочисленные продолжения, стиль игры часто копировался, но никто из клонов не мог превзойти оригинал.

     Когда Midway выпустила Pac-Man в США, компания также изменила дизайн игровых автоматов. Стиль Namco был дороже и менее подходил для американского рынка. PUCK MAN был выкрашен в белый цвет, на нём были разноцветные рисунки. Pac-Man был выкрашен в жёлтый цвет, рисунки были простыми и запоминающимися.

     В игре было необходимо пройти все 255 уровней. Максимальное количество очков было зарегистрировано 3 июля 1999 в Голливуде: Билли Митчел набрал 3 333 360 очков. Для этого ему потребовалось 6 часов. Он собрал все точки, все энерджайзеры, все фрукты, съел всех привидений на всех 255 уровнях.

     Производители видеоигр были впечатлены успехом этой видео игры. Популярность игры превысила рейтинг Asteroids, аркады с гигантскими продажами. Автоматы Pac-Man разошлись в количестве 350 000 экземпляров. Игра была настолько популярна, что на её основе родилось множество подделок в начале 80х.

     Уникальный игровой дизайн заставлял производителей игр пересмотреть идею бесконечных инопланетных нашествий. Введённый в Pac-Man элемент юмора, позволил игре соответствовать интересам более широких слоёв населения. Многие популярные видеоигры 80х в той или иной мере обязаны своим существованием Pac-Man.

     Pac-Man [пэ́кмэн] (в обиходе его часто  называют "колобком") — круглое  жёлтое существо, состоящее из  рта и глаз. Задача игрока —  собрать все шарики (точки) на игровом поле, стараясь не нарваться на привидения. Каждое привидение имеет свой характер движения даже свое имя. Их имена - Blinky, Inky, Pinky & Clyde. Привидения в начале игры выходят из специальной комнаты в центре экрана по одному, а одно начинает уровень белые точки на уровне, избегая столкновений с привидениями. Уровень заканчивается, когда съедены все точки. Если пэкмэн «съест» большую белую точку — «энерджайзер» (англ. Energizer), то на несколько секунд привидения становятся уязвимыми и сами избегают встречи с пэкмэном (время, на которое это происходит, сокращается по мере роста уровня, и начиная с определённого момента, единственным эффектом энерджайзера является смена направления движения приведением).

     Съеденные в такой ситуации привидения не исчезают, но возвращаются в центр экрана, а игроку начисляются дополнительные очки. Если войти в коридор, ведущий направо или налево за границу экрана, то пэкмэн выйдет с противоположной стороны (это могут сделать и привидения, однако, перед заходом в коридор они замедляются, пэкмэн же сохраняет скорость). Также на уровне могут появляться различные бонусы — фрукты, съев которые игрок получает дополнительные очки.

     Основная  часть

     1 Разработка эскизного и технического проектов программы

 

     1.1 Назначение и область применения

     В приведенном примере задания  необходимо разработать игру, предназначенную для развлечения. Программа может использоваться под управлением MS Windows , так как ставится задача разработать приложение для Windows.

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

     Для разработки программы применялась  программа Borland Delphi 7 Enterprise, которая позволяет достаточно быстро разработать приложения для Windows.

     1.3. Описание алгоритма

     Игра  содержит 6 уровней (можно расширять). Каждый последующий уровень больше предыдущего, в нём больше зёрнышек и больше врагов (призраки).

     При съедании зёрнышек прибавляются очки (по 10 за штучку). После съедания всех зёрнышек, игрок получает дополнительную жизнь и переходит на следующий  уровень. Дополнительно, на уровне (в месте старта игрока) через нерегулярные промежутки времени появляются дополнительные бонусы, за съедение которых даётся:

     Помидор 100 очков;

     Морковка 150 очков;

     Виноград 200 очков;

     Черешня 250 очков;

     Дополнительный  бонус исчезает через несколько  секунд, если игрок не успевает его  съесть.

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

     «Загончик» призраков имеет врата (тонкие стены) через которые могут проходить призраки, но не может проходить PacMan. Есть телепортатор (как он назывался в классическом PacMan - не помню). Зайдя в одну его часть, появляешься в другой. Им могут пользоваться как игрок, так и призраки.

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

     На  первом этапе призраков два. На каждом последующем добавляется по призраку (т.е. на шестом их уже семь). Скорость призраков такая же, как и у игрока, но, в отличие от него, призраки не путаются на поворотах.

     Игрок стартует с двумя жизнями. Если у него не остаётся жизней, он проигрывает. Если игрок проходит все уровни (на данный момент шесть), он выигрывает.

     2 Разработка рабочего проекта

     2.1 Разработка программы

     Для разработки приложения «PacMan» я использовала среду визуального программирования Delphi. Проект программы содержит 1 окно: Form1.

procedure TFmain.FormCreate(Sender: TObject);

var   a,b:byte;

      ImMask:TBitmap;

begin

   Randomize;

   Pic:=TBitmap.Create;

   ImBack:=TBitmap.Create;

   ImMap:=TBitmap.Create;

   ImMask:=TBitmap.Create;

   Pic.LoadFromFile('.\Data\DPacMan.bmp'); // Грузим набор картинок

   ImMap.Width:=23;

   ImMap.Height:=23;

   ImBack.Width:=575;

   ImBack.Height:=575;

   ImMap.Canvas.Brush.Color:=0;

   ImBack.Canvas.Brush.Color:=0;

   // Грузим картинки в imagelist. Дело в том, что прямая загрузка bmp

   // в imagelist через методы FileLoad/ResourceLoad нарушает гамму изображения,

   // (разработчиков убивать надо, за  то, что компоненты по-разному  работают в design и run-time режиме)

   // а загрузка картинки в imagelist в design-time увеличивает размер .exe на 150Кб

   // Можно обойтись вообще без  imagelist и работать через Canvas.CopyRect,

   // но это громоздко и не элегантно.  Получается плохочитаемый код.

   // С imagelist же работать удобно  и наглядно, а скорость не страдает.

   for a:=0 to 3 do

      for b:=0 to 15 do

         begin  ImMap.Canvas.CopyRect(rect(0,0,23,23),Pic.Canvas,rect(b*23,a*23,b*23+23,a*23+23));

            ImMask.Assign(ImMap);

            ImMask.Dormant;

            ImMask.Mask(0);

            ImList.Add(ImMap,ImMask);

         end;

   ImList.DrawingStyle:=dsNormal;

   ImList.GetBitmap(31,ImScoreSeed.Picture.Bitmap);

   ImList.GetBitmap(22,ImScoreTomato.Picture.Bitmap);

   ImList.GetBitmap(23,ImScoreCarrot.Picture.Bitmap);

   ImList.GetBitmap(24,ImScoreGrape.Picture.Bitmap);

   ImList.GetBitmap(25,ImScoreCherry.Picture.Bitmap);

   ImList.GetBitmap(62,ImScoreGhost.Picture.Bitmap);

   ImList.GetBitmap(29,ImExit.Picture.Bitmap);

   ImList.GetBitmap(27,ImStart.Picture.Bitmap);

   ImList.GetBitmap(28,ImLeave.Picture.Bitmap);

   ImList.GetBitmap(38,ImLife.Picture.Bitmap);

   ImList.DrawingStyle:=dsTransparent;

   ImList.Draw(ImScoreGhost.Picture.Bitmap.Canvas,0,0,17);

   ImMap.Width:=575;

   ImMap.Height:=575;

   ImMap.Canvas.FillRect(rect(0,0,575,575));

   ImLogo.Picture.LoadFromFile('.\Data\Logo.bmp');

   State:=stMenu;

   Fmain.DoubleBuffered:=true;

   ShowPanel:=TCanvasPanel.Create(self);

   ShowPanel.Left:=12;

   ShowPanel.Top:=12;

   ShowPanel.Width:=575;

   ShowPanel.Height:=575;

   SHowPanel.Color:=0;

   ShowPanel.Parent:=self;

   ShowPanel.BorderStyle:=bsNone;

   ShowPanel.BevelInner:=bvNone;

   ShowPanel.BevelOuter:=bvNone;

Информация о работе Программирывание на ЯВУ