文档库 最新最全的文档下载
当前位置:文档库 › Java语言程序设计的课程设计项目——利用Java实现人机五子棋游戏项目完整实现实例(第2部分)

Java语言程序设计的课程设计项目——利用Java实现人机五子棋游戏项目完整实现实例(第2部分)

Java语言程序设计的课程设计项目——利用Java实现人机五子棋游戏项目完整实现实例(第2部分)
Java语言程序设计的课程设计项目——利用Java实现人机五子棋游戏项目完整实现实例(第2部分)

1.1Java语言程序设计的课程设计项目——利用Java实现人机五子棋游戏项目完整实现实例(第2部分)

4、人机五子棋游戏启动快闪屏SplashImagePane面板类

(1)类名称为SplashImagePane,包名称为com.px1987.backgammongame.splashframe

(2)该定制的面板类主要实现将快闪屏图像内嵌到该面板中

在paint()方法中将图像绘制到面板中,而不是将图像内嵌到面板中。

public void paint(Graphics currentGraphics){

currentGraphics.drawImage(splashImageInstance,0,0,this);

}

(3)MediaTracker类

在某些情况下,我们需要在图像完全加载完毕后再进行显示。但图像在什么时候已经加载完毕呢?这可以调用媒体跟踪器(Media Tracker)来加载图像和获得图像最终的加载状态。

媒体跟踪器MediaTracker类型的对象专门用来跟踪图像的加载过程,MediaTracker类在java.awt包中定义。MediaTracker类的作用:它是一个跟踪多种媒体对象状态的实用工具类,媒体对象可以包括音频剪辑和图像,但目前仅支持图像。

(4)创建MediaTracker类的对象

MediaTracker mediaTrackerInstance=new MediaTracker(this);

初始化MediaTracker的实例mediaTrackerInstance,MediaTracker类的一个构造方法需要一个组件引用的参数,这个组件对象就是装入图像的组件。这里的this表示本容器,也就是在本面板组件中创建图像。

(5)应用addImage()方法把所关心的所有图像对象都加到MediaTracker的控制下使用MediaTracker类的addImage(Image image, int id)方法,指定要跟踪的图像对象。其中的id是给每个图像一个标识,该标识决定被加载图像的优先级,用一组ID来把不同的图像组成一个图像组。

媒体跟踪器可以同时跟踪多个图像,多个图像可以拥有相同的标识,标识的值决定加载图像的优先级,具有相对较低标识值的图像优先加载。本示例中的图像的标识指定为0。

(6)调用waitForAll()方法,开始加载图像和检查加载的状态

调用的线程将被阻塞等待图像的加载,waitForAll方法将无限期进行等待。因为这些方法可能会抛出异常,所以要将其放入一个try…catch语句块中。

还有另外一个版本的waitForAll方法,该方法需要一个长整型变量,指定初始化加载过程以及等待图像加载的时间,时间用毫秒表示,由这个长整型的参数决定。但是使用这种方法,我们并不知道在该方法返回时,图像是否真的装载完毕了,还是等待的时间到了;也许图像早就加载完毕了,但因为设置的等待时间还没有结束,因此媒体跟踪器仍旧在等待,这样会严重浪费系统资源。所以我们推荐使用不带参数的waitForAll方法。

(7)getPreferredSize()方法的作用

getPreferredSize方法对于布局管理器来说至关重要,布局管理器会通过getPreferredSize 的判断组件的最佳大小,并进行布局。而对于本范例而言,getPreferredSize方法返回背景图片的大小。为此,必须重写public Dimension getPreferredSize()方法来获得图片的最佳尺寸,然后由系统设置面板的尺寸为图片的尺寸。

(8)SplashImagePane完整的代码实例

package com.px1987.backgammongame.splashframe;

import java.awt.Dimension;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.MediaTracker;

import javax.swing.JPanel;

public class SplashImagePane extends JPanel { //封装装载图像的Panel

private static final long serialVersionUID = 1L;

private Image splashImageInstance;

public SplashImagePane(Image splashImageInstance){

MediaTracker mediaTrackerInstance=new MediaTracker(this);

mediaTrackerInstance.addImage(splashImageInstance,0);

try{

mediaTrackerInstance.waitForID(0);

}

catch(Exception oneException){

oneException.printStackTrace();

}

this.splashImageInstance=splashImageInstance;

}

public void paint(Graphics currentGraphics){ //绘制图像

currentGraphics.drawImage(splashImageInstance,0,0,this);

}

public Dimension getPreferredSize(){ //设置图像Panel的大小

return new Dimension(splashImageInstance.getWidth(this),

splashImageInstance.getHeight(this));

}

}

5、系统初始化加载的后台线程类SystemInitThread

(1)类名称为SystemInitThread,包名称为com.px1987.backgammongame.mainframe.thread (2)在该线程的run()方法内进行系统初始化

(3)SystemInitThread类的完整程序代码实例

package com.px1987.backgammongame.mainframe.thread;

import com.px1987.backgammongame.splashframe.SplashImageJWindow;

import com.px1987.backgammongame.util.AllBackGammonGameAppConstant;

import com.px1987.backgammongame.util.BackGammonGameUtils;

