华丽丽的五子棋代码策略

  我的五子棋策略大概是这样的:
  主界面:放各种游戏按钮,人人对战、人机对战;以及各种需要传递的参数。
  棋盘界面:画棋盘,画棋子,重绘实现。
  菜单: 存放各种游戏信息按钮。
  鼠标监听类: 各种鼠标监听。
  动作监听: 各种动作监听。
  界面和主要类大概就是这些,然后是实现功能,首先是画棋盘,利用坐标写在重绘界面上就可以了,不难,
  然后我们来实现人人对战,主要策略就是一人下一颗棋,黑白交替,所以我们需要一个标志位sign,下一颗棋就改变一次,然后下棋需要下在坐标的正中间,所以我们需要判断,当鼠标点击在正坐标的周围(确定一定的误差值),那么就在该坐标点下棋,下完一颗棋,这一点就不能再下了,所以我们还需要一个标志位组sign2[][],未下棋置0,已下黑棋置1,已下白旗置2,这样当我们判断输赢的时候就可以靠这些坐标来下。
  下完一颗棋就要判断一次输赢,看是否满足输赢条件,这个方法的策略是,以当前下的棋子为中心,向该棋子的8个方向探索,如果有满足连续的5个sign2[][]为1的,那么可以判定赢了,在看sign2是2或者是1来判定赢的是哪一方。
  下棋就需要重绘,这个跟画图盘重绘是一个道理,创建一个数组,每下一次棋,就保存在数组里,重绘时就将数组里的元素重新画出来。
  下完一盘棋,即已判定谁输谁赢后,就需要把棋盘清空,即把数组清空,然后在更新一下棋盘界面,这时,棋盘恢复,又可以重新下棋了。
  然后是悔棋,人人的悔棋需要在点击悔棋按钮后删除棋子数组中的末尾元素,然后更新棋盘,同时要注意的是必须改变标志位sign2的在当前悔棋坐标的值,改为0,表示这又可以下棋了,否则,悔过棋的坐标将无法再下棋,就会留下很多真空。
  人机主要是要弄清楚算法,我简单的来说:首先,人先下一颗棋,然后电脑就要下一颗棋,操作不难,但是应该下在什么坐标呢?这时我们需要计算每个坐标的“权值”。所谓权值就是坐标的重要性,当用户下一颗棋时,该坐标周围8个坐标应该是比较重要需要堵死的,且让权值加1,然后顺着这个坐标来看如果有连续的2个子,3个字,或者是4个子,我们就把他们两端的权值加5,50,500,然后,如果其中有一边被堵了,尤其是3个子,那么就不要么重要了,权值可以减30;当然4个字不存在这种情况,这样就行了。当然,你也要给点药颜色的子周边加权值,别只是一味的堵,自己的子有4个了还不知道赢。
  已下是我做的一个五子棋。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值