玩C# 业余时间多 有兴趣一起做个五子棋或黑白棋的小游戏  GDI+ 只用最简单的技术  11-29开始报名哦  QQ群号码42183401

 


 

 

              采用 分散式 耦合 结构      开发此游戏 

 

部分代码 https://files.cnblogs.com/feathersky/Chess.rar

 

每个模块可以多个人开发,每个人也可以开发多个模块,全凭个人兴趣。

在开发过程中不断完善并标准化各函数接口,所有人员参与这个完善的过程,练习一下自己的模块组织能力。

 

完成自己的模块后 ,上传到群共享里就可以了。不规定时间,格式等等 ,完全松散式管理,如果是没人有兴趣写代码,那么也就自然而然的夭折掉了。

 

通用表示

Int M=10;         棋盘

Int N=10;         棋盘

Int[M,N] board;    棋盘

 

Int empty=0, black=1, white=2;     // 表示空 ,黑棋,白棋

 

Int playerRole=black/white;

 

模块一 界面交互:

实现功能

ShowBoard(int[,] board);  显示棋盘

PlayerClick              玩家点击鼠标处理

 

 

 

模块二 计算当前局势

实现功能

Int[ ] Calculate(int[,] board)

计算出黑白双方的双三,单三,双四,单四等等(例如单四是一头被堵死的,还是两头都是自由的)。 返回不同的值,此值自定义。

 

 

 

模块三 搜索最佳电脑应落子的位子

实现功能

根据Calculate 得到的结果赋予棋盘不同的权值

Weight(Int[2]situation)

 

 

先实现一个最简单的一步搜索算法

FindBestPosition(int[,] board, int color)

如果当前轮到color颜色的棋走,找到此棋应落下的位置,找不到的话就先随机生成一个点

 

搜索

假设color棋子落下不同的点,计算其局势Calculate,计算权重weight, 找到最大的权重所对应的点。

 

 

 

程序对战 所有策略作成如下类库,放入player目录 即可自动调用

即实现如下3个函数即可,其他的函数可任意添加,程序只调用这3个函数  大家可以试试谁的程序比较强

 

目前主要代码编写者: 绝〓无情,   羽天

 

 

代码
namespace ChessPlayer
{
    
public class Player
    {
        
int color = 0;

        
public string GetName()
        {
            
return "Computer";
        }

        
public void SetColor(int _color)
        {
            color 
= _color;
        }


        
public int[] PlaceChess(int[,] board)      //轮到你走棋,传入 棋盘,  传出 你要走哪里
        {
            

            
int M = board.GetLength(0);
            
int N = board.GetLength(1);


            
//随机产生一个空位
            Random rand = new Random();
           

            
for (int i = 0; i < 500; i++)
            {
                
int x = rand.Next(M);

                
int y = rand.Next(N);

                
if (board[x, y] == 0return new int[] { x, y };
            }

            
return new int[] { 00 };
        }
    }
}


 

 

posted on 2009-11-29 10:30  feathersky  阅读(1100)  评论(1编辑  收藏  举报