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

Чтение книги онлайн.

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

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

Скачать книгу

этого файла).

      По второму варианту, в панели Solution Explorer выполняем правый щелчок по имени проекта и в контекстном меню выбираем Add, New Item, в панели Add New Item выделяем шаблон Code File, в окне Name записываем имя Connect4Board. cs и щёлкаем кнопку Add. В проект (и в панель Solution Explorer) добавляется этот файл, открывается пустое окно редактирования кода, в которое записываем код со следующего листинга.

      Листинг 12.9. Новый файл.

      using System;

      using System. Drawing;

      using System.Collections;

      using System.Windows.Forms;

      namespace Connect4

      {

      public class Connect4Board

      {

      public Random random = new Random ();

      public int [,] arr = new int [7, 6];

      public int [,] thn = new int [7, 6];

      public int [] tops = new int [7];

      public int player, computer, endt = 0;

      public int plr = 1, cpu = 2, rec = 3, turn = 1;

      public int m, n, r, temp, so, ch, col, t, y;

      public int plrcoin, cpucoin;

      public int lin;

      public Connect4Board ()

      {

      }

      public int Think ()

      {

      int i;

      i = rec;

      return check (i, -9999999, 9999999);

      }

      public void turncheck ()

      {

      int temp;

      char [] toto = new char [20];

      temp = checkwin ();

      if (temp == plr)

      {

      MessageBox.Show («You won!»);

      endt = 1; return;

      }

      if (temp == cpu)

      {

      MessageBox.Show («You lost.»);

      endt = 1; return;

      }

      if (temp == 0)

      {

      for (t = 0; t <= 6; t++)

      if (tops [t] <6) temp = 1;

      if (temp == 0)

      {

      //drawn ();

      endt = 1;

      return;

      }

      }

      }

      public int check (int i, int alpha, int beta)

      {

      int co, score, t, g, j = 0, p;

      i – ;

      if (i == -1) {score = position (); return score;}

      if (i % 2 == 0)

      {

      int max = 0, k;

      j = 0; co = 0;

      for (t = 0; t <7; t++)

      {

      g = add (t, cpu);

      if (g == 0)

      {

      if (checkwin () == cpu)

      {

      sub (t);

      if (i == rec – 1)

      return t;

      else return 9000;

      }

      k = check (i, alpha, 999999);

      if (k> alpha) alpha = k;

      sub (t);

      if (k> beta) return k;

      if (co == 0) {max = k; co = 1; j = t;}

      if (k == max)

      {

      p = (random.Next (6)) +1;

      if (p> 4) j = t;

      }

      if (k> max) {max = k; j = t;}

      }

      }

      score = max;

      }

      else

      {

      int min = 0, k = 0;

      co = 0;

      for (t = 0; t <7; t++)

      {

      g = add (t, plr);

      if (g == 0)

      {

      if (checkwin () == plr)

      {

      sub (t);

      /*if (i==rec-1) return t; else*/

      return -10000;

      }

      k = check (i, -99999, beta);

      if (k <beta) beta = k;

      sub (t);

      if (k <alpha) return k;

      if (co == 0) {min = k; co = 1; j = t;}

      if (k <min) {min = k; j = t;}

      }

      }

      score = min;

      }

      if (i == rec – 1) return j;

      return score;

      }

      public int add (int c, int coin)

      {

      if (tops [c] <6)

      {

      arr [c, tops [c]] = coin;

      tops [c] ++; return 0;

      }

      return 1;

      }

      public int sub (int c)

      {

      tops [c] – ;

      arr [c, tops [c]] = 0;

      return 0;

      }

      public int position ()

      {

      int u, o, x, y, j, score;

      int gh = 0, hg = 0;

      score = 0;

      //Empty the think array

      for (x = 0; x <7; x++)

      {

      for (y = 0; y <6; y++)

      {

      thn [x, y] = 0;

      }

      }

      //Sum

Скачать книгу