当前位置:文档之家› 基于java五子棋游戏开发(含源文件)

基于java五子棋游戏开发(含源文件)

基于java五子棋游戏开发(含源文件)
基于java五子棋游戏开发(含源文件)

X X 学院

论文题目基于java五子棋游戏开发院(系)名称计算机与信息工程学院专业名称软件技术

班级07软件技术一班

学生姓名

学号2007083201033

指导教师姓名

2010年4月完成

目录

内容摘要 (1)

关键词 (1)

Abstract (1)

Keywords (1)

1 系统概述 (2)

1.1 五子棋简介 (2)

1.2 课题背景及意义 (3)

1.3 JAVA简介 (4)

2. 系统分析 (5)

2.1 系统需求 (6)

2.2 系统的功能简介 (8)

2.3 系统的可行性分析 (8)

3.系统设计 (8)

3.1 系统关键类介绍 (8)

3.2 胜负判断 (11)

4.总结 (13)

参考文献 (13)

致谢 (13)

内容摘要:五子棋作为中国古代的传统黑白棋种之一,有着广泛的群众基础,是一种老少皆宜的棋类休闲游戏。开发一款五子棋游戏可以使广大棋牌游戏爱好者在闲暇时间切磋棋艺,对互联网技术的推广和个人棋艺的提高都有好处。的提高都有好处。

本文是采用JAVA语言写的五子棋游戏,JAVA语言无论体现在跨平台还是在面向对象,可移植性,安全性,并发机制和可视化图形界面的支持都是很好的。选用它作为开发语言,对程序开发来说,很具有高效性。

关键词: JAVA语言棋牌游戏跨平台性

Abstract:Backgammon in ancient China, one of the traditional Othello species has a broad mass base, is a casual chess games for all ages. Development of a backgammon board games game can make the general demonstrate their chess enthusiasts in their spare time on Internet technology to promote and improve individual chess is good.

This article is written by JAVA language Gobang games, JAVA language or both reflected in the cross-platform object-oriented, portability, security, concurrency mechanisms and visualization support for graphical interfaces are good. Use it as a development language for the program development, it is very efficient.

Key words:JAVA language Card Games Cross-platform

1.第一章系统概述

1.1五子棋简介

1.1.1五子棋

五子棋是起源于中国古代的传统黑白棋种之一。亦“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。

玩家根据自身等级和习惯,可以自由选择不同的游戏房间。其游戏规则也有所不同。详细分为三种棋室:普通棋室、国标棋室、职业棋室。其中普通棋室不受任何规则限制;国标棋室有禁手规则限制;而职业棋室则在国标棋室的基础上增加“三手交换”和“五手两打”两项规则。(三手交换:是指黑棋下盘面第3着棋后,白方在应白④之前,如感觉黑方棋形不利于己方,可提出交换,即执白棋一方变为执黑棋一方,而黑方不可以不换。五手两打:是指黑棋在下盘面上关键的第5手棋时,必须下两步棋,让白棋在这两步棋中任选一步,然后再继续对弈。)

国际比赛规则规定:对局中如黑方出现禁手,白方应立即指出禁手点,黑方即负。如白方在黑方出现禁手后,又落一步白子,黑棋禁手则不成立了。所以在"有禁手"的房间里,如果黑方出现禁手,白方应立即按下"禁手"按钮。程序会判黑方负。如果这时白方又在棋盘上落一子,黑棋禁手则不成立了。为了简化用户对"禁手"按钮的使用,也有"走禁手就输"和"禁手不能落子"规则的房间,顾名思义不多介绍。虽然采取了禁手的限制,黑棋先行仍有优势,黑棋仍可以必胜。所以如果用户是高段位的棋手,或者想成为高手一定要选择国际上比赛选用的比赛标准,即“三手交换,五手两打”。

1.1.2五子棋棋盘

棋盘正中一点为“天元”。棋盘两端的横线称端线。棋盘左右最外边的两条纵线称边线。从两条端线和两条边线向正中发展而纵横交叉在第四条线形成的四个点称为“星”。天元和星应在棋盘上用直径约为0.5厘米的实心小圆点标出。

