当前位置:文档之家› 基于Android的五子棋游戏设计与实现毕业设计

基于Android的五子棋游戏设计与实现毕业设计

基于Android的五子棋游戏设计与实现毕业设计
基于Android的五子棋游戏设计与实现毕业设计

安徽大学

本科毕业论文(设计、创作)

题目:基于Android的五子棋游戏设计与实现

院(系):计算机科学与技术学院专业:计算机科学与技术入学时间:2010年9 月导师:邹海职称学位:副教授博士

导师所在单位:安徽大学计算机科学与技术学院

完成时间:2014 年5月

基于Android的五子棋游戏设计

摘要

手机游戏被业内人士称为继短信之后的又一座“金矿”。从2003年到2010年的市场销售额年均复合增长率为62.4%。可以看出,手机游戏将经历一个黄金发展时期。3G的普及、手机显示性能的提高、手机屏幕的扩大和较高的分辨率,解决了传统手机行业的很多弊端,手机休闲娱乐应用将成为PC休闲娱乐之后又一重要业务增长点。同时Android采用了键盘形式的按键,可以完成更复杂的操作。Android 虽然基于Java,但是其虚拟机是基于寄存器的(这与普通的Java基于堆栈不同),速度得到很大的提升,这为Android平台上开发游戏提供了坚强的后盾。

本论文主要阐述以面向对象的程序开发语言eclipse为开发工具, 基于智能手机Android之上设计一个五子棋游戏。五子棋起源于中国古代的传统黑白棋种之一,它不仅能增强思维能力提高智力,而且富含哲理,有助于修身养性。本系统是本系统中设定了人机对战和人人对战两种模式。人机对战实现的是一些简单的算法,人人对战只是进行了输赢方的判定。它与javame的五子棋设计有许多的不一样,Android本来就是全触摸的形式,而且操作非常简单。

关键词:五子棋;Android;人工智能

The Five in a Row Game Based on Android

Abstract

Mobile games since the industry was called after a text message "goldmine" again. From 2003 to 2010 annual sales surged 62.4 percent from compound rate for. Can see,mobile games will experience a golden period of development. 3G phone displays the popularization and performance improvement,the expansion of the phone's screen,and a ,solve the traditional mobile phone industry's many drawbacks,mobile entertainment applications will be after PC entertainment another important business growth. Meanwhile Android also USES a keyboard forms of buttons that can do more complex operation. Android though,but its based on a Java virtual machine (which is based on the register with the ordinary Java stack-based different),speed,it got a lot of ascension for the Android platform games provide a strong backing.

This paper mainly expounds the object-oriented program development in eclipse for language development tool, smartphone Android based on above design a five in a row game. Gobang originated in China ancient traditional black white kind, it not only can enhance one of thinking capacity, improve inligence and philosophy, -machine against and everyone against two patterns. The realization man-machine against some simple algorithm, everyone was against just win the judgement of the party. It many are dissimilar, Android is the entire touching form originally, moreover operates is simple.

Keywords:five-in-a-row;android;artificial inligence

目录

1 引言 (1)

2 概述 (2)

2.1 背景 (2)

2.2 课题来源 (2)

2.3 课题研究现状及应用前景 (3)

3 Android开发环境 (3)

3.1 Android开发环境变量配置 (3)

3.1.1 JDK的配置 (3)

3.1.2 Android开发插件的安装 (4)

3.1.3 AVD的创建 (5)

4 游戏相关技术 (5)

4.1 游戏布局 (5)

4.1.1 画盘线 (5)

4.1.2 双缓冲技术画棋子 (6)

4.1.3 在触摸处画棋子 (7)

4.1.4 newPoint方法将座标调整到对应的棋位上 (7)

4.2 人人对战 (8)

4.2.1 设置谁走的标记 (8)

4.2.2 在触摸处下棋子 (9)

4.2.3 判断轮到谁下棋子 (9)

4.2.4 玩家一下棋的方法 (9)

4.2.5 玩家二下棋的方法 (10)

4.2.6 实现判断输赢的方法 (11)

4.2.7 提示游戏结束 (13)

4.3 人机对战 (14)

5 游戏的实现 (15)

5.1 游戏主界面 (15)

5.2 游戏帮助界面 (16)

5.3 五子棋介绍界面 (16)

5.4 游戏界面 (17)

5.5 退出界面 (17)

6 结论 (18)

主要参考文献 (19)

致谢 (20)

1 引言

随着社会的发展,目前全球的手机用户数量已经超过了PC机的数量,而且手机的数量正在快速增长,其中智能手机所占的比例越来越大,特别是随着3G技术发展时代的到来,移动互联网将是一个巨大的市场,许多国际大公司以及国内的大公司都在抢占智能手机领域的市场份额。这期间,出现的智能手机可谓五花八门,种类繁多,但是真正好用,受用户喜爱的智能手机并不多。

当互联网巨头Google宣布依靠 android系统进军手机操作系统领域之后,三年来Android一路高歌,快速的获得众多用户和厂商的认同。随着Android手机终端的逐渐热销,Android也引起众多手机应用程序开发商的关注,Android的出现带给了智能手机领域更多的机遇和挑战,由于Android基于Linux内核且具有开源、免费的特性,它迅速得到广大爱好者以及许多厂商的支持,基于Android所开发的手机游戏拥有巨大潜力已成为行业共识。

3G的普及、手机显示性能的提高、手机屏幕的扩大和较高的分辨率,解决了传统手机行业的很多弊端,同时Android也采用了键盘形式的按键,可以完成更复杂的操作。Android 虽然基于Java,但是其虚拟机是基于寄存器的(这与普通的Java基于堆栈不同),速度得到很大的提升,这为Android平台上开发游戏提供了坚强的后盾。

随着移动开发技术的不断升级和终端设备成本的下降,近年来,手机在普通消费人群中得到了极大的普及。凭借其便于携带、沟通迅捷、功能多样、私密性强等独有优势,手机已经成为普通民众不可替代的随身工具。其益智、趣味和休闲的特点迎合了消费者的娱乐需要,手机游戏的开发推广已经成为手机生产商和运营商重要的业务增长点,游戏软件产业价值不断提升。手机游戏是手机的一种高附加值操作软件,游戏编程是手机软件编程的重要组成,同时也持续推动手机软件技术升级进步。

