Создание электронного варианта игры Домино

Автор работы: Пользователь скрыл имя, 16 Октября 2013 в 13:16, курсовая работа

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

Разрабатываемая игра “Домино” является компьютерным вариантом настольной игры, которая предназначена для парной игры за одним компьютером, имеет удобный и понятный пользовательский интерфейс с возможность перемещения костяшек по полю.
Каждый игрок получает по семь костяшек, остальные размещаются в закрытом резерве. Начинает тот игрок, у которого наибольшее значение (например 6-6). Далее игроки выставляют костяшки с соответствующими очками. Если подходящих костяшек нет, то приходится добирать из резерва. Игра заканчивается, когда один из игроков выложит последнюю костяшку.

Содержание

ВВЕДЕНИЕ 4
1 ПОСТАНОВКА ЗАДАЧИ 5
2 ПРАКТИЧЕСКАЯ ЧАСТЬ 6
2.1 Выбор технических и программных средств 6
2.2 Описание классов, объектов, свойств и методов разрабатываемого программного средства 8
2.3 Блок-схема алгоритма работы программы 11
2.4 Описание функционирования программы 13
3 ТЕСТИРОВАНИЕ ПРОГРАММНОГО СРЕДСТВА 15
3.1 Тестирование программного средства на различные входные данные и его реакция на них 15
3.2 Тестирование программного средства в различных аппаратных средах 15
4 РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ 16
4.1 Требования к установке программного обеспечения: 16
4.2 Руководство пользователя по работе с программным средством 16
ЗАКЛЮЧЕНИЕ 19
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 20

Вложенные файлы: 1 файл

3. Пояснительная.docx

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

Затем игроку необходимо нажать на одну из выделенный областей, которые  появились на игровом поле panel1. Щелкнув по выделенной области срабатывает обработчик события twoClick(), который на место выделения перемещает выделенную костяшку. При вызове обработчика события twoClick(), идёт проверка соответствия значений костяшки с крайними значениями костяшек на игровом поле, и если значения совпадают, то выделенные области скрываются, а на их место переносится костяшка, которая удаляется из списка данного игрока; вызывается метод form.cleaner(), который очищает поле игрока от всех объектов типа PictureBox; вызывается form.verh_stop(), для скрытия костяшек данного игрока; вызывается метод form.stop_ppl(), блокирующих ход текущему игроку; вызывается метод form.control(), передающий управление следующему игроку;

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

После того как был вызван метод form.control(), идёт проверка значений костяшек соперника, которая реализована в методе over(). Перебирается каждая костяшка и её значения сравниваю с крайними значениями костяшек на игровом поле. В случаи совпадения хоть одного, игра продолжается и игроку необходимо выбрать костяшку, чтобы сделать ход. В противном случаи, запускается перебор костяшек, реализованный в методе over2(), которые ищет совпадения значений костяшек в резерве с крайними значениями костяшек на игровом поле. Если совпадений не было найдено, то в переменную “bool rezerv” запишется значение true. Иначе кнопка “Резерв” станет доступна и подсветится цветом. Игрок обратившись в резерв, вызывает обработчик события button1_Click(), в котором реализовано определение текущего игрока и случайным образом выбирается костяшка из общего списка, и переносится в список текущего игрока; вызывается метод очистки поля игрока от всех костяшек; вызывается метод построения костяшек на поле игрока; вызывается метод перебора костяшек.

После того как все костяшки из резерва будут выбраны и  в переменной резерв будет значение true, игра будет завершена. Конец игры сопровождается сообщением, в котором указано что игрок проиграл, показано общее время игры и количество совершенных ходов. Так же в сообщение есть две кнопки “Повторить” и “Отмена”. При нажатии на кнопку “Повторить”, вызывается обработчик события newGameStart_Click(), который обнуляет все значения игры, очищает списки и вызывает метод startGame(), для начала новой игры. При нажатии кнопки “Отмена”, игра закрывается.

3 ТЕСТИРОВАНИЕ  ПРОГРАММНОГО СРЕДСТВА

3.1 Тестирование  программного средства на различные  входные данные и его реакция  на них

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

Программное средство было надёжно  спроектировано и не имеет ошибочных сообщений, так как в этом нет необходимости.

3.2 Тестирование  программного средства в различных аппаратных средах

