基于Monte Carlo方法的五子棋算法设计与实现(中期报告)

已完成工作
完成了五子棋的界面,实现了五子棋的基本逻辑
明确了极大极小算法与相关优化方法
蒙特卡洛算法的初步研究:与极大极小算法的区别、在AlphaGO中的应用

  1. 五子棋的界面:
    目前程序分为四个类与接口:Board、BoardConfig(接口)、Computer、Main
    1.1 Board:
    五子棋的面板类,继承自JPanel,实现下棋功能。此类中定义了两个成员内部类:按钮监控类与面板监控类,分别用于按钮的动作监听与面板的鼠标监听。棋局的状态通过面板上一个带滑动条的文本域显示。此文本域默认位置为跟随光标的位置。此面板被JFrame包裹。
    (1)当棋手下一步棋时,会另开一个Computer类线程,完成电脑的判断,并通过改变面板类的二维数组,实现电脑落子。
    (2)判断五子棋的输赢情况。当存在五子相连时,程序会进行胜负判断显示在文本域上,并不再允许落子以及不允许电脑线程启动,并将胜负标记设置为true(分出胜负)。如果棋局未分出胜负,将不做任何处理。
    (3)实现重置棋盘功能。当点击重置棋盘按钮时,胜负标记会被重置为false(未分胜负),存储棋子的二维数组被清空,先手标记会重置为先手方(先手方参数可在BoardConfig接口设置,可选项为BLACK或WHITE)并且如果电脑线程已经启动,将会停止电脑线程。最后清空文本域,并在文本域输出已重置信息。
    (4)解决落子冲突。当电脑进程在启动过程中,如果检测到棋手点击棋盘范围,将不产生落子动作。并在文本域上显示提示信息。
    1.2 BoardConfig接口:
    设置五子棋的参数。可调整的参数为棋盘大小、棋盘的单位格子大小、先手颜色、棋手与电脑执棋颜色。除此之外,其他参数都以相对长度计算。调整参数的目的是在编程时调试程序,实际运行过程中,将不调整任何参数。(其他参数包括:面板大小与位置、按钮大小与位置、窗体大小与位置、棋盘的背景颜色)
    1.3 Computer:
    电脑进行判断的类。此类实现了Runnable接口,因此可作为线程启动。为了在Computer类中调用Board类中的成员,将Board类作为Computer类的成员变量传入。在电脑类中定义了蒙特卡洛方法,此算法目前还未实现,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shejizuopin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值