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

Автор работы: Пользователь скрыл имя, 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 Кб (Скачать файл)

                    {

                        vrem = (dominoClass)arrayList2[arrayList2.Count - 1];

                        x = vrem.PicBox.Location.X;

                        cleaner(panel2);

                        vrem = null;

                    }

                    newSpisok(1, arrayList2, panel2, 2);                    

                    vrem = (dominoClass)arrayList2[arrayList2.Count - 1];

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

                    vrem.size(true, point, panel2);

                    vrem.arrayList = arrayList2;                            

                    vrem.panel = panel2;                                    

                    vrem.num = 2;                                           

                    start_game(panel2, arrayList2);

                    over(arrayList2);

                }

                else

                {

                    dominoClass vrem;

                    int x = 0;

                    if (arrayList3.Count != 0)

                    {

                        vrem = (dominoClass)arrayList3[arrayList3.Count - 1];

                        x = vrem.PicBox.Location.X;

                        cleaner(panel3);

                        vrem = null;

                    }

                    newSpisok(1, arrayList3, panel3, 3);                    

                    vrem = (dominoClass)arrayList3[arrayList3.Count - 1];

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

                    vrem.size(true, point, panel3);

                    vrem.arrayList = arrayList3;                            

                    vrem.panel = panel3;                                    

                    vrem.num = 3;                                           

                    start_game(panel3, arrayList3);

                    over(arrayList3);

                }

            }

            else

            {

                button1.BackColor = SystemColors.GradientInactiveCaption;

                button1.Enabled = false;

                label2.Visible = false;

                label8.Visible = true;

                if (rezerv)

                {

                    timer1.Stop();

                    cleaner(panel2);

                    cleaner(panel3);

                    start_game(panel2, arrayList2);

                    start_game(panel3, arrayList3);

                    if (MessageBox.Show(" Вы проиграли! \n Время игры: " + label5.Text + "\n Сделано ходов: " + label4.Text, "Конец игры", MessageBoxButtons.RetryCancel, MessageBoxIcon.Asterisk) == DialogResult.Retry)

                    {

                        newGameStart_Click(null, null);

                    }

                    else Application.Exit();

                }

            }

        }

 

        // Поиск доминошек

        public int search(ArrayList list)

        {

            int vrem1 = -1;

            int vrem2 = -1;

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

            {

                dominoClass buf = (dominoClass)list[i];

                if (buf.zn1 == buf.zn2)

                    if (buf.zn1 > vrem2)

                    {

                        vrem1 = i;

                        vrem2 = buf.zn1;

                    }

            }

            return vrem2;

        }

 

        // Блокирование хода игроку

        public void stop_ppl(ArrayList list)

        {

            int x = 0;

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

            {

                dominoClass buf = (dominoClass)list[i];

                buf.PicBox.Click -= new System.EventHandler(buf.oneClick);

            }

        }

 

        // Маскировка доминошек

        public void verh_stop(ArrayList list)

        {

            int x = 0;

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

            {

                dominoClass buf = (dominoClass)list[i];

                buf.PicBox.Click -= new System.EventHandler(buf.oneClick);

                buf.PicBox.Visible = false;

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

                verh_dmn[i].size(true, point, buf.panel);

                verh_dmn[i].PicBox.Visible = true;

            }

        }

 

        // РазБлокирование хода игроку

        public void start_ppl(ArrayList list)

        {

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

            {

                dominoClass buf = (dominoClass)list[i];

                buf.PicBox.Click += new System.EventHandler(buf.oneClick);

                buf.PicBox.Visible = true;

            }

        }

 

        // Определение  первого хода

        ArrayList hod()

        {

            if (search(arrayList2) >= search(arrayList3))

                return arrayList2;

            else

                return arrayList3;

        }

 

        // Определение  первого игрока

        int igr()

        {

            if (hod() == arrayList2)

                return 2;

            else

                return 3;

        }

 

        // Нажатие на Panel1

        public void panel1_Click(object sender, EventArgs e)

        {

            try

            {

                buf.PicBox.BackColor = SystemColors.GradientInactiveCaption;

            }

            catch (Exception)

            { }

            start_ppl(buf.arrayList);

            buf = null;

            panel1.Controls.Remove(verh1.PicBox);

            panel1.Controls.Remove(verh2.PicBox);

        }

 

        // Задание размеров панели

        private void panel1_SizeChanged(object sender, EventArgs e)

        {

            point1.X = panel1.Width / 2 - 26; point1.Y = panel1.Height / 2 - 135; 

            point2.X = panel1.Width / 2 - 26; point2.Y = panel1.Height / 2 - 135;  

            panel1.SizeChanged -= new System.EventHandler(panel1_SizeChanged);

        }

 

        // передача управления

        public ArrayList control()

        {

            if (buf.arrayList == arrayList2)

            {

                panel3.BackColor = SystemColors.ActiveCaption;

                start_ppl(arrayList3);

                igrok = 3;

                over(arrayList3);

                if (button1.Enabled == true)

                    over2();                                          

                listBox1.Items.Add("Игрок " + igrok);       // log

                return arrayList3;

            }

            else

            {

                panel2.BackColor = SystemColors.ActiveCaption;

                start_ppl(arrayList2);

                igrok = 2;

                over(arrayList2);

                if (button1.Enabled == true)

                    over2();

                listBox1.Items.Add("Игрок " + igrok);       // log

                return arrayList2;

            }

        }

 

        // Перебор доминошек-1

        public void over(ArrayList list)

        {

            bool vremBool = true;

 

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

            {

                dominoClass vrem = (dominoClass)list[i];

                if (vrem.zn1 == value1 || vrem.zn1 == value2 || vrem.zn2 == value1 || vrem.zn2 == value2)

                {

                    vremBool = false;

                    button1.BackColor = SystemColors.GradientInactiveCaption;

                    label2.Visible = false;

                    break;

                }

            }

            button1.Enabled = vremBool;

            if (vremBool)

            {

                button1.BackColor = Color.Tomato;

                label2.Visible = true;

            }

        }

 

        // Перебор доминошек-2

        public void over2()

        {

            bool vremBool2 = true;

 

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

            {

                dominoClass vrem = (dominoClass)arrayList1[i];

                if (vrem.zn1 == value1 || vrem.zn1 == value2 || vrem.zn2 == value1 || vrem.zn2 == value2)

                {

                    listBox1.Items.Add("button1.Enabler = false [" + i + "]");

                    vremBool2 = false;

                    break;

                }

            }

            rezerv = vremBool2;

        }

 

        private void newGameStart_Click(object sender, EventArgs e)

        {

            label7.Visible = true;

            arrayList1.Clear();

            arrayList2.Clear();

            arrayList3.Clear();

            cleaner(panel1);

            cleaner(panel2);

            cleaner(panel3);

            panel1_SizeChanged(null, null);

            rezerv = false;

            startGame();

        }

 

        private void выходToolStripMenuItem_Click(object sender, EventArgs e)

        {

            Application.Exit();

        }

 

        private void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e)

        {

            Form2 f2 = new Form2();

            f2.ShowDialog();

        }

 

        private void timer1_Tick(object sender, EventArgs e)

        {

            myTime = myTime.AddSeconds(1);

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

        }

 

    }

}