Тестирование  программного средства проводилось на операционных системах Windows NT, начиная с версии 5.1 с предустановленной программной платформой .NET Framework 3.5. Во время тестирования, программное средство работало стабильно, ошибок замечено не было.

Рисунок 3.1 - Отсутствие .NET Framework 3.5

 В случаи отсутствия предустановленной  платформы .NET Framework 3.5, при запуске программного средства может появится окно с сообщением что требуется следующий компонент Windows “.NET Framework 3.5” с предложением загрузить его и установить этот компонент (Рисунок 3.1).

 

4 РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

4.1 Требования к установке программного обеспечения:

Процессор: 1 гигагерц (ГГц) или выше;

ОЗУ: 64 мегабайт (МБ) или выше;

Свободное место на жестком диске: не менее 1 мегабайт (МБ);

Операционная система: Microsoft Windows NT 5.1 или новее;

Дополнительное  ПО: .NET Framework 3.5

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

При запуске игры, компьютер автоматически  распределяет игрокам костяшки случайным  образом, после чего их значения сравниваются. Первым ход начинает тот игрок, у которого значение костяшек больше, а костяшки второго игрока в данный момент скрываются (Рисунок 4.2).

Рисунок 4.1 - Скрытые костяшки


Первый игрок выбирает костяшку с наибольшим значением и нажимает на неё. Тогда костяшка будет подсвечена цветом (Рисунок 4.3), а на игровом поле образуется выделенная область (Рисунок 4.4). Эта область подсказывает игроку куда он может положить костяшку, но не помогает сделать ход. Игрок сам должен выбрать как ему походить и какой костяшкой. Чтобы совершить ход, необходимо кликнуть мышью по одной из предложенных выделенной области, после чего костяшка переместится на это место. В случаи если была выбрана костяшка с неподходящим значением, то выделение отменяется и тогда игроку необходимо сделать выбор снова.

Рисунок 4.3 - Выделенная область

Рисунок 4.2 - Выбранная костяшка

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

Рисунок 4.4 - Набор костяшек

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

Игра продолжается до тех пор, пока один из игроков не положит последнюю  костяшку.

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

Рисунок 4.5 - Конец игры

 В случаи, если игроки выберут “Повтор”, то игровое поле будет очищено, а костяшки по-новому распределены. Если же будет выбрано “Отмена”, то игра закроется.

Игроки  могут в любой момент начать новую  игру. Эта возможность доступна из меню “Файл – Новая игра” или по нажатию клавиши F2.

 

ЗАКЛЮЧЕНИЕ

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

При подготовке этого курсового проекта были укреплены знания, полученные на дисциплине «Конструирование программ и языков программирования», и усовершенствованы навыки программирования на языке С#.

Так же были проведены различные испытания  по работе программного средства в  различных операционных системах при определённых условиях, которые завершились успехом.

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

 

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Язык программирования С# 2008 и платформа .NET 3.5: Эндрю Троелсен — Москва, Вильямс, 2010 г.- 1344 с.;
  2. C# 4.0 и платформа .NET 4 для профессионалов (+ CD-ROM): Кристиан Нейгел, Билл Ивьен, Джей Глинн, Карли Уотсон, Морган Скиннер — Москва, Вильямс, 2011 г.- 1440 с.;
  3. Полный справочник по C#: Герберт Шилдт — Москва, Вильямс, 2008 г.- 752 с.;
  4. Язык программирования C# 2010 и платформа .NET 4: Эндрю Троелсен — Москва, Вильямс, 2011 г.- 1392 с.;
  5. CLR via C#. Программирование на платформе Microsoft .NET Framework 4.0 на языке C#: Джеффри Рихтер— Москва, Питер, 2012 г.- 928 с.;
  6. Интернет-ресурс www.wikipedia.org;
  7. Интернет-ресурс www. http://msdn.microsoft.com/ru-ru/library;

 

ПРИЛОЖЕНИЕ А

Текст программы

Класс Form1

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Resources;         // ResourceManager

using System.Reflection;        // Assembly

using System.Collections;       // ArrayList

 

namespace AppDomino

{

    public partial class Form1 : Form

    {

        public ResourceManager resMan;                          // Ресурсы

        dominoClass[] domino = new dominoClass[28];             // Массив доминошек

        dominoClass[] verh_dmn = new dominoClass[20];           // Массив доминошек

        public ArrayList arrayList1 = new ArrayList();          // Список 1

        public ArrayList arrayList2 = new ArrayList();          // Список 2

