Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 2: Программирование на Visual C# искусственного интеллекта (продолжение 1). Валерий Алексеевич Жарков. Читать онлайн. Newlib. NEWLIB.NET

Автор: Валерий Алексеевич Жарков
Издательство: Издательские решения
Серия:
Жанр произведения: Компьютеры: прочее
Год издания: 0
isbn: 9785005680433
Скачать книгу
11.9. Выделяем lblBox1 и выбираем событие lblBox1_Click.

      На рис. 11.12 слева – сетка для игры Tic Tac Toe. Элементы управления Label имеются в большом количестве. Элемент управления Label используется, чтобы сказать Вам ситуацию в игре. Метки используются для маркировки X и O в сетке (несмотря на то, что только X показывают в этом режиме проектирования). Тонкие элементы управления Label используются для формирования тёмно-синей сетки. Справа три средства управления GroupBox и две Button. Каждый GroupBox содержит два средства управления типа переключателя RadioButton, используемые для установления игровых опций. Эти два кнопочных управления Button используются, чтобы запустить и остановить игру и выйти из программы.

      Если в игре применяются звуковые файлы, то их можно разместить в одной папке с именем, например, Sounds, а можно разместить непосредственно в проект. Добавляем в проект звуковые файлы beep. wav и tada. wav по стандартной схеме: выполняем правый щелчок по имени проекта, в контекстном меню выбираем Add, Existing Item, в панели Add Existing Item в окне «Files of type» выбираем «All Files», в центральном окне находим (в папке файлы, например, из Интернета) и с нажатой клавишей Ctrl выделяем имена файлов и щёлкаем кнопку Add. В панели Solution Explorer мы увидим эти файлы (рис. 11.10).

      Дважды щёлкая по имени файла в панели Solution Explorer, любой файл можно открыть, изучить и редактировать.

      Схема записи и вывода справочной информации, например, с правилами игры после выбора команды Справка (например, для элемента управления MenuStrip) уже была дана в другой главе, а также в книгах с сайта ZharkovPress.ru.

      Рис. 11.10. Панели Solution Explorer (слева) и Properties (справа).

      11.4. Код и запуск программы

      Открываем файл Form1.cs (например, по схеме: File, Open, File) и в классе Form1 записываем следующие переменные и методы.

      Листинг 11.1. Переменные и методы.

      Random myRandom = new Random ();

      Label [] boxArray = new Label [9];

      bool xTurn;

      bool canClick = false;

      int numberClicks;

      String [] possibleWins = new String [8];

      bool gameOver;

      //System.Media.SoundPlayer drawSound;

      //System.Media.SoundPlayer winSound;

      private void lblBox_Click (object sender, EventArgs e)

      {

      String whoWon = «»;

      int i;

      if (canClick)

      {

      // see which box is clicked

      Label clickedBox;

      clickedBox = (Label) sender;

      // last digit of name (-1) is index

      i = Convert.ToInt32(clickedBox.Name [

      clickedBox.Name. Length – 1].ToString ()) – 1;

      // if already clicked then exit

      if (boxArray [i].Text!= «»)

      return;

      numberClicks++;

      if (xTurn)

      {

      boxArray [i].Text = «X»;

      xTurn = false;

      lblMessage. Text = «O’s Turn»;

      }

      else

      {

      boxArray [i].Text = «O»;

      xTurn = true;

      lblMessage. Text = «X’s Turn»;

      }

      // check for win – will establish a value for WhoWon

      whoWon = CheckForWin ();

      if (whoWon!= «»)

      {

      //winSound.Play ();

      lblMessage. Text = whoWon + " wins!»;

      gameOver = true;

      btnStartStop.PerformClick ();

      return;

      }

      else if (numberClicks == 9)

      {

      // draw

      //drawSound.Play ();

      lblMessage. Text = «It’s a draw!»;

      gameOver = true;

      btnStartStop.PerformClick ();

      return;

      }

      if (rdoOnePlayer.Checked)

      if ((xTurn && rdoComputerFirst.Checked) ||

      (!xTurn && rdoYouFirst.Checked))

      ComputerTurn ();

      }

      }

      private String CheckForWin ()

      {

      String winner = «»;

      int [] boxNumber = new int [3];

      String [] mark = new String [3];

      // check all possible for wins

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

      {

      for