中华民族是一个有着几千年悠久历史和璀璨文化的国家,而棋类娱乐却早已突破了纯游戏的范畴而成为中国传统文化的一个分支。五子棋起源于中国古代的传统黑白棋种之一,现代五子棋日文称之为“连珠”,英译为Renju,英文称之为“Gobang”或“FIR”(Five in a Row 的缩写),中文亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。五子棋的棋文化源渊流长,具有东方的神秘和西方的直观,是中西文化的交流点,是古今哲理的结晶。

现在人们压力日益增大,需要劳逸结合才能获得更高的工作效率,工作之余的娱乐对每一个人来说都是必不可少的。五子棋这种娱乐方式简单易学又具有深奥的技巧,非常富有趣味性和消遣性。在经过不断发展后,五子棋已经成为棋盘娱乐的一个重要的组成部分,它能够增强思维能力、开发智力,是人们休闲娱乐的不错选择。

近来随着计算机和手机的快速发展,各种各样的游戏层出不穷,使得人们能有更多的娱乐项目,而棋类游戏能起到锻炼人的思维和修身养性的作用,而且棋类游戏水平颇高,大有与人脑分庭抗礼之势。现在的五子棋游戏软件基本上可以分为两类:一类是网络五子

棋游戏软件,另一类是单机版五子棋游戏软件。很少有手机版的五子棋游戏软件。为了满足手机人群的需求,本文设计了这款手机版的五子棋游戏软件,可以供人们闲暇时间随时随地地进行娱乐,提高自己的五子棋水平,实用性强。

2 概述

2.1 背景

在我们的生活中有许多的游戏,但是游戏不同,它也会给玩家带来不同的感受和生活理念。游戏是我们日常生活的一个必不可少的娱乐项目,也带动了游戏相关产业市场的发展。游戏平台是经过从游戏机到电视游戏,然后从到pc游戏,到手机游戏,中间经历了很多的技术的更新和变革。但随着新技术的发展和我们生活水平质量的提高,手机开始逐渐变为普及,因为手机是非常小巧便捷的,而且方便的特性成为我们日常生活中必备通讯工具。而基于手机平台的游戏也就拥有的市场空间是巨大的,也因随着3g的开通和应用,手机游戏必然会迎来新的一轮游戏热潮!

2.2 课题来源

现在的移动电话是小型的计算机,它的处理能力与台式机的标准处理能力相比很有限,但是足够运行一个小型的游戏。现在的手机的一个特性就是它们还是网络计算机,能够高速发送和接收数字数据。除了语音数据以外,它们还可以发送和接收其它类型的数据。所以这样的网络游戏也可以在手机上实现。短信类游戏就好像“虚拟宠物”那样。短信游戏是通过玩家和游戏服务商通过短信中的文字的内容来交流,达到进行游戏的目的的一种文字游戏。由于短信游戏的整个游戏过程都是通过文字来表达,造成短信游戏的娱乐性较差。但是短信游戏却是兼容性最好的手机游戏之一。只要您的手机可以发短信,您就可以畅快的享受短信游戏给您带来的快乐了。图形类游戏更接近我们常说的“电视游戏”,玩家通过动画的形式来发展情节进行游戏。由于游戏采用了更为直观且更为精美的画面直接表现,因此图形类游戏的游戏性和代入感往往较文字类游戏高。因此广受玩家们的欢迎。嵌入式游戏是一种将游戏程序预先固化在手机的芯片中的游戏。由于这种游戏的所有数据都是预先固化在手机芯片中的,因此这种游戏是无法进行任何修改的。也就是说,您不能更换其它游戏的,只能玩您手机中已经存在的娱乐游戏,而且您也不能将它们删除。手机在网络游戏行业在多年的技术经验与运营经验的积累与总结之后,到了2009年迫不及待的需要创新出新的游戏模式和崭新的运营模式来推动手机游戏市场的爆发和发展。其中比较吸引人们的是手机的休闲类的游戏。应该可以说它是与PC网络游戏完全的脱离开了,而且充分发挥了自身的优势手机终端。休闲类的游戏恰巧与之相反,只需要很少的网络流量的网络环境,通过少量多次的游戏形式带给玩家流畅的游戏体验满足玩家瞬间提升的快感,但是同时却很难具有长期的“沉迷”性。

本题目是基于Android平台开发的一个小型的程序。其实都差不多,在有JAVA的智能手机上都可以运行。其实手机是我们生活中不可缺少的工具,这些小游戏可以带给我们快乐和放松我们的心情。无论什么样手机,我想买起来的时候上面就有一些它自带的各种

小游戏,其中有一个独特的小游戏也是非常重要的。

2.3 课题研究现状及前景

在我们的生活中有许多的游戏,但是不同的游戏,它也会给玩家带来不同的感受和生活理念。游戏可以说我们日常生活的一个必不可少的娱乐项目,也带动了游戏相关产业市场的发展即游戏周边。游戏平台是经过从游戏机到电视游戏,然后从到pc游戏,到手机游戏,中间经历了很多的技术的更新和变革。但随着新技术的发展和我们生活水平质量的提高,手机开始逐渐变为普及,因为手机是非常小巧便捷的,而且方便的特性成为我们日常生活中必备通讯工具。而基于手机平台的游戏也就拥有的市场空间是巨大的,随着3G 的开通和应用,手机游戏必然会迎来新的一轮游戏热潮

现在的手机的已经不是以往那种传统意义上的手机了,称之为智能机再合适不过了,它不仅具备打电话发短信等传统功能而且对于计算机可以完成的大部分工作也可以完全胜任。智能手机能够高速发送和接收数字数据,除了语音数据以外,它们还可以发送和接收其它类型的数据,如是图像等。所以网络游戏也是完全可以在手机上实现的。其中比较吸引人们的是手机上休闲类的游戏。应该可以说它是与PC网络游戏完全的脱离开了,而且充分发挥了自身的优势。休闲类的游戏只需要很少的网络流量的网络环境,通过少量多次的游戏形式带给玩家流畅的游戏体验满足玩家瞬间提升的快感,但是同时却很难具有长期的“沉迷”性,可以说是有百利而无一害。本次设计是基于Android平台开发的一个小型的五子棋游戏程序。五子棋游戏的简单易学,老少皆宜这些特性与智能手机的移动方便,大范围普及等特点结合起来,必定会大放光芒,广受欢迎的。