        public ArrayList arrayList3 = new ArrayList();          // Список 3

        Random rand = new Random();                             //

        int igrok;                                              // Номер текущего игрока

        public int hoD;                                         // Номер хода

        public dominoClass buf;                                

        public dominoClass verh1;                              

        public dominoClass verh2;                              

        public Point point1;                                   

        public Point point2;                                   

        public int value1;                                     

        public int value2;                                     

        public bool val1;                                      

        public bool val2;                                      

        public int povorot1;

        public int povorot2;

        bool rezerv;

        public bool puf;

        DateTime myTime;

 

        public Form1()

        {

            InitializeComponent();

            // Подключение ресурса.

            Assembly assembly = Assembly.GetExecutingAssembly();

            resMan = new ResourceManager("AppDomino.Pictures", assembly);

            startGame();

        }

 

        // Старт новой игры.

        void startGame()

        {

            // Заполнение массива объектов доминошками.

            int n = 0;

            for (int i = 0; i < 7; i++)

                for (int j = i; j < 7; j++)

                {

                    domino[n] = new dominoClass(this, resMan, "d" + i + "_" + j);

                    arrayList1.Add(domino[n++]);

                }

            for (int i = 0; i < 20; i++)

                verh_dmn[i] = new dominoClass(this, resMan, "verh1");

            verh1 = new dominoClass(this, resMan, "verh");

            verh1.PicBox.Click += new System.EventHandler(verh1.twoClick);

            verh2 = new dominoClass(this, resMan, "verh");     

            verh2.PicBox.Click += new System.EventHandler(verh2.threeClick);  

            newSpisok(7, arrayList2, panel2, 2);         // формирование список 2

            newSpisok(7, arrayList3, panel3, 3);         // формирование список 3

            // Значения по умолчанию

            hoD = 0;

            povorot1 = 0;

            povorot2 = 0;

            start_game(panel2, arrayList2);

            start_game(panel3, arrayList3);

            stop_ppl(arrayList2);

            stop_ppl(arrayList3);

            start_ppl(hod());

            igrok = igr();

            if (igrok == 2)

            {

                panel2.BackColor = SystemColors.ActiveCaption;

                panel3.BackColor = SystemColors.GradientInactiveCaption;

                verh_stop(arrayList3);

            }

            else

            {

                panel2.BackColor = SystemColors.GradientInactiveCaption;

                panel3.BackColor = SystemColors.ActiveCaption;

                verh_stop(arrayList2);

            }

            myTime = new DateTime(0001, 1, 1, 0, 0, 0);

            label5.Text = myTime.Minute.ToString() + ":" + myTime.Second.ToString();

            label4.Text = hoD.ToString();

            button1.Enabled = false;

        }

 

        // Добавление в список домино

        void newSpisok(int n, ArrayList list, Panel panel, int num)

        {

            int rnd = -1;

            if (arrayList1.Count != 0)

            {

                for (int i = 0; i < n; i++)

                {

                    rnd = rand.Next(0, arrayList1.Count);           // Случайное число

                    list.Add(arrayList1[rnd]);                     

                    arrayList1.RemoveAt(rnd);                      

                    dominoClass buf = (dominoClass)list[i];                    

                    buf.arrayList = list;                          

                    buf.panel = panel;                             

                    buf.num = num;                    

                }

            }

        }

 

        // Добавление  домино на панель при старте

        public void start_game(Panel panel, ArrayList list)

        {

            int x = 0;

            for (int i = 0; i < list.Count; i++)

            {

                dominoClass buf = (dominoClass)list[i];

                buf.PicBox.BackColor = SystemColors.GradientInactiveCaption;

                Point point = new Point(x += 60, 15);

                buf.size(true, point, panel);

                //

                buf.addSob();

            }

        }

 

        // Удаление всех PictureBox c панели

        public void cleaner(Panel panel)

        {

            for (int i = panel.Controls.Count - 1; i >= 0; i--)

            {

                PictureBox cnt = panel.Controls[i] as PictureBox;

                if (cnt != null)

                    panel.Controls.RemoveAt(i);

            }

        }

 

        // Резерв

        private void button1_Click(object sender, EventArgs e)

        {

            if (arrayList1.Count != 0)

            {

                if (igrok == 2)

                {

                    dominoClass vrem;

                    int x = 0;

                    if (arrayList2.Count != 0)

Информация о работе Создание электронного варианта игры Домино