Разработка компьютерной игры «Косынка»

    МИНИСТЕРСТВО ОБРАЗОВАНИЯ  И НАУКИ,

    молодежи  и спорта УКРАИНЫ

    Донецкий Национальный Технический Университет

    Институт Информатики  и Искусственного Интеллекта 
 

Д 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    
       
Руководитель     доц.   А.Н. Шушура
  (подпись)   (должность,  Ф.И.О.)
      асс. М.С. Полуказакова
  (подпись)   (должность,  Ф.И.О.)
Разработчик     В.Н.Лапенко
  (подпись)    

 

                                               Введение

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

C# — объектно-ориентированный язык программирования. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft .NET Framework и впоследствии был стандартизирован как ECMA-334 и ISO/IEC 23270.

C# относится  к семье языков с C-подобным  синтаксисом, из них его синтаксис  наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.

Переняв многое от своих предшественников — языков 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# разрабатывался  как язык программирования прикладного  уровня для CLR и, как таковой,  зависит, прежде всего, от возможностей  самой CLR. Это касается, прежде  всего, системы типов C#, которая  отражает BCL. Присутствие или отсутствие  тех или иных выразительных  особенностей языка диктуется  тем, может ли конкретная языковая  особенность быть транслирована  в соответствующие конструкции  CLR. Так, с развитием CLR от версии 1.1 к 2.0 значительно обогатился  и сам C#; подобного взаимодействия  следует ожидать и в дальнейшем. (Однако эта закономерность была  нарушена с выходом C# 3.0, представляющего  собой расширения языка, не  опирающиеся на расширения платформы  .NET.) CLR предоставляет C#, как и всем  другим .NET-ориентированным языкам, многие возможности, которых лишены  «классические» языки программирования. Например, сборка мусора не реализована  в самом C#, а производится CLR для программ, написанных на C# точно так же, как это делается для программ на VB.NET, J# и др. 
 
 
 
 
 
 
 
 

 2ПОСТАНОВКА ЗАДАЧИ

Во время  игры требуется собрать четыре стопки карт разной масти так, чтобы они  шли в порядке возрастания (туз, двойка и до короля).В игре используется одна колода из 52 карт. В самом начале игры мы имеем семь стопок карт – в первой стопке одна карта, во второй две, и так до семи – всего 28. Только верхняя карта лежит картинкой вверх – остальные вниз. Справа сверху четыре ячейки, в которые и нужно собрать стопки карт, о которых говорилось выше, – так называемый дом.Карты можно перемещать между стопками только по конкретным правилам: в порядке убывания карты (король, дама,… двойка, туз). Например, на даму можно положить только валета, а на двойку туз. Помимо этого, на чёрную карту можно положить только красную, и наоборот. Иными словами, на червовую даму можно положить валета пик, но никак не валета бубей. Аналогично картам, перемещать можно и уже собранные стопки .Начинать заполнение ячеек дома нужно с туза. Иначе нужно перемещать карты между столбцами до тех пор, пока не будет найден туз. Чтобы переместить карту в дом, достаточно перетащить её в ячейку или щёлкнуть по ней дважды.Также в игре косынка присутствует колода – она находится в левом верхнем углу. Из неё можно брать карты, для этого нужно нажать на неё. Если колода закончилась, то при следующем нажатии по ней, она будет перетасована. 

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

                              
 
 

 

4 Цель игры:

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

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

  4.1    Критерии Начисление Очков 

При «стандартном»  начислении очков за перемещение  карты из колоды в столбец начисляется 5 очков, за добавление карты в ячейку дома — 10.

Если  игра занимает более 30 секунд, то можно  также получить бонус за скорость. Формула бонуса: 700 000 разделенное  на общее число секунд игры. Таким  образом, максимальный счет при «стандартном»  начислении очков — 24 113 
 
 
 
 
 
 
 
 
 
 
 
 
 

5 РЕЗУЛЬТАТЫ КОМПЛЕКСНОГО ТЕСТИРОВАНИЯ:  В игре «Косынка»  используются карты одной колоды (52 карты). В начале игры 28 карт разбиты на семь столбцов. В первом столбце одна карта, во втором — две и т. д. Верхняя карта каждого столбца лежит картинкой вверх, все остальные лежат рубашкой вверх. 
 
 
 
 
 
 
 

5.1В процессе  игры можно переносить   карты,  как  одну  так   и несколько при этом  набирать множиство очков . 
 
 
 
 
 
 
 
 
 
 
 

5.2 Так  выглядит  программа после перемещения  нескольких  карт  
 

       
 
 
 
 
 
 
 
 
 
 

     5.3 Так  же  можно  нажать  кнопку   “Файл”  котороя  вам предложит выбор “Новая Игра” или “Выход”

      ” 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

                             

                                                         ВЫВОДЫ

Результатом выполнения данного курсового проекта  является рабочая программа, позволяющая осуществлять компьютерную игру «Косынка».

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

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

 

                      СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

    1. Стенли Б. Липман , ЖозиЛажойе - «Язык программирования С++. Вводный курс» – ДМК, Москва, 2003, 400 с.
    2. Харви Дейтел, Пол Дейтел – «Как программировать на С++», Москва,2003, 1200 с.
    1. Бьярн Страустрап -  «Введение в язык Си++" –  Питер, Москва,1995
    1. Марченко  А.Л. - «C++. Бархатный путь» -  АСТ, Москва, 2000, 700 с.
    1. Б. Керниган, Д. Ритчи  - «Язык программирования Си» - Невский Диалект, Санкт-Петербург, 2001
    2. Брюс Эккель, ЧакЭллисон – «Философия C++. Практическое программирование» – Питер – 2004
    3. Дж. Либерти – «C++. Энциклопедия пользователя» - Москва, 1999, 1250 с.

          8. Visual C# Создание приложений для Windows.pdf 
                   В.В.Лабор Минск,Харвест,2003 стр 385.

           9.    Язык программирования С# 2005 и платформа .NET framework

                     v2.0.pdf 
                     3-е издание 
                     Э.Троелсен 
                     "Вильнюс",Москва-Санкт-Петербург-Киев,2005
 

     10. Вильямс - C# 2005 и платформа .NET 3.0 для                  профессионалов.2008.djvu 
                     К.Нейгел,Б.Ивьен 
                  "Диалектика",Москва-Санкт-Петербург-Киев, 2008  1780 стр
 
 

                        Приложение А. Руководство пользователя:

     Советы  и подсказки  

В тупике? Нажмите клавишу 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;

Разработка компьютерной игры «Косынка»