public class SystemInitThread extends Thread {

private SplashImageJWindow oneSplashImageJWindow=null;

public SystemInitThread() {

}

public SystemInitThread(SplashImageJWindow oneSplashImageJWindow) {

this.oneSplashImageJWindow=oneSplashImageJWindow;

}

@Override

public void run() {//下面的代码实现使当前线程睡眠5秒以模拟系统初始化加载,同时使得闪屏窗口能够稳定地显示在屏幕上

try {

oneSplashImageJWindow.getInitProcessInfoLabel().setText("正在加载系统全局配置文件...");

Thread.sleep(AllBackGammonGameAppConstant.splashWindowSleepTime);

oneSplashImageJWindow.getInitProcessInfoLabel().setText("正在链接后台Web服务器和身份验证...");

Thread.sleep(AllBackGammonGameAppConstant.splashWindowSleepTime);

oneSplashImageJWindow.getInitProcessInfoLabel().setText("正在从Web服务器下载系统资源...");

Thread.sleep(AllBackGammonGameAppConstant.splashWindowSleepTime);

oneSplashImageJWindow.getInitProcessInfoLabel().setText("正在查询系统数据库并定位客户端系统...");

Thread.sleep(AllBackGammonGameAppConstant.splashWindowSleepTime);

} catch (InterruptedException e) {

e.printStackTrace();

}

BackGammonGameUtils.systemInitOk=true;

}

}

6、人机五子棋游戏主窗口类BackGammonGameMainFrame

(1)类名称为BackGammonGameMainFrame,包名称为com.px1987.backgammongame.mainframe

(2)initThisMainFrame()方法初始化主窗口本身的属性

(3)createCenterJSplitPane方法创建分割面板组件

在该方法中应用JTabbedPane类实现Java选项卡组件,最终的结果如下图所示:

(4)reStartGame()方法实现对棋盘及窗口重新初始化以再次开局

(5)BackGammonGameMainFrame类的完整程序代码实例

package com.px1987.backgammongame.mainframe;

import java.awt.BorderLayout;

import java.awt.Image;

import java.awt.Toolkit;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JSplitPane;

import javax.swing.JTabbedPane;

import javax.swing.SwingConstants;

import com.px1987.backgammongame.mainframe.advertisement.AdvertisementBarPanel;

import com.px1987.backgammongame.mainframe.boardpanel.BackgammonBoardPanel;

import

com.px1987.backgammongame.mainframe.event.BackGammonGameMainFrame_WindowListener ;

import com.px1987.backgammongame.mainframe.event.BackgammonBoardPanel_MouseListener; import com.px1987.backgammongame.mainframe.menu.BackgammonMainMenuBar;

import com.px1987.backgammongame.mainframe.panel.MainFrameHelpInfoPanel; import com.px1987.backgammongame.mainframe.panel.MainFrameResultInfoPanel; import com.px1987.backgammongame.mainframe.panel.MainFrameWelComeInfoPanel; import com.px1987.backgammongame.mainframe.statusbar.MainFrameStatusBarPanel; import com.px1987.backgammongame.mainframe.toolbar.BackgammonLeftToolBar; import com.px1987.backgammongame.mainframe.toolbar.BackgammonMainToolBar; import com.px1987.backgammongame.pobject.BackGammonGameVO;

import com.px1987.backgammongame.service.BackgammonChessBoardService; import com.px1987.backgammongame.util.AllBackGammonGameAppConstant; import com.px1987.backgammongame.util.BackGammonGameUtils;

public class BackGammonGameMainFrame extends JFrame {

private static final long serialVersionUID=218976543251L;

private BackgammonMainToolBar oneBackgammonMainToolBar=null;

public BackgammonMainToolBar getOneBackgammonMainToolBar() { return oneBackgammonMainToolBar;

}

private BackgammonLeftToolBar oneBackgammonLeftToolBar=null;

public BackgammonLeftToolBar getOneBackgammonLeftToolBar() {

return oneBackgammonLeftToolBar;

}

private BackgammonBoardPanel oneBackgammonBoardPanel;

public BackgammonBoardPanel getOneBackgammonBoardPanel() {

return oneBackgammonBoardPanel;

}

private AdvertisementBarPanel oneAdvertisementBarPanel=null;

public AdvertisementBarPanel getOneAdvertisementBarPanel() {

return oneAdvertisementBarPanel;

}

private BackgammonChessBoardService oneBackgammonBoard=null;

public BackgammonChessBoardService getOneBackgammonBoard() {

return oneBackgammonBoard;

}

private JPanel contentPanelInMainFrame=null;

private static MainFrameStatusBarPanel oneMainFrameStatusBarPanel=null;

public static MainFrameStatusBarPanel getOneMainFrameStatusBarPanel() { return oneMainFrameStatusBarPanel;

}

private JSplitPane centerSplitPaneInstance = null;

public BackGammonGameMainFrame(){

super();

BackGammonGameUtils.calculateChessBoardColAndRowNumber();

initThisMainFrame();

createMainMenuBar();

contentPanelInMainFrame=new JPanel();

contentPanelInMainFrame.setLayout(new BorderLayout());

setContentPane(contentPanelInMainFrame);

createMainFrameToolBar();

createCenterJSplitPane(contentPanelInMainFrame);

createStatusBarInMainFrame();

setLocationRelativeTo(null); //居中显示

}

private void initThisMainFrame(){

this.setTitle("蓝梦人机对弈五子棋游戏系统");

/*

* 下面的代码设置主窗口的尺寸为整个屏幕的尺寸大小,从而产生出窗口最大化效果

*/

this.setSize((int)Toolkit.getDefaultToolkit().getScreenSize().getWidth(),

(int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight()-

AllBackGammonGameAppConstant.windowsTaskBarHeight));

Image oneIconImage=Toolkit.getDefaultToolkit().getImage(getClass().

getResource("/images/mainframe/mainframeIconImage.jpg"));

this.setIconImage(oneIconImage); //设置主窗口的图标

// this.setResizable(false);

this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);;

this.addWindowListener(new BackGammonGameMainFrame_WindowListener(this)); // this.setAlwaysOnTop(true);

}