也真是由于上文所述的各种优势,导致手机五子棋游戏被越来越多的人研究学习,可以说程序虽小但五味俱全,作为入门学习是再合适不过的了。网络上流传的五子棋游戏界面精美,风格各异,实在是已经达到巅峰之作,作者在此并不想去做那锦上添花之举,所以对于本次设计论文有一个明确的定位,在完成五子棋游戏的基本对战功能的设计同时不再做各种附加功能的加强而是对其中所涉及的算法进行更加深入的学习。

3 Android开发环境

本章将主要介绍如何构建Android开发环境,包括获取Android SDK、Eclipse以及进行Android Eclipse插件设置等。

3.1 Android开发环境变量配置

3.1.1 JDK的配置

JDK的配置并没有什么值得特别叙述的东西,在此主要阐述下JDK环境变量的配置问题。首先右键点击我的电脑 -> 属性 -> 高级系统设置,点击下面的环境变量,在下面的“系统变量”处选择新建,在变量名处输入JA V A_HOME在变量值输入JDK路径,确定后再新建一个变量名为Classpath,变量值为%JA V A_HOME%librt.jar;%JA V--A_HOME%lib tools.jar的变量,确定后找到PATH的变量,双击或点击编辑,在变量值最前面加上%JA V A_HOME%bin; 最后点击确定按钮即可。如图3-1所示。

图3-1 JDK环境变量设置

3.1.2 Android开发插件的安装

打开Eclipse, 在菜单栏上选择_point)

2 将图片画到Bitmap(内存缓冲区)的过程

为指定颜色对应的图片创建bitmap对象并放入到数组中

public void fillPointArrays(int color,Drawable drawable) {

创建Bitmap内存缓冲区(申请内存空间)

Bitmap bitmap = Bitmap.createBitmap(POINT_SIZE, POINT_SIZE, Bitmap.Config.ARGB_8888);

创建画布、并设置将内容画到上面创建的Bitmap上

Canvas canvas = new Canvas(bitmap);

设置资源画的范围大小

drawable.setBounds(0, 0, POINT_SIZE, POINT_SIZE);

将图像资源画到缓冲区中

drawable.draw(canvas);

把缓存区引用存进数组中(注意将下标定义以颜色命名的常量)

bitmaps[color] = bitmap;

}

在onDraw方法将其在随意位置画出

canvas.drawBitmap(bitmaps[color_index],0,0,paint);

4.1.3 在触摸处画棋子

通过onTouchEvent方法获得触摸位置座标,以此座标创建一个棋子,触发onDraw方法,把刚才的棋子画出来

public boolean onTouchEvent(MotionEvent event) {

Point point = newPoint(event.getX(), event.getY());

刷新一下棋盘,触发onDraw函数

refressCanvas();

}

4.1.4 newPoint方法将此座标调整到对应的棋位上(以手工画图的方式确定棋子四周的范围的计算方)

private Point newPoint(Float x, Float y){

是否在棋盘线以外

boolean isOutsideChessboard = true;

Point p = new Point(0, 0);

for (int i = 0; i <= maxX; i++) {

if (((i-1) * POINT_SIZE + xOffset + POINT_SIZE2) <= x

&& x < (i * POINT_SIZE + xOffset + POINT_SIZE2)) { p.setX(i);

找到横座标,证明不在棋盘线以外

isOutsideChessboard = false;

break;

}

}

如果横坐标在棋盘线外,返回空,不下棋子

if(isOutsideChessboard){

return null;

}

重置标志

isOutsideChessboard = true;

for (int i = 0; i <= maxY; i++) {

if (((i-1) * POINT_SIZE + yOffset + POINT_SIZE2) <= y

&& y < (i * POINT_SIZE + yOffset + POINT_SIZE2)) { p.setY(i);

找到纵座标,也不在棋盘线外

isOutsideChessboard = false;

break;

}

}

纵标在棋盘线外

if(isOutsideChessboard){

return null;

}

横座标和纵座标都不在棋盘线外

return p;

}

4.2 人人对战

4.2.1 设置标记--whoRun

表示应该轮到谁下棋,1为玩家1下,2为玩家2下,-1表示玩家正在下默认第一个玩家先行

private int whoRun = 1;

private void setPlayer1Run(){

whoRun = 1;

}

是否轮到人类玩家下子

private boolean isPlayer1Run(){

return whoRun==1;

}

是否轮到人类玩家下子

private boolean isPlayer2Run(){

return whoRun==2;

}

private void setPlayer2Run(){

whoRun = 2;

}

正在下的过程中,主是因为电脑有较长的计算时间,这期间一定不可以再响应触摸事件

private void setOnProcessing(){

whoRun = -1;

}

是否正在下某一步棋过程中,主是电脑下棋时需要较长的计算时间,这期间一定不可以再响应触摸事件

private boolean isProcessing() {

return whoRun == -1;

}

4.2.2 改写onTouchEvent方法,监听触摸事件,在触摸处下棋子

处理触摸事件

public boolean onTouchEvent(MotionEvent event) {

只处理开局后的触摸弹起事件

if(event.getAction()!=MotionEvent.ACTION_UP){

return true;

}

是否正在处理一步棋的过程中

if(isProcessing()){

return true;

}

下一步棋

playerRun(event);

return true;

}

4.2.3 playerRun方法判断轮到谁下棋子

private synchronized void playerRun(MotionEvent event){ if(isPlayer1Run()){第一玩家下棋

player1Run(event);

}else if(isPlayer2Run()){第二玩家下棋

player2Run(event);

}

}

4.2.4 玩家一下棋的方法

private void player1Run(MotionEvent event){

取得正确座标的棋子

Point point = newPoint(event.getX(), event.getY());

if(point==null){在棋盘外

return ;

}

if(allFreePoints.contains(point)){此棋是否可下

设置正在下棋子

setOnProcessing();

player1.run(player2.getMyPoints(),point);

刷新一下棋盘

refressCanvas();

判断第一个玩家是否已经赢了

if(!player1.()){我还没有赢

if(player2==computer){如果第二玩家是电脑

10豪秒后才给玩家2下棋

refreshHandlerputerRunAfter(10);

}else{

setPlayer2Run();

}

}else{

否则,提示游戏结束

setMode(PLAYER_TWO_LOST);

}

}

}

