Пасьянс "Три пика"
Пасьянс "Три пика"
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ ВОСТОЧНО-СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ Кафедра систем информатики КУРСОВОЙ ПРОЕКТ по дисциплине «Программирование» Тема: пасьянс «Три пика» Выполнил: студент гр. №633 Киреев Д. А. Оценка_______ Дата защиты _______________ Руководитель: Алтаев А.А.______________________Нормоконтролер: Тулохонова И.С._________________г. Улан-Удэ 2002 г. ВОСТОЧНО-СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ __________________________________________________________ЭЛЕКТРОТЕХНИЧЕСКИЙ ФАКУЛЬТЕТ Кафедра систем информатики ЗАДАНИЕ на курсовой проект Дисциплина: Программирование_________________________________________________ Тема: пасьянс «Три пика»__________________________________________ Исполнитель(и):_Киреев_Д._А._гр.633-1_________________________ Руководитель: Алтаев А. А.______________________________________ Краткое содержание проекта:___________________________________ 1. Теоретическая_часть:________________________________________________ 2. Практическая_часть:________________________________________________ Сроки выполнения работы по графику: Патентный поиск - __% к __ неделе. Обзор литературы - __% к __неделе. Разработка постановки задачи и модели - __% к __неделе. Оформление отчета - __% к неделе. Защита проекта - ____ недели. Требование к оформлению: Отчет должен представлен в электронной и твердой копиях. Объем отчета должен быть не менее 20 машинописных страниц без учета приложений. Отчет должен быть оформлен по ГОСТу 7.32-81 и подписан у нормоконтролера. Руководитель работы: Алтаев А.А. Исполнитель: Киреев Д.А Содержание Введение 1. Постановка задачи 1.1 Фазы создания видеоигр 1.2 Процедуры и функции 1.2.1 Что такое подпрограмма 1.2.2 Описание процедур 1.2.3 Описание функций 1.3 Модули 1.3.1 Описание модулей 1.3.1 Модуль CRT 1.3.2 Модуль DOS 1.3.3 Модуль GRAPH 2. Решение задачи 2.1 Структурная схема программы 2.2 Условие задачи Заключение Список литературы Приложение Введение. Научно-технический прогресс, набравший к концу ХХ в. головокружительную скорость, послужил причиной появления такого чуда современности как компьютер и компьютерные технологии. Изобретение компьютеров послужило переломным моментом в развитии многих отраслей промышленности, на порядок повысило мощь и эффективность военной техники, внесло множество прогрессивных изменений в работу средств массовой информации, систем связи, качественно изменило принцип работы банков и административных учреждений. Сегодняшние темпы компьютеризации превышают темпы развития всех других отраслей. Без компьютеров и компьютерных сетей не обходится сегодня ни одна средняя фирма, не говоря о крупных компаниях. Современный человек начинает взаимодействовать с компьютером постоянно - на работе, дома, в машине и даже в самолете. Компьютеры стремительно внедряются в человеческую жизнь, занимая свое место в нашем сознании, а мы зачастую не осознаем того, что начинаем во многом зависеть от работоспособности этих дорогостоящих кусков цветного металла. Уже сегодня компьютеры отвечают за наведение и запуск ядерных ракет, за банковские переводы многомиллионных сумм денег и многие другие системы, ошибки в работе которых дорого обходятся людям. К сожалению даже этим не ограничивается зависимость человека от компьютера. Компьютерные игры. С недавних пор это словосочетание прочно вошло в нашу жизнь, каждый, кто имеет компьютер наверняка смог почувствовать их притягательность, видимо, игра заложена в саму природу человека с древнейших времен - выследить зверя, заманить его в ловушку - это тоже своего рода игра. Но теперь мы лишены этого в жизни, а инстинкты остались и они находят свой выход в компьютерных играх. Вы не задумывались, почему процент мужчин среди играющих в компьютерные игры, а особенно в 3D-action в десятки раз больше чем женщин? На мой взгляд, именно из-за того, что мужчина всегда был охотником-добытчиком-воином и нам никуда не деться от 30000 лет сражений с хищниками и между собой заложенных в наших генах. С совершенствованием компьютеров совершенствовались и игры, привлекая все больше и больше людей. На сегодняшний день компьютерная техника достигла такого уровня развития, что позволяет программистам разрабатывать очень реалистичные игры с хорошим графическим и звуковым оформлением. С каждым скачком в области компьютерных технологий растет количество людей, которых в народе называют "компьютерными фанатами" или "гамерами" (от английского "game" - игра). Основной деятельностью этих людей является игра на компьютере, круг социальных контактов у них очень узок, вся другая деятельность направлена лишь на выживание, на удовлетворение физиологических потребностей, а главное - на удовлетворение потребности в игре на компьютере. Разумеется, в полной мере эта характеристика подходит лишь для людей на самом деле фанатически увлекающихся компьютерными играми, когда увлеченность близка к патологии. Но так или иначе бесспорен тот факт, что феномен психологической зависимости человека от компьютерных игр имеет место. Учитывая то, что количество людей, попадающих в эту зависимость, растет с каждым днем, этот вопрос требует изучения со стороны психологической науки. В обществе формируется целый класс людей-фанатов компьютерных игр. Общение с этими людьми показывает, что многим из них увлечение компьютером отнюдь не идет на пользу, а некоторые серьезно нуждаются в психологической помощи. Большинство из них - люди с известными психологическими проблемами: несложившаяся личная жизнь, неудовлетворенность собой, и, как следствие, утеря смысла жизни и нормальных человеческих ценностей. Единственной ценностью для них является компьютер и все, что с этим связано. Проблема существует и требует изучения. Эта работа не претендует на полное научное обяснение обозначенных вопросов и основание теории, ее целью является наметить направление исследований, внести некоторые коррективы в сформировавшееся сегодня в науке представление о взаимодействии человека с компьютером в процессе игры. Я попытаюсь наметить решение таких вопросов, как психологическая специфика ролевых игр, создание классификации компьютерных игр, динамика формирования игровой зависимости, а также рассмотрим механизм образования психологической зависимости от компьютерных игр. А теперь об играх. Первые компьютерные игры появились очень давно, когда еще компьютеров как таковых не существовало, просто язык не поворачивается называть компьютером эти калькуляторы-переростки, размером с динозавра и такие же медлительные. Хотя на тот момент времени даже они были чудом техники. Первой компьютерной игрой считается "Теннис для двоих" изобретенная в 1958г. американским ученым Вильямом Хайджинботэмом. Эта игра заключалась в том, что два человечка нарисованные на экране осциллоскопа перебрасывали мячик через сетку (черточку посередине экрана). О том, что последовало далее, знает, наверное, каждый - совершенствовались компьютеры, совершенствовались компьютерные игры. На сегодняшний момент мы имеем несколько направлений, в которые развились компьютерные игры - это игровые автоматы, телевизионные приставки и, конечно, непосредственно компьютерные игры. В процессе формирования компьютерных игр накопилось множество тем для обсуждения. Множество как специфических вопросов - от тенденций текущего момента и опыта слияния игр и кино до, скажем, эпической проблемы влияния жестокости в компьютерных играх на детское сознание. Эти вопросы я и хочу рассмотреть в своем реферате.Последние достижения в области электроники и программирования приблизили наши фантазии о трехмерных видеоиграх к осязаемой реальности. Разработчики игр сегодня могут создать трехмерные игры для недорогого ПК, позволяющие игрокам получить ощущения, всего несколько лет назад казавшиеся недоступными. Говоря по правде, и в прошлом были трехмерные имитаторы полетов и несколько пространственных игр. Но все они были очень медленными и нуждались в мощных компьютерах. Естественно, это резко сужало круг потенциальных игроков. Все эти ограничения заставляли программистов искать пути создания нетрадиционных методов рендеринга. Эти новые способы были очень просты и имели производительность, еще пару лет назад считавшуюся невозможной. Компьютерные игры так прочно вошли в нашу жизнь, что теперь практически невозможно представить персональный компьютер, на котором не было бы хоть одной из них. Ни для кого не секрет, что компьютеры уже давно достигли уровня быстродействия необходимого для работы в основных офисных приложениях. Дальнейшее увеличение производительности подстегивает только всеобщая любовь к компьютерным играм, производители которых становятся все более требовательными к ресурсам компьютеров. Меня тоже не миновало увлечение компьютерными играми. Играл я много и с увлечением. Первые игры были примитивными и даже не заслуживают упоминания, а потом были Galaxy, Wolf3D, Doom, Duke Nukem, Doom II, Dune II, Quake, WarCraft, Quake II, StarCraft. Давайте на секунду отвлечемся оттого, что живем в 2002 году и вспомним, чем были компьютерные игры в 1992. Выскочим из ежедневности и посмотрим, что изменилось за 10 лет - поверьте, из этого следуют небезынтересные вещи. Итак, в 1992 - как, впрочем, и несколько лет до этого - игр было мало. Тогдашние геймеры с легкостью могли перечислить все интересное, что было на рынке, - всех жанров. А хардкорщики могли дать еще и краткую характеристику каждой игре, поскольку играли во все. Опять-таки, все и во всех жанрах. На самом деле, жанров просто не было: малое количество игр позволяло перебрать их все и дальше делить на хорошие и плохие, а уж на вертолете летать или королевством править - какая разница? Соответственно, единой была тусовка. Мы понимали друг друга с полуслова, и "хиты" у нас были одни - Dune 2, King's Bounty, Star Control 2, F-117, Wolfenstein. Очевидно, царица игр - Civilization. Самые внимательные заметили чехарду с историческими периодами в предыдущем абзаце. Не суть важно, когда именно что выходило и когда именно ситуация стала меняться; важно то, что в какой-то момент появилось несколько очень хороших игр. Вещей, на голову выше всех предыдущих, - и самих по себе, и - в некоторых случаях - за счет наличия multiplayer'а. Который многопользовательский режим. В первую очередь, конечно, сюда попадают - Doom, C&C, Warcraft; но это - только наиболее яркие и очень multiplayer'ные представители. А тенденция распространялась на всю область - от стратегий до квестов. Заключалась эта тенденция в следующем: все увидели, сколько бабок можно срубить на компьютерных играх. И захотели тоже. Причем как срубить бабок на собственно компьютерных играх, никто не знал. Все видели, как можно срубить бабок на Doom'е. И все стали делать Doom. Наступила эпоха клонов и формирования рынка. Дяди с деньгами находили команды программистов, бредивших искренней и глубоко творческой идеей сделать свой C&C, и что-то там организовывали. Вещи, непохожие на китов и "патриархов", делались только с позиционированием "непохожие на китов и патриархов". То есть заявлялся либо Doom, либо не-Doom; иногда - чуть ли не анти-Doom. То делался "выход старого хита на новый уровень", то "вещь, принципиально не похожая на существующие хиты". Все вертелось вокруг клонирования. Как это сказалось на тусовке? Прежде всего, новые игры требовали уже больше времени - особенно при наличии multiplayer'а; можно было грохать все свободное время на одну игру в течении нескольких недель, и не тосковать без чего-то нового. Хотелось похожего - и люди играли в KKND, потому что Command&Conquer уже видеть не могли, а "стратегии" хотелось. Приблизительно в то же время появились первые человеческие журналы - точнее, первый человеческий журнал, - который и послужил, по Владимиру Ильичу, "не только агитатором". Деление игр на жанры стало очевидным, понятие "клон" - ключевым, народ четко разбился на группы. Параллельно была налажена торговля пиратскими компакт-дисками - тусовка резко увеличилась за счет доступности материала на каждом углу. Новые люди даже и не пытались по инерции играть "во все" - в отличие от "могикан"; новые рубились в свой жанр и чхать хотели на существование чего-либо еще. Тусовка стала большой и уже разномастной. Появление Quake'а выделило еще одну группу игроков - и еще одну группу игр. Звучит глупо, но именно в такой последовательности - игроков и игр. Multiplayer был настолько развит, что появилась такое понятие, как мастерство. Абсолютно незабываемые ощущения - игра, при которой тебе кажется, что у противника есть карта уровня, точка на ней - ты, и абсолютно не промахивающаяся ракетница. "Большой брат смотрит на тебя". Человек, не игравший в Quake с мастером, просто не знает, что такое Quake (хотя именно такой человек и думает, что умеет играть в Quake). А мастерство принесло спорт. На самом деле, началось все еще с Doom'а, - но в Quake уже стали играть не на квартирах, а во все более развивавшихся клубах - организованно. Чемпионаты, тренировки по нескольку часов, если реально - профессиональные лиги, которые дальше развивались вообще независимо от остального "геймерства". Продолжалось это все достаточно долго - года до 98. Во-первых, идеи, заложенные в исходных хитах, были уж больно богатые; во-вторых, совершенствовалась технология - и разработчики могли кормить народ в клонах все новыми и новыми фишками - тут еще подоспели 3D-ускорители и их непрерывный рост... Клоны оттачивали идеи, тусовка росла, журналов стало больше - в общем, мясо нарастало на кости. Счастливые глаза, ощущение того, что процесс пошел. Попытки осмыслить новый уровень развития и описать его несколькими формулами - "игры бывают следующих видов...". А потом надоело - потихоньку, но от клонов начало тошнить. Первые писки стали раздаваться как раз в 97, в 98 все принципы начали рушиться. Все заявляли оригинальность жанров; все упирали на привнесение в игру сюжета, смешанного с игрой, смешанными с традициями, смешанными с заимствованием из кинематографа и древнекитайской чайной церемонии. Все говорили о передовой технологии - но так, уже порядка ради, и журналы лениво констатировали: "Очевидно, графика на уровне", - и переходили к обсуждению новых концептов. Понеслась лавина всяческой новизны - и одновременно стала критической масса игр. И степень их раскрученности. Игр стало настолько много, что играть во все было уже невозможно. К 99 клон стал архаикой - за исключением ситуаций с проверенными временем сериалами - и уже нельзя было поиграть в одну игру и судить о трети рынка. Игры дошли, наконец, до широкого, играющего так, просто, без увлеченности потребителя - человека одной игры; и тусовка окончательно "обезличела". От хардкорщиков, с опытом, с классикой за плечами, воющих при одной мысли о том, что можно играть в какую-то попсу - и людей, которые играют в компьютерные игры с удовольствием, но иногда. По две новых игры в год. Я еще не затрагиваю сейчас вопрос неожиданной популярности назвавших себя играми кукол Барби и симуляторов охоты на оленей - бешеной, невероятной популярности по результатам голосования долларом. Потому что долларом - и это не у нас. Но и у нас масса народа будет играть в попсу - и для них будут эту попсу специально делать. И это тоже будет частью тусовки, и это тоже будет играми. Параллельно с переменами на рынке игр пережили пару Quake'ов и поколений самих себя спортсмены, и руливший в свое время Cookie "ушел от дел" и пьет свое, кажется, вебмастерское пиво и смотрит вместе с другими бывшими отцами на новые поколения увлеченно тренирующихся в одну-единственную игру. Тусовка меняется, тусовка уже огромна и продолжает расти; тусовка состоит из очень разных, ничего не знающих друг о друге людей. У тусовки появилась история - а компьютерные игры становятся частью культуры человечества: и с точки зрения вовлеченных в индустрию денег, и с точки зрения масштабного влияния на сознание, и с точки зрения творчества. Все существующее сегодня многообразие компьютерных игр можно условно разделить на три в значительной степени перекрывающихся класса: позиционные, динамические и зрелищные. Позиционные - это игры, в которых ЭВМ просто заменяет человеку партнера, в традиционных средствах проведения досуга: шашки, шахматы. Сюда же относятся и более специфические игры, по условиям которых человеку предлагается, например, распределить за пультом ЭВМ государственный бюджет «в некотором королевстве», существующем враждебном окружении, строить «стратегические планы» перемещения войск. Результаты введенных с пульта решений отражаются на экране постепенно все более усложняющейся военной и «межгосударственной» обстановке. Исход игры: процветание и территориальный рост «алгоритмизованного королевства» имеющего разорения, падения захваченных врагом провинций, а затем гибель метрополии - определяется постепенно растущим искусством играющего в решении заданного типа многокритериальных задач. Динамические игры, требуют от участника быстрой «моторной» реакции много меняющуюся в кадре экрана обстановку, т. к. протекают в реальном маштабе времени. Сюда относятся большая часть цветных видиоигр: от остейших компьютерных вариантов “пингпонга”, тира с движущимися по экрану мишенями до значительно боле трудных в освоении приключенческих игр, в которых идет острая многофакторная борьба по быстро усложняющимся в ходе сеанса правилам Например, это может быть борьба «на выживание» с темными силами, которых обычно изображают на экране «пришельцы других миров», мифические монстры или какая- то иная «нечистая сила». Участник игры управляет «поведением своего» персонажа, который, повинуясь его командам, ловит противника, уклоняется от преследования.Зрелищные игры иногда определяются как диалоговые или «интерактивные» фильмы, образующие различные типы занимательных кино историй, которые демонстрируются. 1. Постановка задачи. 1.1 Фазы создания видеоигр.Видеоигра, как и любой другой программный продукт, должна создаваться по определенной методике. Это значит, что в процессе разработки игры необходимо придерживаться определенных правил и рекомендаций. Итак:Во-первых, нужна идея.Если есть понимание того, что будет в игре, то есть смысл написать что-то типа сценария.Затем надо разнообразить каждый из уровней какими-нибудь неожиданными ходами, целями и т.д. Нужно заинтересовать игрока, заставить его проходить уровень за уровнем в вашей игре.Если у вас есть понимание каждого уровня игры, то имеет смысл подумать о структуре самой игры. Как будут себя вести игровые объекты, как они будут взаимодействовать, какие возможности получит игрок?Для осуществления задуманного необходим минимальный набор инструментальных средств:Программа для рисования битовых образов;Программа для анимации битовых образов;Си-код для бит-блиттинга (блокового перемещения битовых образов), изменения видимого размера объектов (масштабирования) и рисования линий;Средства для работы со звуком;Си-код для работы с устройствами ввода;Инструменты для рисования уровней и сохранения их на диске.1.2 Процедуры и функции.Всякую сложную задачу для лучшего понимания и облегчения ее решения полезно разделить на простые подзадачи. Если программа предназначена для решения определенной комплексной задачи, то должен существовать способ разделения программ на некоторые структурные единицы.1.2.1 Что такое подпрограмма.Часто в программах возникает необходимость выполнять (не циклически) несколько раз одну и ту же последовательность операторов. Конечно, можно соответствующий фрагмент скопировать в программе несколько раз в нужные места, однако при таком подходе текст программы получается обширным и трудным для понимания. Кроме того, для объемной программы требуется больше памяти. Поэтому для упрощения текста программы, а также для исключения необходимости заниматься копированием предложена концепция подпрограмм. Функционально самостоятельная часть программы, обладающая собственным именем и набором локальных имен, известна как подпрограмма. Вызов подпрограммы осуществляется по ее имени из любых точек тела программы и любое количество раз. Помимо упрощения текстов программ и избавления от копирования, подпрограммы - это еще средство структурирования программ. Идея в том, что чтобы программа состояла не из огромного числа операторов, а из относительно самостоятельных частей (подпрограмм), каждой из которых назначена отдельно, сравнительно узкая роль. Причем подпрограммы могут включать в себя другие подпрограммы, т. е. допускается вложенность подпрограмм. Подпрограмма, чтобы ее можно было вызывать в программе, должна быть объявлена в разделе описаний программы. Объявить подпрограмму - значит указать ее заголовок (с используемыми в ней формальными параметрами), описать локальные переменные и, наконец, задать ее тело. В разделе описаний подпрограммы могут быть объявлены новые подпрограммы, которые, в свою очередь, также могут включать подпрограммы. Иными словами, возможно множество уровней вложения подпрограмм. В языке программирования Turbo Pascal приняты два вида подпрограмм: процедуры и функции, которые мы рассмотрим. 1.2.2 Описание процедуры. Структура процедуры повторяет структуру программы - в ней также есть заголовок, раздел описаний и тело. Начинается процедура с зарезервированного слова PROCEDURE, за которым через пробел следует имя процедуры. Строка заголовка должна обязательно завершаться точкой с запятой. Затем идет раздел описаний процедуры. После раздела описаний процедуры следует ее тело. Тело процедуры содержит последовательность операторов, заключенных в операторные скобки (представляющие собой пару зарезервированных слов BEGIN … END). 1.2.3 Описание функции. Помимо процедур, в Turbo Pаscal применяются подпрограммы и иного вида - функции (чем отличаются функции от процедур, мы выясним позже). Структура функции (как и процедуры) повторяет структуру программы. Первой идет строка заголовка, которая начинается с зарезервированного слова FUNCTION. За ним через пробел следует имя функции, далее (в скобках) перечень формальных параметров, а затем двоеточие, за которым указывается тип значения, возвращаемого функцией. Завершается строка заголовка точкой с запятой. Сразу под заголовком функции расположен ее раздел описаний. После раздела описаний функции следует ее тело. Тело функции содержит последовательность операторов, заключенных в операторные скобки. Кстати, в отличие от процедур, активизируемых с помощью оператора вызова (включающего имя процедуры и, может быть, фактические параметры), имя функции должно упоминаться в выражении. У функции (в отличие от процедуры) имеются и другие особенности. Например, в результате использования функции возвращается некоторое значение. Тип возвращаемого значения указывается в описании функции (в заголовке). Если имя используется только для ее вызова, то с именем функции ассоциируется некоторое возвращаемое значение. Чем еще функции отличаются от процедур? Поскольку функция должна возвращать некоторое значение, в ее теле обязательно должен присутствовать оператор присваивания, в правой части которого указано имя функции. Когда лучше использовать процедуры и когда функции? Это зависит от конкретного случая. Если подпрограмма вычисляет единственный результат, ее можно реализовать как функцию. Если же от подпрограммы требуется вычислить несколько значений, ее лучше оформить в виде процедуры. 1.3 Модули. 1.3.1 Описание модулей. В Паскале под модулем понимают чаще всего подразумевают комплекс подпрограмм, который находится в отдельном файле и может быть использован другими программами. Модуль состоит из заголовка, интерфейсной части, исполнительной части и секции инициализации. Заголовок модуля похож на заголовок программы, однако вместо слова program ставится зарезервированное слово unit. Модуль должен находится в файле, имя которого совпадает с именем в заголовке, файл должен иметь расширение .pas. Интерфейсная часть служит для взаимодействия основной программы с модулем. Она начинается с зарезервированного слова interface. В ней должны быть указаны константы, типы данных, переменные, процедуры и функции, которые может использовать основная программа, вызывающая этот модуль. Если модуль использует еще какие-то модули, то они должны быть указаны в интерфейсной части следующим образом: пишется зарезервированное слово uses, затем перечисляются необходимые модули (заметим, что так же обозначаются и модули в разделе описания основной программы). Цепочка используемых модулей может быть сколь угодно длинной, однако она не может содержать циклы. Например, допустима цепочка: unit A; uses B,C; ... end. unit B; uses C,D; ... end. А цепочка unit A; uses B; ... end. unit B; uses A; ... end. недопустима, поскольку она содержит цикл A uses B uses A. Процедуры и функции тоже объявляются в интерфейсной части модуля, но при этом разрешено лишь перечислять их заголовки, подобно предварительному объявлению с директивой forward. В исполнительной части модуля содержаться процедуры и функции модуля. Здесь могут быть так же и локальные типы, константы, метки или переменные. Исполнительная часть начинается с зарезервированного слова implementation, далее следует описания локальных констант, типов данных и переменных, а затем обычное описание процедур и функций, но с использованием сокращенных заголовков, т.е. без указания в них параметров. Иногда при вызове модуля следует произвести некоторые действия, например инициализировать какие-либо переменные, установить какие-либо связи и т.д. Все эти действия указываются в секции инициализации, которая выглядит, как обычное тело программы: между словами begin и end с точкой находятся операторы. Если при вызове модуля никаких подобных действий производить не нужно, то секция инициализации состоит лишь из слова end с точкой. Чтобы использовать процедуры, функции и другие объекты модуля в основной программе, необходимо написать зарезервированное слово uses, затем имя модуля. После этого объекты модуля можно использовать так, как если бы они были описаны в основной программе. Рассмотрим теперь модули, которые поставляются в стандартном комплексе Turbo Pascal, но функции и процедуры которых не являются стандартными. 1.3.2 Модуль CRT. Модуль Crt содержит процедуры, функции и константы для работы с экраном в текстовом режиме, работы с клавиатурой и генерации звука. Подпрограммы этого модуля позволяют управлять текстовыми режимами экрана, использованием цветов и окнами, яркостью свечения символов, а также расширенными кодами клавиатуры и звуком. В текстовом режиме весь экран разбивается на строки (их, как правило, 25), а каждая строка - на отдельные позиции (их обычно по 80 в каждой строке) находится в левом верхнем углу экрана. 1.3.2 Модуль DOS. Здесь собраны процедуры и функции (а также переменные и константы), позволяющие из программ получать доступ к средствам MS DOS и управлять файлами. 1.3.3 Модуль GRAPH. Содержит множество подпрограмм, а также констант, типов и переменных, предназначенных для управления графическим режимом экрана. Ресурсы модуля позволяют обратится к любому пикселю экрана и управлять его свечением. Запустить программу, использующую модуль GRAPH, без графического драйвера (одного или нескольких - это файла с расширением .BGI) не удастся. Указанные драйверы не входят в состав модуля, но поставляются с Turbo Pascal (они содержаться в каталоге BGI). А если в программе используются векторные шрифты, в дополнение е драйверам потребуются также файлы шрифтов (файлы с расширением .CHR). 2. Решение задачи. 2.1 Структурная схема программы. Итак, представим схему программ. Program xxx;{заголовок необязателен} Const раздел описания констант Label Раздел описания меток Type Раздел описания типов Var Раздел описания переменных Описания подпрограмм Begin Тело программы End. В первой строке схемы находится заголовок программы. Заголовок начинается зарезервированным словом PROGRAM, за которым следует имя программы, которое ей было присвоено при создании. Завершается заголовок точкой с запятой. В Turbo Pascal заголовок не является обязательным элементом программы. После заголовка на схеме представлены разделы описания констант, типов, меток и переменных. Причем Turbo Pascal не предписывает порядок, в котором должны следовать эти разделы. Кроме того, Turbo Pascal вовсе не предписывает, что в программе должно быть не более одного раздела описания типов, меток, констант или переменных и что все соответствующие описания должны быть собраны в едином разделе. Иными словами, при необходимости ничто не мешает создать в программе два раздела описаний меток или два раздела описаний типов, например. После раздела описаний меток, типов, констант и переменных идут описания подпрограмм (если в данной программе используются подпрограммы). Описания подпрограмм следует одно за другим, причем если одна подпрограмма вызывается из другой, первая должна быть описана раньше. После описания подпрограмм начинается тело программы (или ее раздел операторов). Оно всегда открывается зарезервированным словом BEGIN и завершается словом END (с точкой). 2.2 Условие задачи. Пасьянс «Три пика» раскладывается 52 картами, 28 карт выкладываются в форме снежных горных пиков одна на другую. Остальные 24 помещаются в колоду. Задача - очистить вершины от снега, т.е. убрать с «пиков» все карты. Все карты, кроме тех, что в пиках не закрыты другими, лежат рубашками вверх. Игра начинается с того, что открываем первую карту из колоды и ищите карту, достоинство которой отличается то открытой на единицу (больше или меньше). Теперь эта карта становится верхней в открытой колоде. Нужно стараться найти как можно более длинную цепочку. Если не можем найти карту, достоинство которой на единицу отличается от верхней открытой, открываем следующую карту из закрытой колоды. Доступны только карты лежащие сверху, т.е. не заслоненные другими. Начисление очков. За каждую карту, взятую из колоды, у вас вычитается 5 очков, так же за каждые 10 секунд вычитается по 1 очку. За каждую убранную из пика карту вы получаете на 1 очко больше, чем за предыдущую (счет растет до тех пор, пока не возьмем новую карту из колоды). После взятия новой карты из колоды очки снова начисляются с 1. Если дошли до вершины пика, т.е. удалили верхнюю карту, то дается дополнительно 13 очков, и за каждый последующий пик на 13 очков больше. Заключение. В данной курсовой работе я попытался рассмотреть важный раздел современного программирования - создание компьютерных игр. Были определены основные фазы создания видеоигр. Я реализовал игру пасьянс «Три пика» и тем самым приобрел новые и укрепил старые навыки программирования на языке Turbo Pascal. Список литературы. 1. Е. И. Емелина Основы программирования на языке Паскаль:М.:«Финансы и статистика»,1997. 2. О. А. Меженный Самоучитель Turbo Pascal:М., СПб., Киев:«Диалектика»,2003. 3. В. И. Грызлов, Т. П. Грызлова Турбо Паскаль 7.0:М.:«ДМК»,1998. 4. В. В. Фаронов Turbo Pascal 7.0:М.:«Нолидж»,1999. Приложение. Program ThreePeaks; Uses EngPeaks,IntPeaks,CRT,DOS; Procedure Init; begin InitCards; GraphInit; DrawCards; DrawColode; DrawScore; DrawTime; ShowMouse; end; Procedure CalcTime;{Считаем время} begin if GameBegin and ((CurTime-BeginTime)/18.2 >1) then {Считаем время} begin inc(seconds); if (Seconds mod 10)=0 then {каждые 10 секунд -1 очко} begin dec(Score); DrawScore; end; BeginTime :=curtime; DrawTime; end; end; Type TUserInfo=record UserName: string[50]; wcnt: word;{Сколько побед} dcnt: word;{Сколько поpажений} AllScore: longint;{Всего очков} end; Function DefeatOrWin(var UInf: TUserInfo):boolean; {Проверяем проигрыш или выйгрыш} var ch: char; begin if Defeat or (MoveCount=28) then {Если проиграли или выиграли} begin if Defeat then begin DrawText('You are lose game'); inc(UInf.dcnt); UInf.AllScore := UInf.AllScore+Score; end else begin DrawText('You are win game'); inc(UInf.wcnt); UInf.AllScore := UInf.AllScore+Score; end; repeat if keypressed then ch:=readkey; until (ch=#13) or (ch=#27); if ch=#27 then begin DefeatOrWin := true; exit; end; CloseGr; Init; end; DefeatOrWin := false; end; Function GetUserName:string; var name: string[50]; begin ClrScr; write('Enter user name: '); readln(name); GetUserName := name; end; Procedure SaveToFile(UInfo: TUserInfo); var i: longint; f: file of TUserInfo; buf: TUserInfo; begin i := 0; assign(f,'peaks.dat'); {$I-} FileMode := 2; reset(f); {$I+} if IOResult<>0 then begin rewrite(f); write(f,UInfo); close(f); exit; end; repeat read(f,buf); inc(i); until (i=filesize(f)) or (UInfo.UserName=buf.UserName); if (UInfo.UserName=buf.UserName) then {Если пользователь уже есть} begin buf.wcnt := buf.wcnt + UInfo.wcnt; buf.dcnt := buf.dcnt + UInfo.dcnt; buf.allscore := buf.allscore + UInfo.allscore; seek(f,filepos(f)-1); write(f,buf); close(f); exit; end; seek(f,filesize(f)); write(f,UInfo); close(f); end; Procedure DisplayStat; var i: longint; f: file of TUserInfo; buf: TUserInfo; begin assign(f,'peaks.dat'); {$I-} reset(f); {$I+} if IOResult<>0 then exit; for i:=1 to filesize(f) do begin read(f,buf); with buf do writeln('Name: ', UserName,' Wins: ',wcnt, ' Defeats: ',dcnt, ' Score: ', AllScore); if (i mod 23) = 0 then begin writeln; writeln('Press any key to continue...'); readkey; ClrScr; end; end; close(f); writeln; writeln('Press any key to exit...'); readkey; end; var ch: char; UserInfo: TUserInfo;{Информация об играющем} begin ChDir(workdir); {Переходим в каталог откуда запущенна программа} randomize; with UserInfo do begin UserName := GetUserName; wcnt :=0; dcnt :=0; end; Init; repeat {Рабочий цикл программы} if keypressed then ch:=readkey; {Сканируем нажатия клавиш} ScanMouse; {Сканируем мышь} CalcTime;{Считаем время} until (ch=#27) or DefeatOrWin(UserInfo); CloseGr; if (UserInfo.wcnt>0) or (UserInfo.dcnt>0) then SaveToFile(UserInfo); DisplayStat; ClrScr; writeln('3 Peaks'); writeln('ver. 1.0'); Writeln('(c) 2004 by Denis Kireev') end. {Конец программы}
|