Логическая игра "Маджонг"

Автор: Пользователь скрыл имя, 18 Февраля 2013 в 23:42, курсовая работа

Описание работы

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

Работа содержит 1 файл

ПЗ.doc

— 1.15 Мб (Скачать)

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

Качество  можно определить как совокупную характеристику исследуемого ПО с учётом следующих составляющих:

  • надёжность;
  • сопровождаемость;
  • практичность;
  • эффективность;
  • мобильность;
  • функциональность.

Для тестирования данного программного средства мной было выполнено ряд  действий. В таблице 3.1 приведены результаты тестирования программного продукта.

Таблица 3.1 – Результаты тестирования программного продукта

Действие

Результат

Запуск программы

Программа запускается  корректно без ошибок, идёт загрузка.

Выбор уровня сложности

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

Нажатие на две  рядом лежащие одинаковые фишки

Фишки удалятся.

Нажатие на две  разные фишки

Фишки не удалятся.

Вызов функции  «Справка»

Отображается  справочная информация по работе с  программой.


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

3.4 Полное тестирование

Данная  программа была протестирована на различных компьютерах, на ОС Windows XP,Windows 7 и Windows 8 с установленным .NET Framework 4.0, различными пользователями. Никаких ошибок и несоответствия к предъявленным требованиям к данному ПО не обнаружено.

В результате чего, можно сделать вывод, что программа «Маджонг» пригодна для использования конечным пользователем.

 

4 Применение

4.1 Назначение

Логическая  игра «Маджонг» предназначена для развлекательного времяпровождения. Также игра позволяет повысить внимательность и увеличить реакцию. Программа подходит для использования в учреждениях дошкольного типа и школах. В игру могут играть люди от 5 лет. Также программу можно использовать в конкурсах на скорость удаления фишек.

4.2 Среда функционирования

Средой  функционирования являются операционные системы платформы Windows NT: Windows XP, Windows Vista, Windows 7. Также на компьютере должен быть установлен NET Framework 4.0.

4.3 Инсталляция

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

Рисунок 4.1 – Папка с программой на жестком  диске

 

 

Рисунок 4.2 – Содержимое папки с программой

 

 

4.4 Сообщения системы

При нажатии  на кнопку или «Выход» в любом окне программы выскакивает системное сообщение «Точно выйти?».

При нажатии  на кнопку «Да» вы выходите из программы, при нажатии на кнопку «Нет» отменяете это действие.

Рисунок 4.3 – Окно подтверждения выхода из программы

 

 

 

 

 

 

ЗАКЛЮЧЕНИЕ

Мною была разработана логическая игра «Маджонг» в соответствии с предъявленными требованиями, а именно:

    • удобный и простой  интерфейс;
    • выбор уровня сложности игрового процесса;
    • игровой процесс в соответствии с правилами.

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

 

    • СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
  1. Методические указания по выполнению курсовых и дипломных проектов. Специальность: 2-40 01 01 «Программное обеспечение информационных технологий»;
  1. Интернет-ресурсы: www.programmersforum.ru, www.cyberforum.ru, www.msdn.microsoft.com, www.habrahabr.ru;
  2. Музыкальные файлы взяты с ресурса www.newgrounds.com по лицензии Creative Commons.

 

 

 

 

ПРИЛОЖЕНИЕ А

(обязательное)

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

Окно «Заставка»