private void createMainMenuBar(){

BackgammonMainMenuBar mainMenuBar=new BackgammonMainMenuBar(this);

this.setJMenuBar(mainMenuBar);

}

private void createMainFrameToolBar(){

oneBackgammonMainToolBar=new BackgammonMainToolBar("系统主工具条",this);

contentPanelInMainFrame.add(oneBackgammonMainToolBar,BorderLayout.NORTH);

oneBackgammonLeftToolBar=new BackgammonLeftToolBar("系统辅工具条",this);

oneBackgammonLeftToolBar.setOrientation(SwingConstants.VERTICAL);

contentPanelInMainFrame.add(oneBackgammonLeftToolBar,BorderLayout.WEST);

}

/*

* 下面的方法利用分割面板组件实现窗口的左右分割,在左面添加动态广告条面板,

* 而在右面添加一个带有三个子面板的JTabbedPane对象

*/

private void createCenterJSplitPane(JPanel contentPanelInMainFrame){

centerSplitPaneInstance = new JSplitPane();

centerSplitPaneInstance.setEnabled(false);

centerSplitPaneInstance.setDividerSize(1);

centerSplitPaneInstance.setDividerLocation(AllBackGammonGameAppConstant.advertisemen tBarImageWidth);

contentPanelInMainFrame.add(centerSplitPaneInstance,BorderLayout.CENTER);

oneAdvertisementBarPanel=new AdvertisementBarPanel(this);

centerSplitPaneInstance.add(oneAdvertisementBarPanel, JSplitPane.LEFT);

JTabbedPane centerJTabbedPaneInstance=new JTabbedPane(JTabbedPane.TOP,

JTabbedPane.WRAP_TAB_LAYOUT);

MainFrameWelComeInfoPanel oneMainFrameWelComeInfoPanel=new MainFrameWelComeInfoPanel(this);

centerJTabbedPaneInstance.addTab("欢迎", oneMainFrameWelComeInfoPanel);

centerJTabbedPaneInstance.setIconAt(0, new ImageIcon(getClass().getResource(

"/images/mainframe/tabpane/welcomeimage.jpg")));

oneBackgammonBoard=new

BackgammonChessBoardService(BackGammonGameVO.getBackGammonGameVO().getGridCol Number(),

BackGammonGameVO.getBackGammonGameVO().getGridRowNumber());

oneBackgammonBoardPanel=new BackgammonBoardPanel(oneBackgammonBoard);

centerJTabbedPaneInstance.addTab("开局", oneBackgammonBoardPanel);

centerJTabbedPaneInstance.setIconAt(1, new ImageIcon(getClass().getResource(

"/images/mainframe/tabpane/chessboard.jpg")));

MainFrameResultInfoPanel oneMainFrameResultInfoPanel=new MainFrameResultInfoPanel(this);

centerJTabbedPaneInstance.addTab("信息", oneMainFrameResultInfoPanel);

centerJTabbedPaneInstance.setIconAt(2, new ImageIcon(getClass().getResource(

"/images/mainframe/tabpane/infotabimage.jpg")));

MainFrameHelpInfoPanel oneMainFrameHelpInfoPanel=new MainFrameHelpInfoPanel(this);

centerJTabbedPaneInstance.addTab("帮助", oneMainFrameHelpInfoPanel);

centerJTabbedPaneInstance.setIconAt(3, new ImageIcon(getClass().getResource(

"/images/mainframe/tabpane/helptabimage.jpg")));

centerSplitPaneInstance.add(centerJTabbedPaneInstance, JSplitPane.RIGHT);

}

private void createStatusBarInMainFrame(){

oneMainFrameStatusBarPanel =new MainFrameStatusBarPanel();

contentPanelInMainFrame.add(oneMainFrameStatusBarPanel,BorderLayout.SOUTH);

}

public void reStartGame(){

BackgammonBoardPanel.setTimerStart(false);

oneBackgammonBoard=new

BackgammonChessBoardService(BackGammonGameVO.getBackGammonGameVO().getGridCol Number(),

BackGammonGameVO.getBackGammonGameVO().getGridRowNumber());

oneBackgammonBoardPanel.setOneBackgammonBoard(oneBackgammonBoard);

oneBackgammonBoardPanel.setBackGammonBoardGridColNumber(BackGammonGameVO. getBackGammonGameVO().getGridColNumber());

oneBackgammonBoardPanel.setBackGammonBoardGridRowNumber(BackGammonGameVO .getBackGammonGameVO().getGridRowNumber());

oneBackgammonBoardPanel.addMouseListener(new

BackgammonBoardPanel_MouseListener(oneBackgammonBoardPanel,oneBackgammonBoard));

oneBackgammonBoardPanel.repaint();

centerSplitPaneInstance.setDividerLocation(AllBackGammonGameAppConstant.advertisemen

tBarImageWidth);

this.setSize((int)Toolkit.getDefaultToolkit().getScreenSize().getWidth(),

(int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight()-

AllBackGammonGameAppConstant.windowsTaskBarHeight));

}

}

Java五子棋游戏源代码(人机对战)