以持黑方为准,棋盘上的纵轴线从左到右用英文字母A~O标记。横行线从近到远用阿拉伯数字1~15标记。纵横轴上的横纵线交叉点分别用横纵线标记的名称合写成。如“天元”H8,四个“星”分别为D4、D12、L12、L4等。

图 1.1.2 五子棋棋盘

1.1.3五子棋棋盘

◆行棋顺序

黑先、白后,从天元开始相互顺序落子。

◆判断胜负

1、最先在棋盘横向、竖向、斜向形成连续的相同色五个棋子的一方为胜。

2、黑棋禁手判负(Lose),白棋无禁手。黑棋禁手包括“三、三”(Double Three)(包

括“四、三、三”)、“四、四”(Double Four)(包括“四、四、三”)、“长连”(Overline)。黑棋只能以“四、三”取胜。

3、如分不出胜负,则定为平局(Draw)。

4、对局中中途退场判为负。

5、五连与禁手同时形成,先五为胜。

6、黑方禁手形成时,白方应立即指出。若白方未发现或发现后未指明而继续应子,则不能判黑方负。

1.2课题背景及意义

1.2.1开发背景

随着社会经济的发展,青少年的生活环境日益改善,再加上他们基本上都是独生子女,父母家庭对他们的关爱也就特别强烈。由于家庭给了孩子们太多的关爱,致使许多孩子养成了“以自我为中心”的陋习。围绕“自我”片面地分析问题,解决问题是很难把事情办好的。而五子棋是双人对弈的项目,行棋过程中就必须同时考虑双方

的意图和利益,只顾自己的利益,得到的往往是“速败”。再次,五子棋棋手必须从全局入手,正确分析全盘形势,尽最大限度调用自己的有利因素才能达到取胜的目的。由此看来,五子棋可以改善青少年的思维方式,让他们培学会“知己知彼”“大局入手”的思考方法,这对他们今后走上竞争日益激烈的社会是大有好处的。

一个没有经历过失败的人,一定是个什么也不懂的人。许多青少年碰到一点挫折就退缩,不敢面对,这是他们脆弱的心理所造成的。五子棋有助于修身养性,对下棋的孩子来说,胜败是常事,关键是要学会善于自我反思,善于吸取教训,善于积累经验,使他们有面对失败的勇气,有自我调整心态的能力,这也是他们今后走向社会所必须具备的。

1.2.2开发的意义

毕业设计是大学学习的总结,同时也是自己综合运用所学知识解决实际问题的一次锻炼。鉴于以上这些,我感觉有必要普及五子棋,发扬这种思维方式与方法。而互联网作为现今最大的青少年平台。能很好的推广青少年去学习五子棋,发展智力。开发五子棋程序,并放置在互联网平台上,这样会很好的让青少年去关注,以至于爱好它,学习五子棋,培养青少年的智力发育,提高国民整体素质。

1.3 JAVA简介

Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。它不只是一门编程语言,也是一个平台,它基于Java虚拟机技术,借助这个东西建立了跨平台的优势。Java技术的重要性就不讲了,从最近流行的一个统计数据上来说,目前世界上编程语言Java 、C 、VB、C++依次排名前4位,这排名本身不说明什么,至少也是工业界对编程语言使用上一个侧面的反映吧。

Java平台:

平台是程序运行的硬件或软件环境。Java平台与大多数其它平台不同之处在于它是运行于其它基于硬件平台的纯软件平台。大多数其它平台是硬件和操作系统的结合。Java平台由两部分组成:

* Java虚拟机(Java VM)

* Java应用程序界面(Java API)

