Автор: Валерий Алексеевич Жарков
Издательство: Издательские решения
Жанр: Компьютеры: прочее
isbn: 9785005680433
isbn:
По второму варианту, в панели 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 СКАЧАТЬ