Разработка компьютерной игры «Косынка»
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ,
молодежи и спорта УКРАИНЫ
Донецкий Национальный Технический Университет
Институт Информатики
и Искусственного Интеллекта
| Д 040303.5.12.10/908КР | Кафедра системного анализа и моделирования |
КУРСОВОЙ ПРОЕКТ
по дисциплине: «Программирование и алгоритмические языки»
Тема:
«Разработка компьютерной игры «Косынка»
| Руководители:
____________А.Н. Шушура (дата, подпись) ____________М.С. Полуказакова (дата, подпись) Разработал: __________ст. гр. САУ-10Лапеко В.Н |
Донецк 2011
| СОДЕРЖАНИЕ Введение………………………………………………………… 1. Постановка
задачи……………………………………………………………… 2. Объектно-ориентированный анализ предметной области…….. 3. Результаты
проектирования………………………………………… 4. Результаты
комплексного тестирования…………… Выводы……………………………………………………………… Использованная
литература…………………………………………………… Приложение
А. Руководство пользователя……………… Приложение
Б. Листинг программы………………………………… |
4 5 6 9 11 16 17 18 19 | |||||
| Разработал | Фамилия | Дата | Подпись | 040303.5.12.10/908КР | Лист | |
| Ст. гр. САУ-10 | Лапенко В.Н | 3 | ||||
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ,
молодежи
и спорта УКРАИНЫ
ДОНЕЦКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Факультет: Информатики и искусственного интеллекта
Кафедра: Системного анализа и моделирования
Специальность:
Системы управления и автоматики
ЗАДАНИЕ НА КУРСОВОЙ ПРОЕКТ
по дисциплине
«Программирование и
| Студенту | Лапенко Владимиру Николаевичу | группы | САУ-10 | ||||||
| (фамилия, имя, отчество) | |||||||||
| Тема работы | Разработка компьютерной игры «Косынка» | ||||||||
| Исходные данные к проекту | Необходимо реализовать работу с классами с | ||||||||
| целью моделирования компьютерной игры «Косынка» | |||||||||
| Перечень искомых результатов | Программный продукт, реализующий | ||||||||
| компьютерную игру «Косынка» в оконном графическом интерфейсе | |||||||||
| Рекомендуемая литература | Динман М.И. С++. Освой на примерах. | ||||||||
- СПб.: БХВ-Петербург, 2006 – 384 с., Мартин Р. С. Чистый код: создание, | |||||||||
Анализ и рефакторинг. СПб.:Питер, 2010. – 464с. | |||||||||
| Дата выдачи задания |
|||||||||
| Дата защиты проекта | 21.12.11 | ||||||||
| Руководитель | доц. А.Н. Шушура | ||||||||
| (подпись) | (должность, Ф.И.О.) | ||||||||
| асс. М.С. Полуказакова | |||||||||
| (подпись) | (должность, Ф.И.О.) | ||||||||
| Разработчик | В.Н.Лапенко | ||||||||
| (подпись) | |||||||||
Введение
Развитие
компьютерных технологий в течение
последних нескольких десятилетий
происходило удивительно
C# — объектно-ориентированный язык программирования. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft .NET Framework и впоследствии был стандартизирован как ECMA-334 и ISO/IEC 23270.
C# относится
к семье языков с C-подобным
синтаксисом, из них его
Переняв многое от своих предшественников — языков C++, Java, Delphi, Модула и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем, например, C# не поддерживает множественное наследование классов (в отличие от C++).
В связи с этим, для разработки компьютерной игры «Косынка» за основу был взят язык программирования C#.
1 ВЫБОР ЯЗЫКА ПРОГРАММИРОВАНИЯ
C#
(произносится си шарп) — объектно-ориентированный
язык программирования. Разработан в 1998—2001
годах группой инженеров под руководством
Андерса Хейлсберга в компании Microsoft как
язык разработки приложений для платформы
Microsoft .NET Framework и впоследствии был стандартизирован
как ECMA-334 и ISO/IEC 23270.C# относится к семье
языков с C-подобным синтаксисом, из них
его синтаксис наиболее близок к C++ и Java.
Язык имеет статическую типизацию, поддерживает
полиморфизм, перегрузку операторов (в
том числе операторов явного и неявного
приведения типа), делегаты, атрибуты,
события, свойства, обобщённые типы и методы,
итераторы, анонимные функции с поддержкой
замыканий, LINQ, исключения, комментарии
в формате XML.Переняв многое от своих предшественников
— языков C++, Java, Delphi, Модула и Smalltalk — С#,
опираясь на практику их использования,
исключает некоторые модели, зарекомендовавшие
себя как проблематичные при разработке
программных систем, например, C# не поддерживает
множественное наследование классов (в
отличие от C++)
1.2Особенности языка
C# разрабатывался
как язык программирования
2ПОСТАНОВКА ЗАДАЧИ
Во время
игры требуется собрать четыре стопки
карт разной масти так, чтобы они
шли в порядке возрастания (туз,
двойка и до короля).В игре используется
одна колода из 52 карт. В самом начале игры
мы имеем семь стопок карт – в первой стопке
одна карта, во второй две, и так до семи
– всего 28. Только верхняя карта лежит
картинкой вверх – остальные вниз. Справа
сверху четыре ячейки, в которые и нужно
собрать стопки карт, о которых говорилось
выше, – так называемый дом.Карты можно
перемещать между стопками только по конкретным
правилам: в порядке убывания карты (король,
дама,… двойка, туз). Например, на даму
можно положить только валета, а на двойку
туз. Помимо этого, на чёрную карту можно
положить только красную, и наоборот. Иными
словами, на червовую даму можно положить
валета пик, но никак не валета бубей. Аналогично
картам, перемещать можно и уже собранные
стопки .Начинать заполнение ячеек дома
нужно с туза. Иначе нужно перемещать карты
между столбцами до тех пор, пока не будет
найден туз. Чтобы переместить карту в
дом, достаточно перетащить её в ячейку
или щёлкнуть по ней дважды.Также в игре
косынка присутствует колода – она находится
в левом верхнем углу. Из неё можно брать
карты, для этого нужно нажать на неё. Если
колода закончилась, то при следующем
нажатии по ней, она будет перетасована.
3 Диаграмма классов служит для представления статической структуры модели системы в терминологии классов объектно-ориентированного программирования. Диаграмма классов может отражать, в частности, различные взаимосвязи между отдельными сущностями предметной области, такими как объекты и подсистемы, а также описывает их внутреннюю структуру и типы отношений.
4 Цель игры:
. Игрок должен разложить по возрастанию все предложенные карты в четыре стопки (по количеству мастей), начиная от туза и заканчивая королём. Карты одной масти должны находиться только в одной стопке. Выбирать карты можно из колоды, находящейся слева от четырёх стопок, либо из семи рядов карт, в каждой из которых находится от одной до семи карт соответственно. Собравший все карты в четыре стопки игрок считается победителем. Чем меньше затрачено времени на прохождение кона и чем больше очков было набрано — тем лучше. По окончанию игры карты «разлетаются» по игровому столу.
У игрока есть дополнительные
возможности: выбор цвета «рубашки»
у карт (при каждом входе в программу
задаётся случайная «рубашка»), а
также выбор способа подсчёта
(на очки, виртуальные деньги или
вовсе без него), способ сдачи карт
из колоды (по одной или по трём) и включение
или выключение отсчёта времени, строки
состояния и перетаскивания контура.
4.1
Критерии Начисление Очков
При «стандартном» начислении очков за перемещение карты из колоды в столбец начисляется 5 очков, за добавление карты в ячейку дома — 10.
Если
игра занимает более 30 секунд, то можно
также получить бонус за скорость.
Формула бонуса: 700 000 разделенное
на общее число секунд игры. Таким
образом, максимальный счет при «стандартном»
начислении очков — 24 113
5 РЕЗУЛЬТАТЫ
КОМПЛЕКСНОГО ТЕСТИРОВАНИЯ: В игре «Косынка» используются
карты одной колоды (52 карты). В начале
игры 28 карт разбиты на семь столбцов.
В первом столбце одна карта, во втором
— две и т. д. Верхняя карта каждого столбца
лежит картинкой вверх, все остальные
лежат рубашкой вверх.
5.1В процессе
игры можно переносить карты,
как одну так и несколько
при этом набирать множиство очков
.
5.2 Так выглядит
программа после перемещения нескольких
карт
5.3 Так же можно нажать кнопку “Файл” котороя вам предложит выбор “Новая Игра” или “Выход”
”
Результатом выполнения данного курсового проекта является рабочая программа, позволяющая осуществлять компьютерную игру «Косынка».
Достоинством данной программы можно считать ее небольшой размер, легкость в эксплуатации.
К недостаткам можно причислить большое количество аналогичных программ и сложность кода. При необходимости, код можно будет упростить в последующих версиях данной компьютерной игры.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
- Стенли Б. Липман , ЖозиЛажойе - «Язык программирования С++. Вводный курс» – ДМК, Москва, 2003, 400 с.
- Харви Дейтел, Пол Дейтел – «Как программировать на С++», Москва,2003, 1200 с.
- Бьярн Страустрап - «Введение в язык Си++" – Питер, Москва,1995
- Марченко А.Л. - «C++. Бархатный путь» - АСТ, Москва, 2000, 700 с.
- Б. Керниган, Д. Ритчи - «Язык программирования Си» - Невский Диалект, Санкт-Петербург, 2001
- Брюс Эккель, ЧакЭллисон – «Философия C++. Практическое программирование» – Питер – 2004
- Дж. Либерти – «C++. Энциклопедия пользователя» - Москва, 1999, 1250 с.
8. Visual
C# Создание приложений для Windows.pdf
В.В.Лабор Минск,Харвест,2003 стр 385.
9. Язык программирования С# 2005 и платформа .NET framework
v2.0.pdf
3-е издание
Э.Троелсен
"Вильнюс",Москва-Санкт-
10. Вильямс - C# 2005 и платформа
.NET 3.0 для
профессионалов.2008.djvu
К.Нейгел,Б.Ивьен
"Диалектика",Москва-Санкт-
Приложение А. Руководство пользователя:
Советы и подсказки
В тупике? Нажмите клавишу H, чтобы подсказала, какие карты следует использовать далее. Неплохой способ освоиться для начинающих.
Стопки — это группы открытых карт, собираемых в столбцах. Старайтесь по возможности не делать одну стопку намного длиннее других. При этом на поле образуется одна очень длинная стопка, что затрудняет другие ходы.
Чем больше
в столбце карт, лежащих рубашкой
вверх, тем больше смысла сначала
открыть их. Это увеличит шансы
на победу и число возможных ходов.
Pile.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WindowsFormsApplication1
{
classPile
{
protectedStack<Card> cards;
privateint xCoord;
privateint yCoord;
//конструктор
public Pile()
{
cards = newStack<Card>();
}
//удалениекартыизстопки
publicCard removeCardFromPile()
{
return cards.Pop();
}
//добавление карты в стопку
publicvoid addCardToPile(Card insertedCard)
{
cards.Push(insertedCard);
}
//возвращает массив карт конкретной стопки
publicCard[] getPile()
{
return cards.ToArray();
}
//возвращает картy (без извлечения)
publicCard peekCard()
{
return cards.Peek();
}
//количество карт в стопке
publicint countCardsInPile()
{
return cards.Count;
}
//свойства
//координата местонахождения базы (X)
publicint X
{
get
{
return xCoord;
}
set
{
xCoord = value;
}
}
//координата местонахождения базы (Y)
publicint Y
{
get
{
return yCoord;
}
set
{
yCoord = value;
}
}
}
}
Base.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WindowsFormsApplication1
{
//классдляописаниябазы
classBase : Pile
{
//типмасти
privateCard.SuitTypes suit;
//свойства
publicCard.SuitTypes Suit
{
get
{
return suit;
}
set
{
suit = value;
}
}
}
}
Card.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WindowsFormsApplication1
{
classCard
{
//цветмасти
publicenumColor
{
//красный
red = 0,
//черный
black = 1
}
//масти
publicenumSuitTypes
{
//трефы
clubs = 0,
//бубны
diamonds = 1,
//червы
hearts = 2,
//пики
spades = 3
}
privateint seniority;
privateSuitTypes suit;
privateint Xcoord = 0;
privateint Ycoord = 0;
privatebool isOpen = false;
privateint cardNumber;
//конструкторобъекта
public Card(int cardNumber)
{
seniority = cardNumber % 13;
suit = (SuitTypes)(cardNumber / 13);
if (seniority == 0)
{
seniority = 13;
suit -= 1;
}
this.cardNumber = cardNumber;
}
//конструкторобъекта
public Card(SuitTypes suit, int seniority)
{
if (seniority < 1 || seniority > 13)
this.seniority = 1;
else
this.seniority = seniority;
this.suit = suit;
}
//определителькарты
publicstaticCard defineCard(int num)
{
int seniority = num % 13;