Класс dominoClass

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Drawing;           // Bitmap

using System.Resources;         // ResourceManager

using System.Windows.Forms;     // PictureBox

using System.Collections;       // ArrayList

 

namespace AppDomino

{

    public class dominoClass

    {

        Form1 form;                         // Ссылка на форму

        string name;                        // Имя

        public int zn1;                     // Значение 1

        public int zn2;                     // Значение 2       

        PictureBox pictureBox;              // Контейнер для рисунка

        public ArrayList arrayList;         // Список, в котором расположен домино

        public Panel panel;                 // Панель, на котором расположен домино

        public int num;                     // Номер списка/панели

        public bool rotate;                 // Положение доминошки в пространстве

 

        // Создание объекта "Доминошка"

        public dominoClass(Form1 f1, ResourceManager resMan, string name)

        {

            form = f1;                                                 

            this.name = name;                                           // Записываю имя

            this.pictureBox = new PictureBox();                        

            if (name != "verh")

            {

                if (name != "verh1")

                {

                    this.zn1 = int.Parse(name.Substring(1, 1));            

                    this.zn2 = int.Parse(name.Substring(3, 1));            

                    this.pictureBox.Image = (Bitmap)resMan.GetObject(this.name);

                }

                else

                    this.pictureBox.Image = (Bitmap)resMan.GetObject("verh");

            }

            else

            {

                this.pictureBox.BorderStyle = BorderStyle.FixedSingle;

                this.pictureBox.BackColor = SystemColors.Control;

            }

        }

 

