你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 图形图象处理与游戏编程
用Java实现五子棋人机博弈(一)
 

摘 要 本文介绍在NeatBeans IDE 5.0环境中开发五子棋人机对战版的过程,并且对人机博弈的基础算法进行了详细的探讨。

关键词 NeatBeans;五子棋;人机博弈;Java;算法

 

一、引言

五子棋是一款非常经典的小游戏,相信大多数人都玩过,其中的博弈算法很多文章都有过专门的介绍,不过大都比较深,而且没有完整的实现过程。笔者经过几天的摸索,终于在NeatBeans环境中用Java语言实现该游戏。现在把整个实现过程写出来,供广大编程爱好者参考。

二、设计思路

“五子棋人机博弈”——顾名思义,就是玩家与电脑下棋,因此需要考虑如下几个方面:

1)棋盘与棋子的实现:要实现五子棋,首先要有玩五子棋的平台,即画出棋盘与棋子。

2)计算机博弈算法的实现:玩家落子后,计算机要根据当前的棋局寻找最佳落子点,并落子。这是本游戏的实现关键,本文将会重点介绍。

3)输赢的判断:一个游戏无论好与坏,最后都要分出胜负,因此如何判断输赢也是要重点讨论的问题。

三、具体设计

首先,打开NeatBeans并新建一个项目,选择“常规”——“ Java应用程序”,项目命名为“chess5”。

1.创建公共模块

我们创建公共模块是为了存放公共常量与公共变量。代码如下:

public class Model {

    public static final int MaxlineX=15; //棋盘的横线数

    public static final int MaxlineY=15; //棋盘的竖线数

}

2.创建顶层容器

创建顶层容器是为了实现软件模块化,把软件分成棋盘、状态、控制等,再用顶层容器去包含它们。

新建一个JFrame窗体,命名为Chessboard.java。然后把其它模块加进来,代码实现如下:

    public Chessboard() {

        initComponents(); //系统给出

        add(cbBoard); //加入棋盘面板

        cbBoard.setBounds(10,10,450,450);

        add(jpState); //加入状态面板

        jpState.setBounds(470,40,150,300);

    }

   private CBboard cbBoard=new CBboard(); //新建棋盘

   public JPstate jpState=new JPstate(); //新建状态

 

3.棋盘与棋子的实现

采用15*15的棋盘,即棋盘由15条横线与15条竖线拼成,共15*15个下棋点。

新建一个JPanel窗体,取名CBboard.java,然后用Graphics类的drawLine(x1,y1,x2,y2)函数在面板上画棋盘。代码实现如下:

     protected void paintComponent(Graphics g){

    //画棋盘

        int w=(int)CBboard.this.getWidth(); //得到棋盘的宽度

        int h=(int)CBboard.this.getHeight(); //得到棋盘的高度

        g.setColor(Color.red);// 用红色线画棋盘

        for(int i=boardlineX;i<=w-boardlineX;i+=((w-boardlineX*2)/( Model.MaxlineY -1))) //画竖线

            g.drawLine(i,boardlineY,i,h-boardlineY-6);

       for(int j=boardlineY;j<=h-boardlineY;j+=((h-boardlineY*2)/( Model.MaxlineX-1))) //画横线

           g.drawLine(boardlineX,j,w-boardlineX-6,j);

}

    private final int boardlineX=12; //边界宽度

    private final int boardlineY=12; //边界高度

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089