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

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

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

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

      public int cx = 15;

      public int cy = 70;

      public int Level = 3;

      public Connect4Board b = new Connect4Board ();

      public void Draw (Graphics g)

      {

      Pen p = new Pen (Color. Black);

      g. DrawRectangle (p, 15, 70, 210, 180);

      int q = 0;

      int w = 5;

      for (int y = cy; y <cy +180; y += 30)

      {

      for (int x = cx; x <cx +210; x += 30)

      {

      if (b.arr [q, w] == 0)

      g.FillEllipse (new SolidBrush (Color. White),

      x +3, y +3, 27, 27);

      if (b.arr [q, w] == 1)

      g.FillEllipse (new SolidBrush (Color. Yellow),

      x +3, y +3, 27, 27);

      if (b.arr [q, w] == 2)

      g.FillEllipse (new SolidBrush(Color.Red),

      x +3, y +3, 27, 27);

      g. DrawEllipse (p, x +3, y +3, 27, 27);

      q++;

      }

      q = 0;

      w – ;

      }

      }

      В панели Properties (для Form1) на вкладке Events дважды щёлкаем по имени события Paint. Появившийся шаблон метода Form1_Paint после записи нашего кода принимает следующий вид. Напомним, что другие варианты вывода изображения, например, на элемент управления PictureBox и после щелчка по какому-либо элементу управления уже приводились ранее.

      Листинг 12.2. Метод для рисования изображений.

      private void Form1_Paint (object sender, PaintEventArgs e)

      {

      e.Graphics.FillRectangle (new SolidBrush(Color.RoyalBlue),

      15, 70, 210, 180);

      Draw(e.Graphics);

      }

      В панели Properties (для Form1) на вкладке Events дважды щёлкаем по имени события MouseDown. Появившийся шаблон метода Form1_MouseDown после записи нашего кода принимает следующий вид.

      Листинг 12.3. Метод для обработки щелчка экрана мышью.

      private void Form1_MouseDown (object sender, MouseEventArgs e)

      {

      Microsoft.VisualBasic.Interaction.Beep ();

      if (b. endt == 0)

      {

      if ((e.X> cx) && (e.X <cx +210))

      {

      if ((e.Y> cy) && (e.Y <cy +180))

      {

      int selection = (e.X – cx) / 30;

      if ((selection> = 0) && (selection <7))

      {

      if (b.add (selection, b.plr) == 0)

      {

      Draw(this.CreateGraphics ());

      b. turncheck ();

      b. turn = b. cpu;

      if (b. endt == 0)

      {

      int ck;

      b.col = b.Think ();

      ck = b.add(b.col, b. cpu);

      if (ck == 0)

      {

      b.lin = 6 – b.tops[b.col];

      b. turn = b.plr;

      }

      }

      Draw(this.CreateGraphics ());

      b. turncheck ();

      }

      }

      }

      }

      }

      }

      Дважды щёлкаем по команде Begins the player (Начинает игрок) для элемента управления MenuStrip (или в панели Properties на вкладке Events выбираем событие Click). Появляется шаблон метода, который после записи нашего кода принимает следующий вид.

      Листинг 12.4. Метод-обработчик выбора команды.

      private void playerFirstToolStripMenuItem_Click (

      object sender, EventArgs e)

      {

      //Player First

      b = new Connect4Board ();

      b.rec = Level;

      Invalidate ();

      }

      Дважды щёлкаем по команде Begins the computer (Начинает компьютер) для элемента управления MenuStrip. Появляется шаблон метода, который после записи нашего кода принимает следующий вид.

      Листинг 12.5. Метод-обработчик выбора команды.

      private void computerFirstToolStripMenuItem_Click (

      object sender, EventArgs e)

      {

      //CPU First

      b = new Connect4Board ();

      b.rec = Level;

      Draw(this.CreateGraphics ());

      b. turn = b. cpu;

      if