4.2.5 玩家二下棋的方法

private void player2Run(MotionEvent event){

Point point = newPoint(event.getX(), event.getY());

if(point==null){

return ;

}

if(allFreePoints.contains(point)){此棋是否可下

setOnProcessing();

player2.run(player1.getMyPoints(),point);

刷新一下棋盘

refressCanvas();

判断我是否赢了

if(!player2.()){我还没有赢

setPlayer1Run();

}else{

否则,提示游戏结束

setMode(PLAYER_ONE_LOST);

}

}

}

4.2.6 实现判断输赢的方法

private final Point temp = new Point(0, 0);

我是否是否赢了

public final boolean (){

if(myPoints.size()<5){

return false;

}

只计算从最后一步棋子带来的变化

Point point = myPoints.get(myPoints.size()-1);

int count = 1;

int x=point.getX(),y=point.getY();

横向

temp.setX(x).setY(y);

while (myPoints.contains(temp.setX(temp.getX()-1)) && temp.getX()>=0

&& count<5) {

count ++;

}

if(count>=5){

return true;

}

temp.setX(x).setY(y);

while (myPoints.contains(temp.setX(temp.getX()+1)) &&

temp.getX()

count ++;

}

if(count>=5){

return true;

}

纵向

count = 1;

temp.setX(x).setY(y);

while (myPoints.contains(temp.setY(temp.getY()-1)) && temp.getY()>=0) {

count ++;

}

if(count>=5){

return true;

}

temp.setX(x).setY(y);

while (myPoints.contains(temp.setY(temp.getY()+1)) &&

temp.getY()

count ++;

}

if(count>=5){

return true;

}

正斜向

count =1;

temp.setX(x).setY(y);

while

(myPoints.contains(temp.setX(temp.getX()-1).setY(temp.getY()+1)) && temp.getX()>=0 && temp.getY()

count ++;

}

if(count>=5){

return true;

}

temp.setX(x).setY(y);

While

(myPoints.contains(temp.setX(temp.getX()+1).setY(temp.getY()-1)) && temp.getX()=0 && count<6) {

count ++;

}

if(count>=5){

return true;

}

反斜 \

count = 1;

temp.setX(x).setY(y);

while

(myPoints.contains(temp.setX(temp.getX()-1).setY(temp.getY()-1)) && temp.getX()>=0 && temp.getY()>=0) {

count ++;

}

if(count>=5){

return true;

}

temp.setX(x).setY(y);

while

(myPoints.contains(temp.setX(temp.getX()+1).setY(temp.getY()+1)) &&

temp.getX()

count ++;

}

if(count>=5){

return true;

}

return false;

}

4.2.7 提示游戏结束

设置运行状态

public void setMode(int newMode) {

currentMode = newMode;

if(currentMode==PLAYER_TWO_LOST){

提示玩家2输了

textView.setText(R.string.player_two_lost);

currentMode = READY;

}else if(currentMode==RUNNING){

textView.setText(null);

}else if(currentMode==READY){

textView.setText(R.string.mode_ready);

}else if(currentMode==PLAYER_ONE_LOST){

提示玩家1输了

textView.setText(R.string.player_one_lost);

currentMode = READY;

}

}

4.3 人机对战

轮到电脑下棋时,电脑先取出一个空白棋位(一个Point对象),以此棋位为起点计算四个方向能形成多少步连续的棋子(即假设性下棋)----此为第一次计算。对应的结果类:

FirstAnalysisResult{

棋位

Point point;

连续数

int count;

状态

int aliveState;

方向

int direction;

}

因为第一次计算的结果对一个棋位都会形成四个结果(每个方向一个结果)这一步将这些结果汇总到一个类对象中----第二次计算。对应的结果类对象:

SecondAnalysisResult implements Comparable{ 棋位

Point point;

活4

int alive4 = 0;

活3数量

int alive3 = 0;

半活4,一头封的

int halfAlive4 = 0;

半活3,一头封的

int halfAlive3 = 0;

活2数量

int alive2 = 0;

对第二次计算结果进行排序,将结果分成三个等级,每个等级由一个集合装载,由子类在排序结果挑选想要下的棋子。为了性能,在第一次计算前,必须确定一个较小的计算范围,不能全部都算。另外,在每次找到必杀棋时,直接返回,不再往下计算。

5 游戏的实现

5.1 游戏主界面

游戏的主界面如图5-1所示。

图5-1游戏主界面

5.2 游戏帮助界面

游戏的帮助界面如图5-2所示。

图5-2游戏的帮助界面

5.3 五子棋介绍界面

五子棋的介绍界面如图5-3所示。

图5-3五子棋的介绍界面

5.4 游戏界面

进入游戏后的界面如图5-4所示。

图5-4游戏界面

5.5 退出界面

游戏退出时的界面如图5-5所示。

图5-5游戏退出界面

6 结论

在本游戏的编写过程中,我遇到了许多的问题。首先要自己先自学一下Android的游戏编程,虽然和JAVAME的思想差不多,但是Android上有许多的控件和类在JAVAME上是没有的,在这方面我遇到了很大的难题。还有就是对五子棋游戏的算法不是很清楚。在编码实现的时候,会出现一些开始完全意料不到的问题,也许这些问题当中,有的是老师讲过的,不过我想大部分还是老师没有讲过,这个时候就是体现出自己解决问题的能力的时候了。在遇到问题时要学会如何去分析错误,再是学会如何去解决掉这个问题。在遇到问题是,不要有害怕困难的情绪,解决问题也是一个不断学习进步的过程,遇到的问题越多,学到的东西也就越多。因此在遇到困难之时,不要轻言放弃,要努力向前解决问题。我在2014年4月开始了我的毕业论文工作,认真总结,经过长时间的写作到现在论文基本完成。写毕业论文不是一件容易的事情,需要不断的进行精心的修改,不断地去研究各方面的文献。经过很久的努力,终于在2014年5月份完成了毕业论文。在这次毕业论文的写作的过程中,我拥有了无数难忘的感动和收获。后来,在与导师的交流讨论中我的题目定了下来,我便立刻在学校的图书馆和网上找了一些着手资料的收集工作中,当时面对众多网络资料库的文章真是有些不知所措,不知如何下手。我将这一困难告诉了指导老师,在老师的细心的指导下,终于使我了解了应该怎么样利用学校的浩瀚的资源找到自己需要的青春文学方面的资源。认真的阅读,总结笔记,为自己的论文打好基础。写作毕业论文是我们每个大学生必须经历的一段过程,也是我们毕业前的一段宝贵的回忆。当我们看到自己的努力有收获的时候,总是会有那么一点点自豪和激动。任何事情都是这样子,需要我们脚踏实地的去做,一步一个脚印的完成,认真严谨,有了好的态度才能做好一件事情,一开始都觉得毕业论文是一个很困难的任务,大家都难免会有一点畏惧之情,但是经过长时间的努力和积累,经过不断地查找资料后总结,我们都很好的按老师的要求完成了毕业论文的写作,这种收获的喜悦相信每个人都能够体会到。这是一次意志的磨练,是对我实际能力的一次提升,相信对我未来的学习和工作有很大的帮助。每次在遇到困难的时候,我也得到了同学的帮助,共同商量相关专业问题,这种交流对于即将面临毕业的我们来说是一次很有意义的经历,大学四年都一起走过了,在最后我们可以聚在一起讨论学习,研究专业问题,进而更好的了解我们每个人的兴趣之所在,明确我们的人生理想,进而在今后的生活和工作中更好的发挥自己的优势,学好自己选择的这项专业技术,让自己在这条路上的明

天会更好。

主要参考文献

[1] E2ECloud工作室. 深入浅出Google Android[M]. 北京:人民邮电出版社, 2009.

[2] 孔令德. 毕业设计案例教程—从系统开发到论文写作[M]. 北京:国防工业出版社, 2007.

[3] 勒岩. Android开发入门与实战[M]. 北京:人民邮电出版社, 2011.

[4] 王克宏.Java技术教程(基础篇)[M]. 北京:高等教育出版社, 2002.

[5] 王小春. PC游戏编程(人机博弈)[M]. 重庆:重庆大学出版社, 2002.

致谢

历时良久终于将这篇论文写完,在论文的写作过程中遇到了无数的困难和障碍,都在老师和同学们的帮助下度过了。在此感谢我的论文指导老师邹海老师,他对我进行了耐心的指导和帮助,不厌其烦的帮助进行论文的修改和改进;感谢计算机学院的老师这四年来的殷切教导;感谢论文所涉及到的各位学者的研究成果给我的帮助和启发。如果没有他们,我将很难完成本篇论文的写作。感谢我的同学和朋友,在我写论文的过程中给予我了很多帮助和支持。由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评和指正。

五子棋游戏设计方案

目录 一、摘要: (1) 二、关键字: (1) 三、程序主流程图 (2) 四、需求分析: (3) 五、关键部分设计算法及实现: (4) 六、文件清单: (9) 七、使用说明: (9) 八、参考书目: (10) 九、附录:(源代码清单) (11) 五子棋程序 一、摘要:

五子棋游戏是一历史悠久,对抗性强,技巧性高的棋类游戏。本文用VC 设计了五子棋游戏。并就以下问题进行了探讨: (1)棋子棋盘在程序中的表示; (2)如何通过鼠标点击落子; (3)如何判断输赢,在棋盘的—,|,/,\,四个方向进行搜索,超过5子以上连成一线则认为赢了。 (4)如何实现梅棋功能。 (5)如何保存并读入棋谱; (6)如何让电脑拥有人类的智慧; (7)编写软件代码应遵守的编写规范,成对编码原则和代码的注释; (8)其它未详尽处,请参看源代码。 二、关键字: 棋盘数组 搜索算法 人工智能 活 半活 双活三

三、程序主要类结构图

CfiveStoneApp

四、需求分析: 五子棋历史源远流长,发展形势喜人,以下在网络上一篇有关五子棋历史发展的报道: 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“連珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。?五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。? 五子棋起源于古代中国,发展于日本,风靡于欧洲。对于它与围棋的关系有两种说法,一说早于围棋,早在“尧造围棋”之前,民间就已有五子棋游戏;一说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。古代的五子棋的棋具与围棋相同,纵横各十七道。五子棋大约随围棋一起在我国南北朝时先后传入朝鲜、日本等地。据日本史料文献介绍,中国古代的五子棋是经由高丽(朝鲜),于1688年至1704年的日本元禄时代传到日本的。到日本明治32年(公元1899年),经过公开征名,“连珠”这一名称才被正式确定下来,取意于“日月如合壁,五星如连珠”。从此,连珠活动经过了不断的改良,主要是规则的变化(即对执黑棋一方的限制),例如,1899年规定,禁止黑白双方走“双三”;1903年规定,只禁止黑方走“双三”;1912年规定,黑方被迫走“双三”亦算输;1916年规定,黑方不许走“长连”;1918年规定,黑方不许走“四、三、三”;1931年规定,黑方不许走“双四”,并规定将19×19的围棋盘改为15×15的连珠专用棋盘。本世纪初五子棋传入欧洲并迅速风靡全欧。通过一系列的变化,使五子棋这一简单的游戏复杂化、规范化,而最终成为今天的职业连珠五子棋,同时也成为一种国际比赛棋。? 目前,职业连珠已迅速在国际上发展起来。1988年8月8日,国际连珠联盟(RIF)由日本、俄罗斯、瑞典、亚美尼亚、阿塞拜疆、爱沙尼亚、法国、拉脱维亚、白俄罗斯等9个成员国在瑞典宣告创立,我国于1996年正式加入国际连珠联盟,现在全世界已有47个国家和地区成为国际连珠联盟的正式会员。职业连珠的世界锦标赛从1989年起每两年举办一次,现已举办了六届,第三、五、六届的冠军是爱沙尼亚人,其余三届的冠军都是日本人。我国最好成绩是团体第七,个人张进宇第9名。就水平而言,目前以俄罗斯、日本、瑞典最强,其中日本研究也最深,我国只处于中等水平。日本拥有自己的五子棋职业棋手,并且对连珠技术的研究也相当普遍和全面。日本每年举行连珠名人战。? 五子棋的根在中国,有着广泛的群众基础。但与世界先进的五子棋技术相比,我们的棋艺水平还很低,所以我们要推广五子棋,宣传五子棋,争取在较短的时间内赶上和超过世界五子棋坛的先进水平。1990年,由那威和十几名五子棋爱好者,共同发起并成立了中国第一个现代职业五子棋的民间组织----京都五子棋队,现已发展成为拥有百余名选手的北京京都五子棋队。日本连珠联盟曾多次派代表团访问中国,与中国广大爱好者进行交流和友谊比赛,瑞典连珠联盟也于1995年派代表团访问了中国,京都五子棋队曾两次选派选手代表中国参加世界杯比赛,取得此成绩反映了我国五子棋水平在世界上所处的位置,同时也显示了我国在此项运动中的发展潜力。1997年5月北京成功地举办了第一届“康柏杯”

五子棋游戏的设计与实现毕业设计论文

毕业论文(设计)题目五子棋游戏的设计与实现

毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:日期:

学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日 导师签名:日期:年月日

五子棋报告-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版)实习报告及原代码