//Java编程:五子棋游戏源代码 import java.awt.*; import java.awt.event.*; import java.applet.*; import javax.swing.*; import java.io.PrintStream; import javax.swing.JComponent; import javax.swing.JPanel; /* *main方法创建了ChessFrame类的一个实例对象(cf), *并启动屏幕显示显示该实例对象。 **/ public class FiveChessAppletDemo { public static void main(String args[]){ ChessFrame cf = new ChessFrame(); cf.show(); } } /* *类ChessFrame主要功能是创建五子棋游戏主窗体和菜单**/ class ChessFrame extends JFrame implements ActionListener { private String[] strsize={"20x15","30x20","40x30"}; private String[] strmode={"人机对弈","人人对弈"}; public static boolean iscomputer=true,checkcomputer=true; private int width,height; private ChessModel cm; private MainPanel mp; //构造五子棋游戏的主窗体 public ChessFrame() { this.setTitle("五子棋游戏"); cm=new ChessModel(1); mp=new MainPanel(cm); Container con=this.getContentPane(); con.add(mp,"Center"); this.setResizable(false); this.addWindowListener(new ChessWindowEvent()); MapSize(20,15); JMenuBar mbar = new JMenuBar(); this.setJMenuBar(mbar); JMenu gameMenu = new JMenu("游戏");

JAVA课程设计 五子棋

攀枝花学院课程业设计 五子棋 学生姓名: 学号: 所在院(系):数学院计算机学院专业:信息与计算科学指导教师:讲师 二〇一四年六月 攀枝花学院教务处制

攀枝花学院本科学生课程设计任务书 注:任务书由指导教师填写。

摘要 五子棋作为一类棋类竞技运动,现在很流行,很多人把它作为一类开发智力的一种游戏,锻炼人的思维。这次课题主要是完成人机对战,在对战中电脑根据人的思维做出相应的反应,电脑对战中通过深度的搜索,使得自身有更大的胜算,估值计算也是一种方法,可以提高电脑的智能度。分析模块中影响智能的因素也不少,通过节点比较与节点连接后的结果做出估计提高智能,了解递归算法、电脑学习等对此有很大帮助。算法是程序的灵魂,一旦算法正确那么程序将很好。不同的人工智能将会有不同的帮助,多去了解将更能提高智能程度。五子棋是我国的一门文化,这将使得它更受世界人们的欢迎。有助我国文化发展。 关键词五子棋,智能,算法,模块,人机对战

目录 1 需求分析 (1) 1.1需求来源 (1) 1.2设计目的 (1) 2 功能需求分析 (1) 2.1功能需求 (1) 3 设计与实现 (2) 3.1设计思想 (2) 3.2系统模块结构 (2) 3.3流程图 (2) 4 概要设计 (4) 4.1抽象数据类型定义 (4) 4.2程序包含模块 (4) 4.3模块间关系 (4) 4.4系统功能实现 (4) 5 模块设计 (5) 5.1主界面模块 (5) 5.2选择模块 (5) 5.3判断模块、 (5) 5.4显示模块 (5) 参考文献 (9)

1 需求分析 1.1需求来源 计算机在我们的生活中有越来越重要的角色,我们也越来越离不开计算机,计算机带给我们许多便利,学习好计算机知识已经是必不可少的一项技能了。特别是电子商务、电子邮件等,人工智能现在的热点方向,人们感叹计算机的高效是也感叹自己的聪明,人工智能现在是很好的以方面。 1.2设计目的 该软件为用户提供一个在Windows系统上运行的五子棋游戏小系统。应达到的目的是:建立人机对战的模块,可以机器思考如何应对。已达到提高智力的效果设计出五子棋的游戏界面,创建对象可以在地图中站位,在每一步后计算机会自己运算自己的下一步,任何一方不可以越界,当一方达到五子是判断谁是胜利者,在过程中尽量使得游戏智能程度更高。 2 功能需求分析 2.1功能需求 现在研究五子棋的算法已经很多了,比较经典的有递归、二叉树等,这也是很基础的,不同算法要求也不同,要求的能力也不同,每一种算法都是使得程序清晰明白,当五子相连就算胜利。故我们要理解中间过程。 每个代码实现功能也是不同的,有的是判断,有的是理解,有的是更好知道程序,程序在执行时我们可以知道哪里出错。哪里会有问题,修改便利。、在错误中学习,加强自己的基础知识与算法的能力。

五子棋报告-java

XXXX大学 XX学院 课程设计报告 课程名称:面向对象程序设计 题目名称:五子棋游戏设计 学生姓名: 专业班级: 指导教师:任晓强

一、课程设计目的与任务(四号、宋体、加黑、顶格) (1)掌握Java编程、面向对象的基础知识。 (2)较熟练地编写Java应用程序Application。 (3)了解Java的常用标准类库、编程技巧、异常处理。 (4)联系已学过的内容,巩固所学的理论,增强独立工作能力。(5)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。 (6)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。 课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。 二、课程设计内容 1本设计题目的主要内容 设计一个15╳15围棋棋盘,由两玩家交替进行对战,并可以实现以下功能: 1.选择落子的先后顺序 2.重置棋盘 3.刷新重新开始 4.退出提示 并且规定退出者判为负,但退出过程中要有提示。以防不小心点错了。 最后判断某一方是否为五子连珠。 实现一个简单的多用户五子棋的游戏程序,包括如下两个界面 (1)选择对弈桌(执黑、执白)。 (2)在游戏界面,有开始,退出(游戏未结束、点退出自动判负); 2 设计思想与程序构架