        // Измененние размеров

        public void size(bool rotate, Point point, Panel panel)

        {

            if (rotate)

            {   // вертикальные размеры

                this.pictureBox.Size = new Size(48, 87);

                this.pictureBox.Location = point;

            }

            else

            {   // горизонтальные размеры

                this.pictureBox.Size = new Size(87, 48);

                if (this.name != "verh")

                    this.pictureBox.Image.RotateFlip(RotateFlipType.Rotate270FlipNone);

                point.Y = point.Y + 20;

                this.pictureBox.Location = point;

            }

            this.pictureBox.SizeMode = PictureBoxSizeMode.CenterImage;

            panel.Controls.Add(this.pictureBox);

        }

 

        // Добавить  событие

        public void addSob()

        {

            this.pictureBox.Click += new System.EventHandler(oneClick);

        }

 

        // Удалить  событие

        public void noSob()

        {

            this.pictureBox.Click -= new System.EventHandler(oneClick);

        }

 

        // Метод возвращающий PicturBox

        public PictureBox PicBox

        {

            get

            {

                return this.pictureBox;

            }

        }

 

        // Событие нажатия доминошек

        public void oneClick(object sender, EventArgs e)

        {

            form.buf = this;                                               

            form.puf = true;

            if (form.hoD == 0)

            {

                form.timer1.Start();

                form.value1 = form.value2 = this.zn1;

                form.label7.Visible = false;

            }

            else

            {   // Задаю координаты для  выделения (по левую сторону)

                Point point2 = form.point2;                                

                if (point2.X > 150 && form.povorot2 == 0)

                {   // ПО ВЕРХНЕЙ ГОРИЗОНТАЛИ  

                    if (this.zn1 == this.zn2)

                        point2.X = point2.X - 48;

                    else

                        point2.X = point2.X - 87;

                    form.verh2.size(this.zn1 == this.zn2, point2, form.panel1);

                    form.listBox1.Items.Add("hihi Oloolo");

                    form.puf = false;

                }

                else

                {

                    if (point2.Y < 300 && form.povorot2 < 2)

                    {   // ПО ВЕРТИКАЛИ

                        if (form.povorot2 == 0)

                            pointPNT_300(point2);

                        else if (form.povorot2 == 1)

                            pointPNT_333(point2);

                    }

                    else

                    {   // ПО НИЖНЕЙ ГОРИЗОНТАЛИ

                        if (form.povorot2 == 2)

                            pointPNT_311(point2);

                        else if (form.povorot2 == 3)

                            pointPNT_322(point2);

                    }

                }

            }

            // ---------------------------------------------------------------------------------

            Point point1 = form.point1;                                     

            if (point1.X < 1150 && form.povorot1 == 0)

            {   // ПО ВЕРХНЕЙ ГОРИЗОНТАЛИ

                form.verh1.size(this.zn1 == this.zn2, point1, form.panel1);     

                form.listBox1.Items.Add("point1.X: " + point1.X);

                form.listBox1.Items.Add("point1.Y: " + point1.Y);

            }

            else

            {

                if (point1.Y < 300 && form.povorot1 < 2)

                {   // ПО ВЕРТИКАЛИ

                    if (form.povorot1 == 0)

                        pointPNT_100(point1);

                    else if (form.povorot1 == 1)

                        pointPNT_111(point1);

                }

                else

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