实习报告 课程名称信息系统认知实习实习题目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本课题研究的意义 近来随着计算机的快速发展,各种各样的电脑游戏层出不穷,使得我们能有更多的娱乐项目,而棋类游戏能起到锻炼人的思维和修身养性的作用,而且棋类游戏水平颇高,大有与人脑分庭抗礼之势。其中战胜过国际象棋世界冠军-卡斯帕罗夫的“深蓝”便是最具说服力的代表;其它像围棋的“手淡”、象棋的“将族”

五子棋游戏程序的设计报告

计算机学院网络工程专业《程序设计综合课程设计》报告(2011/2012学年第一学期) 学生姓名: 学生班级:网络工程 学生学号: 指导教师: 2011年12月30日

双人五子

棋 目录 第一章课程设计目的和要求 (1) 1.1课程设计的目的 (1) 1.2课程设计的要求 (1) 第二章课程设计任务内容 (2) 2.1课程设计的主要内容 (2) 2.2系统设计原则 (2) 第三章设计说明 (3) 3.1游戏分析和介绍 (3) 3.1.1游戏分析 (3)

3.1.2游戏介绍 (3) 3.2重点模块说明 (3) 3.2.1棋盘界面Showboard() (3) 3.2.2下棋Play() (4) 3.2.3覆盖棋盘Recoverboard() (7) 3.2.4游戏结束后初始化棋盘Unitboard() (7) 3.2.5保存棋盘CopyB() (8) 3.3函数清单 (8) 3.4接口 (9) 第四章软件使用说明 (10) 4.1测试 (10) 4.2限制条件 (13) 第五章课程设计心得体会 (14) 附录一程序流程图 (15) 附录二程序代码 (16) 附录三参考文献 (26) 第一章课程设计目的和要求 1.1课程设计的目

1,学习综合运用C语言课程和其他相关课程的知识,提高分析解决实际问题的能力,进一步巩固、加深和拓宽所学的知识,进一步加强结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。 2,全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法,与同学合作设计整套程序,并且独立完成一定工作量的程序设计. 3,掌握程序设计中的常用算法和C语言的程序技巧,培养良好的程序设计风格。 4,运用所学的知识了解五子棋游戏的制作结构,将所学的知识运用于实践中。 1.2课程设计的要求 1,与同学合作设计、编制、调试出一款双人五子棋游戏,并单独完成其中一定量的函数模块。 2,要求该游戏具有趣味性和可操作性,能够正常运行。其中用到C++语言中的各种语句、结构。(如其中需要注意全局变量和局部变量的申明,数组的使用等) 3,双人五子棋要求能够进入欢迎界面,二人对弈,当有五颗同色棋子相连时,判断出输赢等一系列游戏流程。

基于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.

(完整版)五子棋本科毕业设计

第一章绪论 1.1开发背景: 游戏软件是当今世界发展最迅速,最有影响力,最有潜力与活力的领域之一?游戏软件深受广大青年人喜爱,而且在发达国家中老年人也有大部分喜欢游戏的,因此游戏软件在很大程度上给予绝大部分人精神上的娱乐?第二次世界大战以后,电子计算机技术得到了突飞猛进的发展?先是由晶体管代替了笨重的真空管,后来出现了集成电路和大规模集成电路,使电子子计算机一代一代实现更新,同时软件技术也发展迅速?在美国,集中了许多计算机软件的设计人才,他们工作之余,时常喜爱编一种能与人斗智的“游戏”,以此来锻炼编程的能力?这种“游戏”花样繁多,但其特点都是利用计算机软件事先设计好的“分析”?“判断”能力反过来与人较量?由于不断修改更新,使计算机的“智力”水平与人难分高低?到了90年代,游戏软件已经为世界各国的人使用,BLACKISLAND和Blizzard.这两个强大的游戏制作组起到了巨大的带动作用,还有中国的洛河工作室在国内也起到了巨大作用,他们让很多很多人喜欢上了游戏软件,打开了这个市场。如今游戏软件产业已经受到了广泛的关注,它年轻有潜力而且吸引人,让人们日益丰富的生活需求得以满足。 五子棋游戏更是吸引着不同年龄段的人群,无论男女老少都可以玩,都喜欢玩,而当前微型计算机已经是在广大人群中流行着,用电脑来下五子棋更是一种时尚。五子棋相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在“尧造围棋”之前,民间就已有五子棋游戏。有关早期五子棋的文史资料与围棋有相似之处,因为古代五子棋的棋具与围棋是完全相同的。在上古的神话传说中有“女娲造人,伏羲做棋”一说,《增山海经》中记载:“休舆之山有石焉,名曰帝台之棋,五色而文状鹑卵。”李

软件工程课程设计五子棋游戏

计算机工程系课程设计报告 课程名称:软件工程 课程设计题目:五子棋游戏 班级 2013级计科(4)班 姓名许婷娜 学号 20130905428 2015年12月27日

目录 1. 引言 (1) 1.1系统的开发背景(可行性分析) (1) 1.2 系统简介 (2) 1.2.1系统介绍 (2) 1.2.2开发本系统所做的工作 (2) 2. 需求分析 (3) 2.1 需求的描述与分析 (3) 2.2 需求定义 (3) 2.2.1 功能需求 (3) 2.2.2 性能需求 (4) 3. 系统设计 (4) 3.1总体设计 (4) 3.1.1设计思想 (4) 3.1.2五子棋游戏的功能的结构图 (5) 3.2程序设计分析 (5) 4. 五子棋游戏的详细设计 (6) 4.1五子棋游戏的主窗口界面 (6) 4.2五子棋游戏的核心模块的详细设计 (10) 4.2.1五子棋游戏程序核心代码 (10) 4.2.2五子棋游戏程序主面板与鼠标事件 (13) 4.2.3五子棋游戏程序流程图 (17) 4.3五子棋游戏的游戏功能模块的详细设计 (18) 4.3.1五子棋游戏的开局功能模块 (18) 4.3.2五子棋游戏的棋盘功能模块 (18) 4.3.3五子棋游戏的模式功能模块 (19) 4.3.4五子棋游戏的退出功能模块 (19) 4.4五子棋游戏的外观功能模块的详细设计 (19) 4.5五子棋游戏的版本功能模块的详细设计 (20)

