Расстановка ферзей на шахматном поле

Автор работы: Пользователь скрыл имя, 21 Декабря 2011 в 21:01, курсовая работа

Описание

История шахмат насчитывает не менее полутора тысяч лет. Считается, что игра-прародитель, чатуранга, появилась в Индии не позже VI века нашей эры. По мере распространения игры на Арабский Восток, затем в Европу и Африку, правила менялись. В том виде, который игра имеет в настоящее время, она сформировалась к XV веку, окончательно правила были стандартизованы в XIX веке, когда стали систематически проводиться международные турниры.
Задача о восьми ферзях — широко известная задача по расстановке фигур на шахматной доске. Исходная формулировка: «Расставить на стандартной 64-клеточной шахматной доске 8 ферзей так, чтобы ни один из них не находился под боем другого».

Содержание

Введение 3
1 Техническое задание 5
2 Разработка структуры программы 6
2.1 Общие сведения 9
2.2 Минимальные системные и аппаратные требования 11
3 Описание работы программы 12
4 Руководство пользователя 14
Заключение 17
Список используемой литературы 18

Работа состоит из  1 файл

готовый отчет.doc

— 700.50 Кб (Скачать документ)

        {//вызов справки о программе

            About d = new About();

            d.Show();

        } 

        private void menuItem3_Click(object sender, EventArgs e)

        {//вызов правил расстановки

            Rules f = new Rules();

            f.Show();

        } 

        private void menuItem2_Click(object sender, EventArgs e)

        {//вызов закрытия формы

            this.Close();

        }

      }

}

Queens.cs: //файл выполняющий работу по постановке ферзей

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data; 

namespace Queens

{ 

      public class Queens

      {

            private int NumOfQueens;

            public int CountOfQueens //получение количества ферзей

            {

                  get

                  {

                        return this.NumOfQueens;

                  }

                  set

                  {

                        this.NumOfQueens = value;

                        this.Desk = new int[this.NumOfQueens];

                        this.PlaceQueue();

                  }

            }

            public static FormQueens QueensForm;

            public static Queens Queen;

            public Queens(int NumOfQueens)

            {//переопределение переменных

                  this.NumOfQueens = NumOfQueens;

                  this.Desk = new int[this.NumOfQueens];

            }

            public int[] Desk; //массив хранящий координаты ферзей

            Random Rand = new Random(); 

            public bool IsSuitablePos(int Y, int X)

            {//метод, проверяющий не бьется ли поставленный ферзь по диагоналям

                  for (int Iter = 0; Iter <= Y; Iter ++)

                  {

                        if (X == this.Desk[Iter]) 

                              return false;

                        if (Iter + this.Desk[Iter] == Y + X)

                              return false;

                        if (Iter - this.Desk[Iter] == Y - X)

                              return false;

                  }

                  return true;

            } 

            private bool ExitProce; 

            public void DisarrayQueen(int Y)

            {//запускаем цикл, который будет выполнять сортировку

                  if ( Y == this.NumOfQueens )

                this.ExitProce = true; //если текущий элемент  последний, то сортировка закончена

            if (this.ExitProce == true) return; //если сортировка  закончена то возвращаемся к  PlaceQueue

                  for (int IterX = 0; IterX < this.NumOfQueens; IterX ++)

                if (this.IsSuitablePos(Y, IterX)) //вызываем метод IsSuitablePos

                        {

                              if (!this.ExitProce)

                              {//если ферзь поставлен,  то редактируем массив

                                    this.Desk[Y] = IterX;

                                    this.DisarrayQueen(Y + 1);

                              }    }

            }

            public void PlaceQueue()

        {// массив из количества ферзей  заполняет случайными значениями

                  this.Desk[0] = Rand.Next(this.NumOfQueens);

                  this.ExitProce = false;

                  this.DisarrayQueen(1);

            }

            static void Main()

            {//метод, срабатываемый по умолчанию

                  Queen = new Queens(8);

                  Queen.PlaceQueue();

                  QueensForm = new FormQueens();

                  Application.Run(QueensForm);

            }

            public struct Error

            {//структура, генерирующая события при возникновении ошибок

                  public static string String = "";

                  public static bool IsError;

                  public Error(string String)

                  {

                        Error.String = String;

                        Error.IsError = true;

                  }

                  public static void SetError(string String)

                  {

                        Error.String = String;

                        Error.IsError = true;

                  }

                  public static void ShowError()

                  {

                        MessageBox.Show(String, "Ошибка", MessageBoxButtons.OK);

                  }

                  public static void ShowError(string String)

                  {

                        Error.String = String;

                        Error.IsError = true;    MessageBox.Show(String, "Ошибка", MessageBoxButtons.OK);

                  }  } }}

Информация о работе Расстановка ферзей на шахматном поле