Java平台是一种纯软件平台,它有三个版本JavaSE(Java2 Platform Standard Edition,java平台标准版),JavaEE(Java 2 Platform,Enterprise Edition,java 平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。

Java SE(Java Platform,Standard Edition)这个版本以前叫做J2SE,后来版本号从1.4直接跳到5.0,其实也就是1.5,所以就叫成Java SE 5.0。目前Java开发人员使用较多的版本是5.0,当然还有Java SE 6.0这个更新的版本。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java 应用程序。Java SE 还包含了支持Java Web服务开发的类,并为Java EE这个版本提供基础。

虽说桌面应用程序,Java一直不被看好,但也稍微提一下,负责桌面GUI开发的类库我知道的有:JDK自带的主要是AWT/SWING这个Java原生类库;也可以使用IBM 的SWT/JFace这个第三方类库。开发工具我了解的有:NetBeans(最近已经是6.0final 版了,做GUI有使用VB的感觉),Eclipse(SWT/JFace这个项目其实就是做Eclipse 项目时扩展出来的,所以对SWT/JFace支持的也不错)。Java EE(Java Platform,Enterprise Edition)这个版本以前叫做J2EE,也就是大家可能听得比较多的,也是Java比较流行的领域,Java的企业级版本。Java EE下有很多流行的开发框架,像Struts、Spring、Hibernate这种流行的所谓SSH组合等。

Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java 应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版发展到1.2版。目前常用的Java平台基于Java1.4,最近版本为Java1.7。

2.第二章系统分析

2.1系统需求

我们在设计游戏的时候有以下一些要求:

一软件的界面简洁明了,操作简单容易。我们设计的软件界面必须是简洁的,游戏需要设计得易操作。

二软件具有人工智能算法原理要简单,并且运行快速。游戏是需要快速反应的。我们需要使用简单实用的智能算法。

三游戏要设置几个难度,便于不同玩家选择.玩家的游戏水平不一样,我们设置不同难度供各个水平的玩家选择。

游戏玩法及规则

现代五子棋专用棋盘为十五路(15X15),共225个交叉点。棋盘正中一点为天元。对局开始时,先由执黑棋一方将一枚棋子落在天元点上,然后由执白棋一方在黑棋周围的交叉点上落子。但是,为了尊重对方和礼貌起见,持白棋的一方通常将盘面的第二着棋布在自己河界的一侧,即直止或斜止。此后黑白双方轮流落子,直到某一方首先在棋盘的横线、纵线或斜线上形成连续五子或五子以上〔仅对白棋而言〕,则该方就算获胜。连珠五子棋的一个特点是先行的一方优势很大,因此在职业比赛中对黑方做了种种限制,以利公平竞争。五子棋的比赛规则如下:

1、黑先、白后,从天元开始相互顺序落子;

2、最先在棋盘横向、纵向或斜向形成连续的同色五个棋子的一方为胜;

3、黑棋禁手判负、白棋无禁手。黑棋禁手有“三、三”、“四、四”和“长连”,

包括“四、三、三”和“四、四、三”。黑棋只能以“四、三”取胜;

4、如分不出胜负,则到为平局;

5、五连与禁手同时形成,判胜;

6、黑方禁手形成时,白方应立即指出。若白方未发现或发现后不立即指出,反

而继续落子,则禁手失效,不再判黑方负。

2.2系统的功能简介

人机对弈的程序,至少应具备如下几个部分:

1、某种在机器中表示棋局的方法,能够让程序知道博弈的状态。

2、产生合法走法的规则,以使博弈公正地进行,并可以判断人类对手是否乱走。

3、从所有合法走法中选择最佳走法的技术。

4、一种评估局面优劣的方法,用以同上面的技术配合做出智能的选择。

5、一个界面,有了它,这个程序才能用。

2.2.1 棋盘表示

棋盘表示就是使用一种数据结构来描述棋盘及棋盘上的棋子,通常使用一个二维数组。棋盘的数据表示直接影响到程序的时间及空间复杂度。为了追求更高的效率,研究人员针对不同棋类提出了多种不同的表示方法。有些方法具有更高的效率如比特棋盘表示法。

2.2.2 走法产生

博弈的规则决定了哪些走法是合法的。对有的游戏来说,这很简单,比如五子棋,任何空白的位置都是合法的落子点。但是对于象棋来说,就有马走日,象走田等一系列复杂的规则。走法产生是博弈程序中一个相当复杂而且耗费运算时间的过程。不过,通过良好的数据结构可以显著的提高走法生成的速度。

2.2.3搜索技术

对于计算机来说,直接通过棋盘信息判断走法的好坏并不精确。除了输赢这样的局面可以准确判断外,其它的判断都只能做到大致估计。判断两种走法孰优孰劣的一个好方法就是观看棋局走下去的结果。也就是向下搜索若干步,然后比较发展下去的结果。为了避免差错,我们假定对手的思考也和我们一样,也就是,我们想到的内容,对手也想到了。这就是极大极小搜索算法的基本原则。极大极小搜索算法的时间复杂度是O(bn)。这里b是分枝因子,指棋局在各种情况下的合法走步的平均值;n是搜索的最大深度,也就是向下搜索的博弈双方的走步之和。例如向下搜索甲乙双方各走一步的情形,n就是2。显然对于五子棋这种分枝因子在200左右的棋类游戏,时间开销随着n的增大会急剧的增长,不出几层就会超出计算机的处理能力,这将导致在有限时间内得不到令人满意的结果。

人们在开发高效的搜索算法上投入了大量的研究。在过去的几十年中,一些相当成功的改进大大提高了极大极小搜索的效率。Alpha-Beta剪枝、迭代深化、置换表、历史启发等手段的综合运用将搜索效率提高了几个数量级。

2.2.4用户功能

用户可以直接使用的游戏功能,通过按键进行操作。每个用例的简要说明如下:

1、新游戏:初始化相关变量,清空棋盘。

2、步数计算:计算当前是第几步

4、棋子坐标:显示当前所下棋子坐标。

6、下棋提示:提示该哪方下棋子。

7、重新开局:初始化相关变量,清空棋盘。

2.3系统的可行性分析

2.3.1经济可行性

本游戏使用模块化设计方案,易于编写和维护,核心代码易于移植,总体开发成本低。游戏短小精悍,对目标设备要求低,产品面向受众广,可以带来可观的经济效益。

2.3.2技术可行性

JAVA提供了丰富的接口和类服务,本游戏的开发只需要用到基本的绘图接口和系统的文件服务,实现起来非常简单。使用JAVA封装好的数据类可以简化编码实现,避免不必要的错误。对于以处理数据为主的棋类游戏,编码实现没有困难。

2.3.3系统安全性分析

本游戏的开发只使用很少的系统接口和系统服务,数据处理都是在程序内部解决,不涉及与其它程序的数据交互。使用JAVA定义好的构造法分配内存空间,这样不会在构造出现异常时产生内存泄露。系统会根据已经入栈的对象指针,通过析构函数收回内存。所以即使程序因为内存不足无法运行,也不会因此而影响系统本身的稳定性和安全性。另外,使用模块化方法进行设计编码,可以很方便的调整算法的搜索深度,减小内存的使用量,提高程序的兼容性

3.第三章系统设计

3.1系统关键类介绍

1、Chess类是游戏的主类,负责初始化游戏棋盘,其实Chess类就是游戏的入口,只有启动了此类,才有游戏菜单,才可以进行选择游戏。代码如下

setVisible(true);

setLayout(null);

Label label = new Label("Gobang v1.0", Label.CENTER);

add(label);

label.setBounds(10, 50, 440, 26);

label.setBackground(Color.orange);

add(chesspad);

chesspad.setBounds(10, 90, 440, 440);

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

pack();

setSize(460, 540);

2、Evaluate类是用来估算估值点的坐标,返回的是这个点的价值。代码如下:

int max_x, max_y, max; //定义坐标 x,y及最大值

public void evaluate(int shape[][][]) {

int i = 0, j = 0;

for (i = 0; i < 19; i++)

for (j = 0; j < 19; j++) {

switch (shape[i][j][0]) {

case 5:

shape[i][j][4] = 200;

break;

case 4:

switch (shape[i][j][1]) {

case 4:

shape[i][j][4] = 150 + shape[i][j][2] +

shape[i][j][3];

break;

case 3:

shape[i][j][4] = 100 + shape[i][j][2] +

shape[i][j][3];

break;

default:

shape[i][j][4] = 50 + shape[i][j][2] +

shape[i][j][3];

}

break;

case 3:

switch (shape[i][j][1]) {

case 3:

shape[i][j][4] = 75 + shape[i][j][2] +

shape[i][j][3];

break;

default:

shape[i][j][4] = 20 + shape[i][j][2] +

shape[i][j][3];

}

break;

case 2:

shape[i][j][4] = 10 + shape[i][j][1] + shape[i][j][2]

+ shape[i][j][3];

break;

case 1:

shape[i][j][4] = shape[i][j][0] + shape[i][j][1]

+ shape[i][j][2] + shape[i][j][3];

default:

shape[i][j][4] = 0;

}

}

int x = 0, y = 0;

max = 0;

for (x = 0; x < 19; x++)

for (y = 0; y < 19; y++)

if (max < shape[x][y][4]) {

max = shape[x][y][4];

max_x = x;

max_y = y;

}

}

3.2胜负判断

Judge类中的judge方法是通过扫描当前点周围的同色棋子数进行判断,如果胜利则返回True,否则返回False。这个方法需要配合使用,电脑会在下子之后调用这个方法。这个方法实现的伪代码如下:

static boolean judge(int a[][], int color) {

int i, j, flag;

for (i = 0; i < 19; i++) {

flag = 0;

for (j = 0; j < 19; j++)

if (a[i][j] == color) {

flag++;

if (flag == 5)

return true;

} else

flag = 0;

}

for (j = 0; j < 19; j++) {

flag = 0;

for (i = 0; i < 19; i++)

if (a[i][j] == color) {

flag++;

if (flag == 5)

return true;

} else

flag = 0;

}

for (j = 4; j < 19; j++) {

flag = 0;

int m = j;

for (i = 0; i <= j; i++) {

if (a[i][m--] == color) {

flag++;

if (flag == 5)

return true;

} else

flag = 0;

}

}

for (j = 14; j >= 0; j--) {

flag = 0;

int m = j;

for (i = 0; i <= 18 - j; i++) {

if (a[i][m++] == color) {

flag++;

if (flag == 5)

return true;

} else

flag = 0;

}

}

for (i = 14; i >= 0; i--) {

flag = 0;

int n = i;

for (j = 0; j < 19 - i; j++) {

if (a[n++][j] == color) {

flag++;

if (flag == 5)

return true;

} else

flag = 0;

}

}

for (j = 14; j >= 0; j--) {

flag = 0;

int m = j;

for (i = 18; i >= j; i--) {

if (a[i][m++] == color) {

flag++;

if (flag == 5)

return true;

} else

flag = 0;

}

}

return false; }

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五子棋游戏的设计源代码及全套资料

分类号: 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语言) import java.awt.*; import java.awt.event.*; import javax.swing.*; class mypanel extends Panel implements MouseListener { int chess[][] = new int[11][11]; boolean Is_Black_True; mypanel() { Is_Black_True=true; for(int i=0;i<11;i++) { for(int j=0;j<11;j++) { chess[i][j] = 0; } } addMouseListener(this); setBackground(Color.RED); setBounds(0, 0, 360, 360); setVisible(true); } public void mousePressed(MouseEvent e) { int x = e.getX(); int y = e.getY(); if(x < 25 || x > 330 + 25 ||y < 25 || y > 330+25) {return;} if(chess[x/30-1][y/30-1] != 0) {return;} if(Is_Black_True==true) { chess[x/30-1][y/30-1] = 1; Is_Black_True=false; repaint(); Justisewiner(); return; }

if(Is_Black_True==false) { chess[x/30-1][y/30-1]=2; Is_Black_True=true; repaint(); Justisewiner(); return; } } void Drawline(Graphics g) { for(int i=30;i<=330;i+=30) { for(int j = 30;j <= 330; j+= 30) { g.setColor(Color.GREEN); g.drawLine(i, j, i, 330); } } for(int j = 30;j <= 330;j+=30) { g.setColor(Color.GREEN); g.drawLine(30, j, 330, j); } } void Drawchess(Graphics g) { for(int i=0;i < 11;i++) { for(int j = 0;j < 11;j++) { if(chess[i][j] == 1) { g.setColor(Color.BLACK); g.fillOval((i+1)*30-8, (j+1)*30-8, 16, 16); } if(chess[i][j]==2) { g.setColor(Color.WHITE); g.fillOval((i+1)*30-8, (j + 1) * 30-8, 16, 16); }

五子棋报告-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的五子棋游戏系统设计与实现

基于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五子棋游戏软件设计报告

佛山科学技术学院 《可视化编程技术》课程设计报告 五子棋软件设计 学生姓名:凌健铭 学号:2011924133 年级专业:11级教育技术学2班 指导老师:容汝佳 学院:教育科学学院 广东★佛山 提交日期:2013年6月

目录 1. 前言 (2) 2.概要设计 (3) 2.1 开发环境 (3) 2.2 五子棋功能 (3) 2.3 界面设计 (3) 2.4 类的框架结构图 (4) 3. 详细设计 (5) 3.1 五子棋使用的JAVA类的说明 (5) 3.2 类的主要方法 (6) 3.2.1下放棋子 (6) 3.2.2 判断输赢 (7) 3.2.3 重新开始 (10) 3.2.4 悔棋 (10) 3.2.5 程序流程图 (11) 4. 运行结果 (12) 5. 测试分析 (15) 6. 源程序 (15) 参考文献 (26) 设计总结 (26)

摘要:该程序是一个图形界面的简单的java五子棋游戏,具有良好的界面,使用人员能快捷简单地进行操作。人们可以在空闲时使用该程序进行五子棋对战,达到娱乐休闲的目的。该五子棋程序设有悔棋、重新开始和退出功能。界面为黄色棋盘。 关键字:java五子棋游戏软件,娱乐类电子游戏设计 1 前言 五子棋作为一个棋类竞技活动,其满足了人民娱乐休闲的需要,在民间十分流行。 Java是由Sun公司开发的新一代纯面向对象的网络编程语言。其目标是建 立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。正因为如此,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。 Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。Java基本版本叫Java 2标准版(Java 2 Standard Edition,J2SE),它包含建立Java应用程序或者是Applet所需的应用程序编程接口(API)。Java 2移动版(The Java 2 Mobile Edition,J2ME)包含创建无线Java应用程序的API。还有Java 2企业版(The Java 2 Enterprise,J2EE)是J2SE的增强版本,包含建立多层架构应用程序API。 Java语言是由C++语言发展起而来的,是一种彻底的面向对象的程序设计语言。作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。Java 语言去掉了C++语言的一些容易引起错误的特性。Java语言的特点有:面向对象、跨平台、安全性、多线程和图形功能强。 2 概要设计 2.1开发环境 开发平台:Microsoft Windows XP Professional Service Pack 2

基于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五子棋小游戏实验报告(附源代码)

手机五子棋游戏的设计与实 现 专业: 姓名: 班级: 学号: 指导教师:

J2ME(Java 2 Micro Edition)是近年来随着各种不同设备,尤其是移动通信设备的飞速发展而诞生的一项开发技术。它因其“write once,run anywhere”的Java特性而提高了开发的效率。随着手机性能的不断提高,手机休闲娱乐应用将成为PC休闲娱乐应用之后又一重要业务增长点。棋类游戏规则单一,比较适合在手机等便携终端推广。 由于具有跨平台、易于移植、占用空间小的优势,J2ME成为移动应用开发平台的主流,并提供了很多用以支持移动应用软件的开发的API。现将该技术用于这次的手机游戏开发,可以实现游戏的快速开发,不但便于查看游戏运行过程中内存的占用量和程序的每一部分代码消耗了多少处理器时间,而且可以不断地优化代码,使代码具有高度的复用性、可扩展性、可维护性。 游戏的开发以J2ME为平台,利用Java技术,结合J2ME的MIDP技术,并对于程序设计思想,重要类、方法等展开讨论。在对弈部分,分析设计走棋算法,选择合适的方式组织成代码,实现基本的人工智能。过程中使用了J2ME中的CLDC/MIDP软件体系,主要运用了MID Profile的特定类的支持,来完成游戏的开发。 关键词:J2ME;CLDC;MIDP

J2ME is a kind of fast developing technology implemented on various devices especially mobile communication equipments. It improves the efficiency of the development process because of its "write once, run anywhere" nature. The development trend of the entertainment market based on the cell phone is very obvious because the handset performance enhances unceasingly. The entertainment market based on the cell phone will to be the new important business growth point follow the PC entertainment market. As the rules of a single chess game, it is more suitable for mobile phones and other portable terminal extension. J2ME has been the preferred platform for development because of its platform independent and compatibility, and provides a lot of APIs to support the development of mobile application software. The technology for mobile game development, can achieve the rapid development of the game. It is not only easy to observe the memory consumption and processor consumed time during the operation of the game, but also can optimize the code, so that the code has a high degree of reusability, scalability, maintainability. The game has designed by J2ME, the Java technology and the MIDP technology. I studied the procedure thought, the important class and the method. In the playing chess part, I have analyzed the algorithm, choosed the appropriate way to organize the code and realized the basic artificial intelligence. On the other hand,I learned software system of CLDC/MIDP and the specific class of the MID Profile to complete the game development. Key words: J2ME;CLDC;MIDP

五子棋(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 题目 的五子棋游戏设计

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位: 题目: 基于JAVA的五子棋游戏设计 初始条件: 学习过c语言程序设计,Java语言程序设计,数据库技术,设计结构等; 要求完成的主要任务: 随着网络的普及,益智竞技类小游戏越来越受到欢迎,五子棋作为一个棋类竞技运动,在民间十分流行。本文在此背景下用Java制作了五子棋小游戏,其中包括背景界面的显示与绘制、棋子的绘制、界面按钮功能的实现、胜负的判断、游戏时间的设置等等。 时间安排: 第17周星期一至五:查阅文献,总体设计,设计算法,功能模块设计 第18周星期一至五:编码和测试 第19周星期一至五:写课程设计,提交初稿,给老师检查,修改定稿,答辩。 指导教师签名:2014年月日 系主任(或责任教师)签名:2014年月日

摘要 随着网络的不断进步,网络游戏逐渐成为人们生活中的一部分,它不仅能够使人娱乐和消遣,也能够开发人的智力,使大脑更加的灵活。五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏。本文所讲述的五子棋游戏通过双方的竞技,能够开发人们的才干和开发人们的智力。 本文主要采用Eclipse工具与java语言开发的五子棋小游戏,该游戏程序能够实现两个人对阵下棋,程序中能够自定义的设置双方对阵的游戏时间以及智能的判断游戏中哪方获得胜利及游戏的结束。算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。 关键词:java 五子棋eclipse photoshop

java五子棋实习报告

Java程序设计基础 实习报告 课程名称Java程序设计基础实习题目java五子棋 专业 班级 学号 学生姓名 指导教师

Java实习报告 一、JAVA技术介绍: Java技术是一门编程语言,也是一个平台,它基于Java虚拟机技术,借助这个东西建立了跨平台的优势。 Java编程语言与众不同之处在于:Java程序既是编译型的(转换为一种称为Java字节码的中间语言),又是解释型的(JVM 对字节码进行解析和运行)。编译只进行一次,而解释在每次运行程序时都会进行。编译后的字节码采用一种针对JVM 优化过的机器码形式;解释器是JVM 的实现。 二、摘要 五子棋作为一个棋类竞技运动,在民间十分流行,本课题主要完成了五子棋人机对战和玩家之间联网对战2个功能。网络连接部分为Socket编程应用,客户端和服务器端的交互用Class Message定义,有很好的可扩展性,客户端负责界面维护和收集用户输入的信息,及错误处理。服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息,动态维护用户列表。在人机对弈中通过深度搜索和估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高电脑AI方案,如递归算法、电脑学习等。算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。

三、课题分析与设计 1)键盘上事先设定8个按键,分作两组,每组四个,分别代表两个人 用来控制棋子的上下左右键。 2)绘制棋盘,15条横线,15条竖线,在直线交点处下棋子(实心圆形)。 3)黑子先行,黑白交替下子,在棋盘上设定一个与棋盘格大小边长相 等的正方形,初始状态,正方形的中心位于期盼的中心点。当一方 欲走棋的时候,应用四个按键来控制所要下棋的位置,每按一次按 键,正方形都要向相应方向移动一个格,并且让喇叭发出某种声音,将要移出边界时,发出另一种警告声音并不让其移出边界。当按下 回车键时,应在正方形所在位置放下一个棋子,然后此组按键不能 操作,换另一个人下棋,用另一组按键,规则同前。 4)当任何一方有五个棋子沿着横,竖,斜连在一起时,系统自动判断 赢棋,并显示黑方或白方胜利。棋局结束后,任何一方均不能继续 操作。

相关主题
文本预览
相关文档 最新文档