5. 五子棋游戏的测试 (20) 5.1系统测试的类型 (20) 5.2测试举例 (21) 5.2.1测试用户的对弈结果 (21) 5.2.2测试用户切换棋盘类型功能 (22) 5.2.3测试用户切换模式类型功能 (23) 5.2.4测试用户切换外观类型功能 (24) 5.2.5测试版本功能 (26) 小结 (27) 致谢 (28) 参考文献 (29)

五子棋游戏总体设计与实现

五子棋游戏总体设 计与实现

4.系统总体设计与实现 4.1 总体设计分析 总体设计是软件开发过程中的另一个重要阶段,在这一阶段中将根据需求分析中提出的逻辑模型,科学合理地进行物理模型的设计。这个阶段的主要目标是将反映用户信息需求的逻辑方案转换成物理方案,并为下一阶段提供必要的技术资料。 4.1.1 总体设计原则 (1)整体性:软件是作为统一整体而存在的。因此,在总体设计中要从整个软件的角度进行考虑。 (2)灵活性:为保持软件长久的生命力,要求该手机游戏软件具有很强的环境适应性。为此,游戏软件应具有较好的开放性和结构的可变性。 (3)可靠性:可靠性是指软件抵御外界干扰的能力及受外界干扰时的恢复能力。 (4)经济性:经济性是指在满足游戏软件需求的前提下,尽可能地减小游戏软件的开销。 4.1.2 软件模块总体设计 软件中各模块之间的关系一般利用层次图来表示。它是一种一系列多层次的用树形结构的矩形框描绘数据的层次结构框图。

一个单独的矩形框作为树形结构的顶层,各个数据的子集由下面的各层矩形框代表,最底层的各个矩形框代表组成这个数据的实际数据元素(不能再分割的元素),它代表完整的数据结构。这模式非常适合于需求分析阶段的需要,层次方框图对数据结构描绘随着结构精细化也越来越详细。重复细化沿着图中每条路径,从对顶层信息的分类开始,直到确定了数据结构的全部细节为止。 图4-1 游戏功能结构 本研究中将游戏软件分为三大模块,如图4-1所示,包括:游戏选项、游戏设置和帮助。按照在调研中搜集的资料对每个模块的功能进行编排制作。依据上述功能的分析,本研究中,将游

戏软件在三大模块的基础上又对每一大模块又分为几个子模块:游戏选项包括六个模块:开始游戏、重新游戏、悔棋、认输、背景音乐和退出游戏。 游戏设置包括三个模块:先后手设置、棋盘底纹颜色设置和棋盘大小设置。 帮助包括两个模块:游戏帮助和关于。 4.2 游戏设计 4.2.1 游戏前的准备 本游戏在开发之前需要做一些前期准备工作,特别是对于精通五子棋游戏的Java 游戏开发者来说。一般情况下,一款运用起来比较熟练地J2ME 开发工具是必不可少的。本游戏使用的是J2ME的简化开发工具Sun Java (TM) Wireless Toolkit 2.5.2 for CLDC,她需先将Java虚拟机安装调试好之后才能使用。WTK 2.5.2 不带有文本编辑功能,因此需要另寻搭配使用。本游戏采用Ultra Edit 进行编辑。本游戏需要几张后缀名为.png格式的卡通图,除了一张用作五子棋游戏的 Logo 外,其余的都将在游戏中使用。4.2.2 游戏界面和事件驱动设计 游戏的界面设计采取传统游戏界面风格,如图4-2所示。游戏设计中采用传统界面游戏风格,首先启动游戏,然后进入游戏开始界面,界面中放置“设置”、“开局”、“帮助”、“关

jv五子棋毕业设计整套

1引言 随着计算机技术的不断发展,网络技术的普及范围越来越广,网络能够提供的服务多样、便捷,已经成为人们生产生活中不可缺少的重要组成部分。如今网络休闲游戏发展迅速,它凭借健康、方便、互动性强、益智等诸多优点,成为大部分现代人休闲娱乐的首选。 网络五子棋游戏是使用Java语言开发的一款游戏。它使用SOCKET建立连接,多线程处理数据,以及可嵌入网络浏览器的APPLET作为客户端,这些特点使这款游戏无论是服务器还是客户端的实现都相对容易。通过对该软件的编写,还可以巩固学生对以上各种知识的掌握和理解。

2 JAVA语言概述 2.1 JAVA简介 JAVA是Sun Microsystem公司开发的编程语言,是一个简单,面向对象,分布式,解释性,强壮,安全,与系统无关,可移植,高性能,多线程和动态的语言。 2.1.1 JAVA的基本特点 (1) 简单性 Java与C++语言非常相近,但Java比C++简单,它抛弃了C++中的一些不是绝对必要的功能,如头文件、预处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型。 Java实现了自动的垃圾收集,简化了内存管理的工作。 (2) 面向对象 Java提供了简单的类机制和动态的构架模型。对象中封装了它的状态变量和方法,很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或重新定义父类或超类所提供的方法,从而既实现了代码的复用,又提供了一种动态的解决方案。 (3) 多线程 多线程使应用程序可以同时进行不同的操作,处理不同的事件。在多线程机制中,不同的线程处理不同的任务,他们之间互不干涉,不会由于一处等待影响其他部分,这样容易实现网络上的实时交互操作。 (4) 分布性 Java是面向网络的语言。通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便的访问其他对象。 (5) 体系结构中立 Java是一种网络语言,为使Java程序能在网络的任何地方运行,Java解释器生成与体系结构无关的字节码结构的文件格式。为了使Java的应用程序能不依赖于具体的系统,Java语言环境还提供了用于访问底层操作系统功能的类组成的包,当程序使用这些包时,可以确保它能运行在各种支持Java的平台上。 (6) 安全性 用于网络、分布环境下的Java必须要防止病毒的入侵,Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止了程序员使用欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。 2.1.2 Java中输入/输出流概念 过滤流DataInputStream 和DataOutputStream 除了分别作为FilterInputStream 和FilterOutputStream的子类外,还分别实现了接口DataInput 和DataOutput。接口DataInput 中定义的方法主要包括从流中读取基

