资源简介

设计的人工智能重力四子棋的对抗AI,实现了α-β剪枝和较好的估价算法,有不错的性能。

资源截图

代码片段和文件信息

#include “Judge.h“

bool userWin(const int x const int y const int M const int N int* const* board){
//横向检测
    int i j;
    int count = 0;
    for (i = y; i >= 0; i--)
        if (!(board[x][i] == 1))
            break;
    count += (y - i);
    for (i = y; i < N; i++)
        if (!(board[x][i] == 1))
            break;
    count += (i - y - 1);
    if (count >= 4) return true;

    //纵向检测
    count = 0;
    for (i = x; i < M; i++)
        if (!(board[i][y] == 1))
            break;
    count += (i - x);
    if (count >= 4) return true;

    //左下-右上
    count = 0;
    for (i = x j = y; i < M && j >= 0; i++ j--)
        if (!(board[i][j] == 1))
            break;
    count += (y - j);
    for (i = x j = y; i >= 0 && j < N; i-- j++)
        if (!(board[i][j] == 1))
            break;
    count += (j - y - 1);
    if (count >= 4) return true;

    //左上-右下
    count = 0;
    for (i = x j = y; i >= 0 && j >= 0; i-- j--)
        if (!(board[i][j] == 1))
            break;
    count += (y - j);
    for (i = x j = y; i < M && j < N; i++ j++)
        if (!(board[i][j] == 1))
            break;
    count += (j - y - 1);
    if (count >= 4) return true;

    return false;
}

bool machineWin(const int x const int y const int M const int N int* const* board){
//横向检测
    int i j;
    int count = 0;
    for (i = y; i >= 0; i--)
        if (!(board[x][i] == 2))
            break;
    count += (y - i);
    for (i = y; i < N; i++)
        if (!(board[x][i] == 2))
            break;
    count += (i - y - 1);
    if (count >= 4) return true;

    //纵向检测
    count = 0;
    for (i = x; i < M; i++)
        if (!(board[i][y] == 2))
            break;
    count += (i - x);
    if (count >= 4) return true;

    //左下-右上
    count = 0;
    for (i = x j = y; i < M && j >= 0; i++ j--)
        if (!(board[i][j] == 2))
            break;
    count += (y - j);
    for (i = x j = y; i >= 0 && j < N; i-- j++)
        if (!(board[i][j] == 2))
            break;
    count += (j - y - 1);
    if (count >= 4) return true;

    //左上-右下
    count = 0;
    for (i = x j = y; i >= 0 && j >= 0; i-- j--)
        if (!(board[i][j] == 2))
            break;
    count += (y - j);
    for (i = x j = y; i < M && j < N; i++ j++)
        if (!(board[i][j] == 2))
            break;
    count += (j - y - 1);
    if (count >= 4) return true;

    return false;
}

bool isTie(const int N const int* top){
bool tie = true;
    for (int i = 0; i < N; i++)
    {
        if (top[i] > 0)
        {
            tie = false;
            break;
        }
    }
    return tie;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2730  2011-10-22 00:22  重力四子棋\Judge.cpp

     文件       2517  2011-10-22 00:22  重力四子棋\Judge.h

     文件        503  2011-10-22 00:22  重力四子棋\Point.h

     文件      12241  2012-12-05 11:49  重力四子棋\Strategy.cpp

     文件        877  2012-12-04 17:13  重力四子棋\Strategy.h

     目录          0  2012-12-17 11:00  重力四子棋

----------- ---------  ---------- -----  ----

                18868                    6


评论

共有 条评论