private void timer1_Tick(object sender, EventArgs e)

        {

            if (progressBar1.Value != 100)

            {

                ++progressBar1.Value;

            }

            else

            {

               

                timer1.Stop();

                this.Close();     

          }

 

Окно «Выбор уровня сложности»

private void button1_Click(object sender, EventArgs e)

        {

            int mtimer = 1;

            SetLevel(mtimer);

            Close();

        }

 

 

        private void button2_Click(object sender, EventArgs e)

        {

           int mtimer = 2;

           SetLevel(mtimer);

           Close();

        }

 

        private void button3_Click(object sender, EventArgs e)

        {

            int mtimer = 3;

            SetLevel(mtimer);

            Close();

        }

 

Окно «Новая игра»

private void button2_Click(object sender, EventArgs e)

        {

            Application.Exit();

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

            Form1 fMainForm = new Form1();

            fMainForm.Close();

            fMainForm.NewGameClick();

        }

 

Окно «Главная форма»

public partial class Form1 : Form

    {

        int x, y, x1, y1, x2, y2,sec;

        public int mtimer=1;

        bool find = false; 

        string path=@"graph\skins\Классика\";

        int[,] cMap = new int[10,10];

        Random random = new Random();

        PictureBox firstClicked = null;

        PictureBox secondClicked = null;

        String[,] MassivA = new String[8, 8];

        int[,] Map = new int[10, 10];

        List<int> xlist = new List<int>();

        List<int> ylist = new List<int>();

        public WMPLib.WindowsMediaPlayer WMP = new WMPLib.WindowsMediaPlayer();

       

     

        public Form1()

        {

            InitializeComponent();

            Splash();

            SelectLevel();

            PlayMusic(@"sound\main.mp3");

            GetSettings();

            AssignIconsToSquares();

            SetMassiv();

            SetMap();

            TimerDown();

        }

 

        private void SetLevel()

        {

           

        }

 

        public void PlayMusic(string sound_path)

        {

            WMP.URL = sound_path;

            WMP.settings.volume = 100;

            WMP.controls.play();

        }

       

        private void SetMassiv()

        {

            int q = 1;

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

            {

                for (int j = 0; j < 8; j++)

                {

                    MassivA[i, j] = "pictureBox"+q;

                    q++;

                }

            }

          

        }

 

        private void SetMap()

        {

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

            {

                for (int j = 0; j < 10; j++)

                {

                    Map[i, j] = 1;

                }

            }

 

        }

 

        private void IndexDefinition(string idLabel)

        {

 

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

            {

                for (int j = 0; j < 8; j++)

                {

 

                    if (MassivA[i, j] == idLabel)

                    {

                        x = i+1;

                        y = j+1;

                    }

                   

                }

            }

           

        }

 

        private void AssignIconsToSquares()

        {

 

           

            List<string> icons = new List<string>()

        {

            "1.png","1.png","2.png","2.png","3.png","3.png","4.png","4.png",

            "5.png","5.png","6.png","6.png","7.png","7.png","8.png","8.png",

            "1.png","1.png","2.png","2.png","3.png","3.png","4.png","4.png",

            "5.png","5.png","6.png","6.png","7.png","7.png","8.png","8.png",

            "1.png","1.png","2.png","2.png","3.png","3.png","4.png","4.png",

            "5.png","5.png","6.png","6.png","7.png","7.png","8.png","8.png",

            "1.png","1.png","2.png","2.png","3.png","3.png","4.png","4.png",

            "5.png","5.png","6.png","6.png","7.png","7.png","8.png","8.png"

        };

 

 

            foreach (Control control in tableLayoutPanel1.Controls)

            {

                PictureBox iconLabel = control as PictureBox;

                iconLabel.BorderStyle = BorderStyle.FixedSingle;

                iconLabel.BackColor = Color.FromName("Grey");

            }

 

            foreach (Control control in tableLayoutPanel1.Controls)

            {

                PictureBox iconLabel = control as PictureBox;

                if (iconLabel != null)

                {

                    int randomNumber = random.Next(icons.Count);

                    iconLabel.ImageLocation = path + icons[randomNumber];

                    icons.RemoveAt(randomNumber);

                }

            }

        }

 

        private void Form1_Load(object sender, EventArgs e)

        {

           

        }

 

        private void CheckForWinner()

        {

            int count = 0;

            foreach (Control control in tableLayoutPanel1.Controls)

            {

                PictureBox iconLabel = control as PictureBox;

 

                if (iconLabel != null)

                {

                    if (iconLabel.BackColor == Color.FromName("white"))

                    {

                        count++;                       

                       // return;

                    }

                }

            }

            if (count == 62)

            {

                PlayMusic(@"sound\win.mp3");

                timer2.Stop();

                MessageBox.Show("Вы выйграли!!!", "Поздравления");

                NewGame();

            }

        }

 

        private void pictureBox_Click(object sender, EventArgs e)

        {

            if (timer1.Enabled == true)

                return;

            PictureBox clickedLabel = sender as PictureBox;

 

            if (clickedLabel != null)

            {

                if (clickedLabel.BackColor == Color.FromName("White"))

                    return;

                if (firstClicked == null)

                {

                    firstClicked = clickedLabel;

                    IndexDefinition(firstClicked.Name);

                    firstClicked.BorderStyle = BorderStyle.Fixed3D;

                    x1 = x;

                    y1 = y;

                    return;

                }

                secondClicked = clickedLabel;

                IndexDefinition(secondClicked.Name);

                secondClicked.BorderStyle = BorderStyle.Fixed3D;

                x2 = x;

                y2 = y;

                CheckForWinner();

 

 

                if (firstClicked.ImageLocation == secondClicked.ImageLocation)

                {

                    find = false;

                    if (x1+1==x2||x1-1==y2||y1-1==y2||y1+1==y2)

                    {

                        find = true;

                    }

                    else

                    {

                    FindWave(x1, y1, x2, y2);

                    }

                        if (find == true)

                        {

                            Map[x1, y1] = 0;

                            Map[x2, y2] = 0;

                            firstClicked.ImageLocation = "";

                            firstClicked.BackColor = Color.FromName("white");

                            secondClicked.ImageLocation = "";

                            secondClicked.BackColor = Color.FromName("white");

                            firstClicked = null;

                            secondClicked = null;

                            return;

                        }

                    }

                    timer1.Start();

 

 

               

            }

        }

 

        private void timer1_Tick(object sender, EventArgs e)

        {

            timer1.Stop();

            firstClicked.BorderStyle = BorderStyle.FixedSingle;

            secondClicked.BorderStyle = BorderStyle.FixedSingle;

            firstClicked = null;

            secondClicked = null;

        }

 

        private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)

        {

 

        }

 

        private void GameOver()

        {

            PlayMusic(@"sound\gameover.mp3");

            MessageBox.Show("Вы проиграли!!!", "");

            NewGame();

           

        }

 

        private void TimerDown()

        {

            sec = mtimer *60 ;

            timer2.Interval = 1000;

            timer2.Enabled = true;

            timer2.Start();

 

 

        }

 

        private bool FindWave(int startX, int startY, int targetX, int targetY)

        {

           if ((startX + 1 == 0 || startX - 1 == 0 || startY + 1 == 0 || startY - 1 == 0) &&

                (targetX + 1 == 0 || targetX - 1 == 0 || targetY + 1 == 0 || targetY - 1 == 0))

            {

                return find = true;

            }

            else

            {

                return find = false;

            }

Информация о работе Логическая игра "Маджонг"