程序流程图 程序的功能分配 a. 棋盘的绘制 public void draw_qipan(Graphics G) 添加按钮 Button b1=new Button("开始"); Button b2=new Button("重置游戏"); Label lblWin=new Label(" "); Checkbox ckbHB[]=new Checkbox[3]; Button exist = new Button("退出"); public void init(){ ckbHB[0]=new Checkbox("执白",ckgHB,false); ckbHB[1]=new Checkbox("执黑",ckgHB,false); ckbHB[2]=new Checkbox("观看",ckgHB, false); } c. 鼠标棋子的触发事件 public void mouseClicked(MouseEvent e) { Graphics g=getGraphics(); int x1,y1; x1=(); y1=(); if ()<20 || ()>300 || ()<20 || ()>300) {

基于Java五子棋游戏的设计源代码及全套资料

分类号: U D C:D10621-408-(2007)5738-0 密级:公开编号:21 成都信息工程学院 学位论文 基于Java的五子棋游戏的设计 论文作者姓名:赵小龙 申请学位类别:计算机科学与技术 申请学位类别:工学学士 指导教师姓名(职称):吴春旺 论文提交日期:2007年06月10日

基于Java的五子棋游戏的设计 摘要 五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏。主要完成了人机对战和玩家之间联网对战2个功能。网络连接部分为Socket编程应用,客户端和服务器端的交互用Class Message定义,有很好的可扩展性,客户端负责界面维护和收集用户输入的信息,及错误处理。服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息,动态维护用户列表。在人机对弈中通过深度搜索和估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高电脑AI方案,如递归算法、电脑学习等。算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。 关键词:深度搜索;估值;电脑AI;五子棋;算法

Gobang Java-based games design Abstract As a sport, gobang is very popular in civil, in order to become familiar with gobang rules and techniques, and the study of simple artificial intelligence, I decide to use the Java to develope gobang games and complete the two functions including man-machine war and man-man war. Network Connection is Socket Programming for some applications, client and server interaction is definited by Class Message, which is a very good scalability, Client interface is responsible for the collection and maintenance of user input information, and error handling. Server users maintain online basic information and arbitrary two-time users of the chessboard of information, dynamic maintenance user list. During the man-machine players, it improves intelligence of the computer players through depth search and valuation module. Analyzes Module valuation of the precise elements, as well as a number of increased precision, and compares their search for nodes, which raises some computer AI programs on the basis of analysis, such as recursive algorithm, computer learning. Algorithm of procedures contribute to the understanding of the structure, logical thinking ability, In other areas of artificial intelligence has great references. . Key words:Search depth; Valuation; Computer AI; Gobang ; Algorithm

五子棋(JAVA版)实习报告及原代码

实习报告 课程名称信息系统认知实习实习题目java五子棋专业 班级 学号 学生姓名 实习成绩 指导教师 2010年1月 前言

摘要 五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏。主要完成了人机对战和玩家之间联网对战2个功能。网络连接部分为Socket编程应用,客户端和服务器端的交互用Class Message定义,有很好的可扩展性,客户端负责界面维护和收集用户输入的信息,及错误处理。服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息,动态维护用户列表。在人机对弈中通过深度搜索和估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高电脑AI方案,如递归算法、电脑学习等。算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。 1引言 1.1课题背景 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为连珠,英译为Renju,英文称之为Gobang或FIR(Five in a Row 的缩写),亦有连五子、五子连、串珠、五目、五目碰、五格等多种称谓。 五子棋起源于古代中国,发展于日本,风靡于欧洲。对于它与围棋的关系有两种说法,一说早于围棋,早在“尧造围棋”之前,民间就已有五子棋游戏;一说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。本世纪初五子棋传入欧洲并迅速风靡全欧。通过一系列的变化,使五子棋这一简单的游戏复杂化、规范化,而最终成为今天的职业连珠五子棋,同时也成为一种国际 比赛棋。 Java语言是当今最为流行的程序设计语言之一作为一门非常优秀和极为健壮的编程语言,它同时具有的面向对象,与平台无关,分布式应用,安全,稳定和多线程等优良的特征,使用Java语言,不仅可以开发出功能强大的大型应用程序,而且Java语言本身突出的跨平台的特性也使得它特别适合于Internet上的应用开发,可以这样说,Java的出现使得所开发的应用程序“一次编写,处处可用”的 实现成为了可能。 1.2本课题研究的意义 近来随着计算机的快速发展,各种各样的电脑游戏层出不穷,使得我们能有更多的娱乐项目,而棋类游戏能起到锻炼人的思维和修身养性的作用,而且棋类游戏水平颇高,大有与人脑分庭抗礼之势。其中战胜过国际象棋世界冠军-卡斯帕罗夫的“深蓝”便是最具说服力的代表;其它像围棋的“手淡”、象棋的“将族”

五子棋-Java课程设计

《面向对象程序设计》 课程设计报告 实验时间:2010年10月26日 实验班级:********************** 实验报告总份(片)数: 1 份(片) 实验指导老师:***** ******* 设计小组 湖南省吉首市吉首大学 课程设计报告 简单的游戏——五子棋 小组成员(姓名、学号): **(组长)** ** ** ** ** 一、实验分工

二、开发环境(实验编译以及测试环境) 硬件环境: CPU:Intel 奔腾双核E5200 主频2.5GHz 内存:2G 软件环境: 操作系统:Windows 7 编程环境JDK7.0 开发工具:Eclipse SDK 三、使用环境(用户运行环境) 硬件环境: CPU主频在500MHZ以上,内存在128M以上 软件环境: JAVA运行环境+ Windows XP或Windows 2000 以上操作系统 目录 第一章总体设计.............................................................................................................................. 1 1.1设计的目的.......................................................................................................................... 1 1.2本系统的主要功能.............................................................................................................. 1 1.3系统包含的类及类之间的关系。...................................................................................... 1 1.4 Java源文件及其功能......................................................................................................... 2 1.5 项目构建思路..................................................................................................................... 2第二章模块功能介绍.................................................................................................................. 12 2.1主类Chess...................................................................................................................... 12

五子棋java设计文档

安阳工学院 JA V A课程综合项目报告 项目题目:五子棋 专业班级:12网工专升本 学生姓名:阮营营 学生学号:201203060042 指导教师姓名:许研 2012年12月 安阳工学院计算机学院制

目录 一、系统目标 (2) 二、系统设计思路 (2) 三、系统详细设计 (2) 四、系统实现 (9) 五、系统设计总结 (12) 六、参考文献 (12)

一、系统目标 1、主要是介绍开发五子棋的整个过程,体现流程设计与类设计的基本方法,示范了数组的使用,使用了分支结构与循环结构的流程控制 2、通过课程设计把课堂上讲的内容融会贯通,学会设计程序、开发应软件、开发系统软件等各项工作。 3、通过实习掌握语言的语法结构,理解类和对象的概念,准确的使用各种数据类型,对面向对象中的继承和多态的概念要理解、会使用,在程序中提高代码的重用性,使设计的程序结构清晰、易于维护。 二、系统设计思路 1、获取棋盘设计一个11╳11围棋棋盘,由两玩家交替进行对战,并可以实现以下功能。五子棋的规则为: 2、下棋方法两人分别执黑白两色棋子。轮流在棋盘上选择一个无子的交叉点落子,无子的交叉点又被称为空点。 3、输赢判断每次下完一颗棋子,就通过程序从横、竖、斜各个方向扫描棋盘,如果在某个方向中,有同种颜色的棋子达到五连子,则此颜色的玩家为赢。如果没有相同颜色的棋子达到五连子,则继续游戏。 三、系统详细设计 3.1程序流程图

3.2创建棋盘类,绘制棋盘的样式 main方法创建了ChessFrame类的一个实例对象,并启动屏幕显示显示该实例对象。 public static void main(String argc[]) { myframe f = new myframe(); } 构造五子棋的主窗体: class myframe extends Frame implements WindowListener { mypanel panel; myframe() { setLayout(null); panel = new mypanel(); add(panel); panel.setBounds(0, 23, 360, 360);

基于JAVA的五子棋游戏系统设计与实现

基于JAVA的五子棋游戏系统设计与实 现

基于JAVA的五子棋游戏系统设计与实现专业电子信息工程 学生董永杰 指导教师曾玉

摘要 当前,随着计算机网络的的发展,以计算机技术和网络技术为核心的现代网络技术已经在现实生活和生产中得到了广泛的使用,已经成为多数人群的休闲方式,也为多数人所喜好。当然,为了满足没有网络同样能娱乐的要求,许多小游戏做成了单机和网络的双功能。 本软件使用JAVA语户端之间的连接,利用多线程技术言实现,经过对图形界面,绘图,布局管理器等去构造出游戏的单机功能,在此基础上,利用SCOKET的知识,建立起服务器与客来处理服务器端与客户端之间的数据传输,通信问题,使得客户端和服务器端之间能够同步的进行处理。 经过对软件的编写,更深入的理解了面向对象的概念,也体会到利用面向对象语言处理一些问题的优势。同时也加深了对多线程,流套接字等高级技术的理解。 关键词:多线程;流套接字;数据传输;同步。

ABSTRACT At present, With the rapid development of computer network. Taking computer technology and the network technology as the core, modern network technology is already used in the real life and the production and already became the leisure mode of the most people. And most people like them. Of course, it’s a pity that there still have some clients lacking of network because of various causes. In order to satisfy the above clients’ requirements. A large number of games ,usually nam ed as “small games” by players, are designed for involving two kinds of different function. The former game is often played by these players whose computers never connect with the network. It’s called for stand-alone version games. Just as its name implies, the later is named as online version games This software implemented with JAVA language, and according to the understanding of SCOKET ,GUI and paint image ichnology. Established in these foundation , the server co ects with the multi- client, and transmission the information between many clients using the multi-thread proceeding technology. it is very convenient for both client and server to do the synchronous processing. Through to the software compilation, deepen understanding and grasp to the technology above understanding and holding.

基于JAVA的五子棋游戏系统设计与实现

基于JA V A的五子棋游戏系统设计与实现专业电子信息工程 学生董永杰 指导教师曾玉

摘要 目前,随着计算机网络的的发展,以计算机技术和网络技术为核心的现代网络技术已经在现实生活和生产中得到了广泛的使用,已经成为多数人群的休闲方式,也为多数人所喜好。当然,为了满足没有网络同样能娱乐的要求,许多小游戏做成了单机和网络的双功能。 本软件使用JAVA语户端之间的连接,利用多线程技术言实现,通过对图形界面,绘图,布局管理器等去构造出游戏的单机功能,在此基础上,利用SCOKET 的知识,建立起服务器与客来处理服务器端与客户端之间的数据传输,通信问题,使得客户端和服务器端之间能够同步的进行处理。 通过对软件的编写,更深入的理解了面向对象的概念,也体会到利用面向对象语言处理一些问题的优势。同时也加深了对多线程,流套接字等高级技术的理解。 关键词:多线程;流套接字;数据传输;同步。

ABSTRACT ABSTRACT At present, With the rapid development of computer network. Taking computer technology and the network technology as the core, modern network technology is already used in the real life and the production and already became the leisure mode of the most peo ple. And most people like them. Of course, it’s a pity that there still have some clients lacking of network because of various causes. In order to satisfy the above clients’ requirements. A large number of games ,usually named as “small games” by players, are designed for involving two kinds of different function. The former game is often played by these players whose computers never connect with the network. It’s called for stand-alone version games. Just as its name implies, the later is named as online version games This software implemented with JAVA language, and according to the understanding of SCOKET ,GUI and paint image ichnology. Established in these foundation , the server co ects with the multi- client, and transmission the information between many clients using the multi-thread proceeding technology. it is very convenient for both client and server to do the synchronous processing. Through to the software compilation, deepen understanding and grasp to the technology above understanding and holding. Key Words: multiple thread, Socket, transmission-data, synchronism.

Java五子棋毕业设计论文

摘要 人工智能是一门正在迅速发展的新兴的,综合性很强的交叉科学。它与生物工程、空间技术一起被并列为二十一世界三大尖端技术。它的中心任务是研究如何使计算机去做那些过去只能靠人的智力才能做的工作。目前各发达国家都把人工智能作为重点项目,列入本国的高科技发展计划当中,投入巨大的人力和物力。 计算机人机对弈也是其中之一。作为人智能研究的一个重要分支,计算机博弈是检验人工水平的一个重要方面。它的研究为人工智能带来了很多重要的方法和理论,产生了广泛的社会影响和学术影响。 五子棋人机对弈是计算机博弈中的一种。研究其计算机算法,可以让我们看到人工智能的稚形,也有助于我们人脑的开发。五子棋是我国发明的,研究它可以让更多的外国人了解五子棋,这有助于我国优秀文化的推广。 关键词:人工智能,计算人机对弈,五子棋,算法

目录 摘要 (Ⅰ) 目录 (Ⅲ) 第一章绪论 (1) 第二章需求分析 (2) 2.1 业务需求 (2) 2.2 性能需求 (2) 2.3 系统平台需求 (2) 第三章五子棋相关基础 (4) 3.1 五子棋解释 (4) 3.2 五子棋的基本规则 (4) 3.3 五子棋的常用术语 (5) 第四章开发工具、环境及其技术 (7) 4.1 Java简介 (7) 4.2 Java编程环境 (9) 第五章程序设计思路与实现 (10) 5.1 程序设计思路 (10) 5.2 程序设计 (13) 结论 (33) 参考文献.................................................................................................................... 致谢............................................................................................................................ 附录............................................................................................................................

JAVA五子棋程序设计课程设计

JAVA五子棋程序设计课程设计

计算机与信息工程系 《JAVA程序实训》设计 五子棋游戏 摘要: 计算机人机对弈作为人智能研究的一个重要分支,计算机博弈是检验人工水平的一个重要方面。它的研究为人工智能带来了很多重要的方法和理论,产生了广泛的社会影响和学术影响。 五子棋人机对弈是计算机博弈中的一种。研究其计算机算法,能够让我们看到人工智能的稚形,也有助于我们人脑的开发。五子棋是中国创造的,研究它能够让更多的外国人了解五子棋,这有助于中国优秀文化的推广。 关键词:人工智能,计算人机对弈,五子棋,算法 , java 1.课程设计介绍 1.1课程设计目的 经过此次课程设计,巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、NetBeans等开发工具的运用,拓宽常见类库的应用。使我们经过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。本次课程设计每人一组,自行设计并实现共功能模块。

1.2课程设计任务 实现五子棋游戏,要求:使用图形用户界面,实现人人对战,人机对战。能够判断输赢,有“开始”按钮,当出现棋盘后,按此按钮进入对战状态。当有胜利者(垂直、水平、对角线连续5子),显示对话框,提示谁(黑还是白)胜利了。若当棋盘满了还无胜利者,显示平局对话框。有“悔棋”按钮,玩家能够点击悔棋,回到上一步。 1.3课程设计论文编写要求 (1)要按照书稿的规格打印与写课程设计论文; (2)论文包括目录、设计思路、具体实现、运行调试与分析讨论、设计体会与小结、参考文献、附录(源代码)等; (3)课程设计论文装订按学校的统一要求完成。 2.系统设计 2.1需求分析 2.1.1性能需求 一款小游戏的确立是建立在各种各样的需求上面的,这种需求往往来自于玩家的实际需求,其中玩家的实际需求最为重要.面对游戏拥有不同知识和理解层面的玩家,游戏制作人对玩家需求的理解程度,在很大程度上决定了此类游戏开发的成败.因此如何更好地的了解,分析,明确玩家需求,而且能够准确,清晰以文档的形式表示给游戏制作人,保证开发过程按照满足玩家需求为目的正确开发方向进行,是每游戏游戏制作人需要面正确问题。 作为五子棋的设计需要考虑到的最基本的需求莫过于人机对战与人人对战功能的实现,当然还有下棋过程中的下棋悔棋功能以及判断游戏的胜负等方面的要求。当然最好是要考虑到界面的友好性,作为一个娱乐软件,还应

基于JAVA的五子棋游戏系统设计与实现

基于JAVA的五子棋游戏系统设计与实现专业电子信息工程 学生董永杰 指导教师曾玉

目前,随着计算机网络的的发展,以计算机技术和网络技术为核心的现代网络技术已经在现实生活和生产中得到了广泛的使用,已经成为多数人群的休闲方式,也为多数人所喜好。当然,为了满足没有网络同样能娱乐的要求,许多小游戏做成了单机和网络的双功能。 本软件使用JAVA语户端之间的连接,利用多线程技术言实现,通过对图形界面,绘图,布局管理器等去构造出游戏的单机功能,在此基础上,利用SCOKET的知识,建立起服务器与客来处理服务器端与客户端之间的数据传输,通信问题,使得客户端和服务器端之间能够同步的进行处理。 通过对软件的编写,更深入的理解了面向对象的概念,也体会到利用面向对象语言处理一些问题的优势。同时也加深了对多线程,流套接字等高级技术的理解。 关键词:多线程;流套接字;数据传输;同步。

At present, With the rapid development of computer network. Taking computer technology and the network technology as the core, modern network technology is already used in the real life and the production and already became the leisure mode of the most people. And most people like them. Of course, it’s a pity that there still have some clients lacking of network because of various causes. In order to satisfy the above clients’ requirements. A large number of games ,usually named as “small games” by players, are designed for involving two kinds of different function. The former game is often played by these players whose computers never connect with the network. It’s called for stand-alone version games. Just as its name implies, the later is named as online version games This software implemented with JAVA language, and according to the understanding of SCOKET ,GUI and paint image ichnology. Established in these foundation , the server co ects with the multi- client, and transmission the information between many clients using the multi-thread proceeding technology. it is very convenient for both client and server to do the synchronous processing. Through to the software compilation, deepen understanding and grasp to the technology above understanding and holding.

java课程设计人机对弈五子棋

《Java程序设计》课程设计报告 学院:理学院 班级: 姓名: 学号: 指导教师: 课设时间: 2015-06-23 至2015-06-25 二O一五年六月二十五日

课程设计(论文)任务书 理学院信息与计算科学专业2012-2班 一、课程设计(论文)题目:人机对弈五子棋游戏 二、课程设计(论文)工作: 自2015 年6 月23 日起至2015 年6 月25日止 三、课程设计(论文) 地点: 5-205 四、课程设计(论文)内容要求: 1.本课程设计的目的 (1)使学生掌握软件开发的基本工作流程; (2)巩固JAVA程序设计课程所学的内容; (3)培养学生的计算机思维能力以及合作的精神; (4)培养学生分析、解决问题的能力; (5)提高学生的科技论文写作能力。 2.课程设计的任务及要求 1)基本要求: (1)研究课程设计任务,并进行系统需求分析; (2)对系统进行总体设计,分解系统功能模块,进行任务分配,以实现分工合作;(3)实现各功能模块代码; (4)系统组装,测试、完善系统。 2)创新要求: 在基本要求达到后,可进行创新设计,如改进界面、增加功能或进行代码优化。3)课程设计论文编写要求