课程设计报告--c++课程设计五子棋游戏

徐州师范大学物电学院课程设计报告 课程名称:计算机程序设计实训 题目:五子棋 专业班级: 09物41 学生姓名:高乐莲 学生学号: xxxx ___________ 日期: 2011.12.24 指导教师:赵纪平 物电学院教务部印制

说明: 1、报告中的第一、二、三项由学生在课程设计开始前填写,由指导教师指 导并确认签字。 2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩,并 填写成绩评定表。 3、所有学生必须参加课程设计的答辩环节,凡不参加答辩者,其成绩一律 按不及格处理。答辩小组成员应由2人及以上教师组成。答辩后学生根据答辩情况填写答辩记录表。 4、报告正文字数一般应不少于3000字,也可由指导教师根据本门课程设 计的情况另行规定。 5、平时表现成绩低于6分的学生,取消答辩资格,其该课程设计成绩按不 及格处理。 6、课程设计完成后,由指导教师根据完成情况写出总结。 7、此表格式为徐州师范大学物理与电子工程学院提供的基本格式,指导教 师可根据本门课程设计的特点及内容做适当的调整。

指导教师签字: 年月日

目录 摘要...................................................................................................II Abstract................................................................................................ II 1 绪论 (1) 1.1 课题背景 (1) 1.2 课程设计的目的 (1) 2 设计方案简述 (2) 2.1 可行性分析 (2) 2.2 需求分析 (2) 3 详细设计 (3) 3.1窗体设计 (3) 3.2游戏项目开发 (5) 3.2.1棋牌设置 (5) 3.2.2放置棋子功能的开发 (6) 3.3.3游戏获胜决断的开发 (12) 3.2.4游戏的调试与运行 (20) 4 设计结果及分析 (22) 4.1 程序的结果 (22) 4.2结果分析 (23) 5总结 (24) 参考文献 (25)

五子棋-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

五子棋游戏设计报告

五子棋游戏 项目设计报告 报告人:_ 学号: z

日期:2016年5月25日 摘要 (3) 一、....................................................... 系统功能简述. (4) (一).......................................... 系统功能4 (二).......................................... 开发环境4 (三)............................................... 实用价值 4. 二、................................................ 界面设计 5. (一)............................................... 界面操作 5. (二)...................................... 界面设计方案6 三、.............................................. 收获与体会 13 四、................................................ 参考文献 14

摘要 随着经济的发展,社会竞争的激烈,现在社会进入了竞争的时代。上班族为了完成公司业务,每天超负荷的工作;学生为了不落后他人每天早起晚睡不断地学习,压力巨大。所以为了缓解大家的压力,使大家在工作、学习之余娱乐一下,活跃大脑,提高工作、学习效率,因此益智性游戏越来越受人们的关注,五子棋作为益智类游戏之一,倍受人们的喜爱,所以对于五子棋的开发也有了很多关注。 本文主要讲的是利用VC++6.0 软件开发一个界面简洁、直观、实用性比较高的AI 功能的五子棋游戏,游戏程序实现人机对弈,在对弈过程中当用户和电脑比赛时电脑利用搜索算法计算出落子的最佳位置,是先人机对弈,而且程序能够完成具有重新开始游戏、判断胜负、判断落子等功能。 关键词:人工智能,自动处理,人机博弈,五子棋

(完整版)五子棋游戏的设计与实现毕业设计

毕业论文(设 计) 题目五子棋游戏的设计与实 现 所在院(系)数学与计算机科学学 院

专业班级信息与计算科学1101班 指导教师拓守恒 完成地点陕西理工学院 2015年5 月18日

五子棋游戏的设计与实现 作者:王勇 (陕理工学院数学与计算机科学学院信息与计算科学专业1101班,陕西汉中 723000) 指导教师:拓守恒 [摘要]五子棋是起源于我国古代的黑白棋种之一,是一种简单的娱乐性较强的大众游戏,深受广大玩家的喜爱,但同时作为比赛,五子棋游戏还有着深奥的技巧。 本系统的实现采用了C语言的模块化的程序设计方式,用Visual C++ 6.0软件来实现程序的编译运行。实现黑白两方分别落子,通过棋盘上方的棋盘动态信息提示,轮流落子,本系统中游戏的每一个功能在程序中都是一个相对独立的模块,比如,棋盘模块,棋子模块,选择游戏模式模块,悔棋模块等等在程序中都是独立的,但它们之间通过逻辑关系的链接又构成了一个可以使游戏正常运行的程序。 为实现游戏的双人对战模式和人机对战模式,并使得游戏尽量的简单化,本系统需要达成以下目标:设计一个简洁的游戏初始界面;制定合法规则,使游戏能公正的进行,并且可以断定胜;支持人机对战模式,可以是电脑通过人工智能和合法规则选出最优落子位置;可以悔棋,在玩家落子落错位置时,可按下悔棋键进行悔棋。 [关键词]五子棋,游戏设计,C语言,双人对战,人机对战,人工智能

Designer and implementation of gobang game Author: wangyong (Grade11,Class 1, Major in Information and computing science, Mathematics and computer science Dept. Tutor: Tuo shouheng Abstract:Gobang is one of the black and white kind of originated in ancient China, is a simple and entertaining stronger mass games, loved by the majority of players, but at the same time as the game, gobang game with profound skills. The implementation of this system method, using Visual C + + 6.0 software to realize the program compiler running. Implementation of black and white two parties move later, respectively, by the board at the top of the dynamic message board, take turns to move later, this game in the system each function in the program is a relatively independent modules, such as, the board module, pawn module, select game mode module, back module and so on in the program are independent, but the link through the logical relationship between them and form a can make the normal operation of the game program. In order to realize the double mode and man-machine game mode, and make the game as far as possible the simplification, the system needs to achieve the following goals: design a simple game of initial interface;the legal rules, can make the game fair, and you can call;support the man-machine

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