(1)要按照书稿的规格打印誊写课程设计论文 (2)论文包括封面、设计任务书(含评语)、摘要、目录、设计内容、设计小结(3)论文装订按学校的统一要求完成 4)参考文献: (1)丁振凡,《JAVA语言程序设计》,清华大学出版社 (2)丁振凡,《JAVA语言程序设计实验指导与习题解答》,清华大学出版社 (3)https://www.wendangku.net/doc/9b6926903.html,/ 5)课程设计进度安排 内容天数地点 系统总体设计 1 实验室 软件设计及调试 1 实验室 答辩及撰写报告 1 实验室、图书馆 学生签名: 2015年6月25日 课程设计(论文)评审意见 (1)课程设计过程(20分):优()、良()、中()、一般()、差(); (2)是否完成调试,系统运行效果(30分):优()、良()、中()、一般()、差(); (3)回答问题(20分):优()、良()、中()、一般()、差();(4)课程设计报告(30分):优()、良()、中()、一般()、差(); (5)格式规范性及考勤是否降等级:是()、否() 评阅人:职称:教授 2015年 6月25日

java+五子棋+课程设计报告 (2)

课程设计(论文)任务书 软件学院软件工程+电子商务专业2007-2班 一、课程设计(论文)题目多用户五子棋游戏 二、课程设计(论文)工作自2009年6月15日起至2009年6月19 日止。 三、课程设计(论文) 地点: 创新大楼310 四、课程设计(论文)内容要求: 1.本课程设计的目的 (1)通过课程设计把课堂上讲的内容融会贯通,学会设计程序、开发应用软件、开发系统软件等各项工作。 (2)通过实习掌握语言的语法结构,理解类和对象的概念,准确的使用各种数据类型,对面向对象中的继承和多态的概念要理解、会使用,在程序中提高代码的重用性,使设计的程序结构清晰、易于维护。 2.课程设计的任务及要求 1)基本要求: 实现一个简单的多用户五子棋的游戏程序,包括如下两个界面 (1)选择对弈桌及角色(执黑、执白、观看)。 (2)在游戏界面,有开始,退出(游戏未结束、点退出自动判负);发言及显示区;用户列表区;棋盘绘制区。 2)创新要求: 在基本要求达到后,可进行创新设计,如改善算法性能、友好的人机界面。 3)课程设计论文编写要求 (1)要按照书稿的规格打印与写课程设计论文 (2)论文包括目录、设计思路、具体实现、运行调试与分析讨论、设计体会与小结、参考文献、附录(源代码)等 (3)课程设计论文装订按学校的统一要求完成 4)答辩与评分标准:

(1)完成基本算法设计:20分; (2)完成设计过程:40分; (3)完成调试:20分; (4)回答问题:20分。 5)参考文献: [1]吴其庆编著.Java程序设计实例教程.北京:冶金工业出版社 [2] 柳西玲.许斌编著.Java语言应用开发基础.北京:清华大学出版社 [3] (美)CayS.Horsttmann Gary Cornell JAVA核心技术卷i:基础知识(原书第七版):机械工业出版社 [4]丁振凡Java 语言实用教程:北京邮电大学出版社 [5]https://www.wendangku.net/doc/9b6926903.html, 6)课程设计进度安排 内容天数地点 构思及收集资料1图书馆 编码与调试 2.5实验室 撰写论文 1.5图书馆、实验室 学生签名: 2009年6 月15 日 课程设计(论文)评审意见 (1)完成基本算法(20分):优()、良()、中()、一般()、差();(2)完成调试(20分):优()、良()、中()、一般()、差();(3)创新设计(20分):优()、良()、中()、一般()、差();(4)设计分析(20分):优()、良()、中()、一般()、差();(5)回答问题(20分):优()、良()、中()、一般()、差();(6)格式规范性及考勤是否降等级:是( )、否() 评阅人:职称: 2009年6月21 日

相关文档
相关文档 最新文档