java五子棋小游戏实验报告(附源代码)

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

目录

1 概述 (5)

1.1 课题研究背景 (5)

1.2 课题研究意义 (5)

2 开发技术背景 (6)

2.1 JAVA语言概述 (6)

2.2 J2ME简介 (6)

2.3 移动信息设备简表 (6)

3 系统分析及总体设计 (7)

3.1 可行性分析 (7)

3.2 需求分析 (8)

3.3 系统概要设计 (8)

4 系统详细设计 (9)

4.1 界面设计 (9)

4.1.1 图形的低级绘制 (10)

4.1.2 用户按键设计 (10)

4.2 走棋算法 (11)

4.3 胜负判断 (11)

5 系统测试 (11)

5.1 测试方案 (11)

5.2 测试结果 (12)

6总结 (13)

基于J2ME的手机五子棋游戏的设计与实现

1 概述

1.1 课题研究背景

五子棋是当前非常流行的一种棋。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。

手机游戏的实现方式主要包括嵌入式游戏、浏览器游戏、短消息服务游戏、J2ME和其它的解释语言。Java 2 Micro Edition是一种针对移动电话和PDA这样的小型设备的Java语言。J2ME与台式机中的Java相比还是有一定的限制,但是它已经极大的提高了移动电话支持游戏的能力。并且具备一定的优势:庞大的潜在用户群、便携性、开发门槛较低。

手机是现代生活方式的产物,如同因特网的普及导致网络游戏的高速发展一样,手机的普及,对满足不同功能的手机软件的需求也就越来越迫切,这就需要比较好的手机软件开发平台,此时具有平台无关性优点的J2ME开发平台也就应运而生。与传统的主流的PC游戏相比,手机游戏的价值在于打发一些无聊的时间,作为一个移动的娱乐终端,手机游戏施展身手的机会永远可能是在地铁站、公交车或者是洗手间这些地方,也许在庞大的游戏行业里,手机游戏将永远扮演着一个边缘者的角色,因为谁也不能指望一个人在家的时候用手机玩游戏或者看电影。但是手机游戏的市场是巨大的,即便是只有十分之一的用户来购买游戏,那也将是不可忽视的商业机遇。

手机游戏是手机的一种高附加值操作软件,游戏编程是手机软件编程的重要组成,同时也持续推动手机软件技术升级进步。手机游戏按手机平台分类,主要有J2ME、Brew、UniJa等。其中J2ME手机开发平台使用最为广泛。作为SUN公司针对微型嵌入式消费电子产品开发的编程系统,J2ME技术是当前手机软件开发的主流平台,各大手机生产厂商目前的主流产品绝大都使用J2ME技术。基于J2ME技术开发手机软件可以实现手机功能的多样化与专业化,极大的满足了人们对手机要求更高的需求。

1.2 课题研究意义

本设计基于J2ME技术,开发一款五子棋游戏软件,可以供人们闲暇时间随时随地娱乐,提高棋艺。五子棋不但容易上手,而且它区别于别的游戏,它不但使人娱乐,而且能使人的头脑变得更加聪明。

通过对该课题的研究,首先,进一步熟悉面向对象语言,加深对J2ME层次结构的了解。通过eclipse集成开发环境创建软件,最终形成一个具备基本功能的手机五子棋游戏,可应用于便携式设备,适合于棋类爱好者。其次,了解手机

游戏开发的特点和现状。

2 开发技术背景

2.1 JAVA语言概述

Java的出现是源于对独立于平台语言的需要,希望这种编程语言能编写出嵌入各种家用电器等设备的芯片上、且易于维护的程序。人们发现当时的编程语言都有一个共同的缺点,就是针对CPU芯片进行编译。这样,一旦电器设备更换了芯片就不能保证程序正确运行。九零年Sun公司成立了开发小组,开始致力于开发一种可移植的、跨平台的编程语言,该语言能生成正确运行于各种操作系统、各种芯片上的代码。Java的出现标志着真正的分布式系统的到来。

Java是一种跨平台的、面向对象的、分布式的、解释的、安全的、结构的、可移植的、性能很优异的多线程的动态语言。

Java的特点:平台无关性;安全性;面向对象;分布式;健壮性。

2.2 J2ME简介

J2ME是SUN公司针对嵌入式、消费类电子产品推出的开发平台,与J2SE和J2EE 共同组成Java技术的三个重要的分支。J2ME实际上是一系列规范的集合,由JCP 组织制定相关的Java Specification Request(JSR)并发布,各个厂商会按照规范在自己的产品上进行实现,但是必须要通过TCK测试,这样确保兼容性。J2ME 是JAVA的三大分支之一,专门用于开发基于消费性电子产品的应用。J2ME支持个人手持移动设备,如手机、PDA等。手机用户可以通过支持JAVA功能的终端,使用多种全新图形化、动态化和个性化的移动增值服务。

2.3 移动信息设备简表

移动信息设备简表(MIDP)为移动电话和入门级PDA设计,为移动应用程序提供了所需的全部核心功能,包括应用程序模型、用户界面、持久性数据存储、联网能力及应用程序管理功能,目前应用非常广泛的MIDlet就是在MIDP中定义的。

MIDP框架如图2-1所示。

图2-1 MIDP框架图

MIDP提供核心应用程序功能,包括用户界面、网络连接、本地数据存储和应用程序生命周期管理。MIDlet生命周期流程图如图2-2所示。

MIDP中含有下列API包:

A. javax.microedition.lcdui: 用户界面(UI)API,它为MIDP应用提供了一整套实现用户界面的功能特性。

B. javax.microediton.rms: 移动信息设备描述提供了一种让MIDlets持久性储存并在以后可以取回数据的机制。

C. javax.microedition.midlet: 这个MIDlet包明确定义了MIDP应用,也定义了和应用环境之间的交互。

D. javax.microedition.io: 移动信息设备还描述包括基于有限连接设备配置GenericConnection框架的网络支持。

图2-2 MIDlet生命周期流程图

3 系统分析及总体设计

3.1 可行性分析

3.1.1 技术可行性

五子棋是传统的对弈游戏,历史悠久、规则单一。手机游戏的实现方式主要包括嵌入式游戏、浏览器游戏、短消息服务游戏、J2ME和其它的解释语言。Java 2 Micro Edition是一种针对移动电话和PDA这样的小型设备的Java语言,虽然它与台式机中的Java相比还是有一定的限制,但是已经极大的提高了移动电话支持游戏的能力。

在eclipse环境中编写并在模拟器中运行简单明了。

3.1.2 操作可行性

本游戏开发后可导入手机操作,供个人平常娱乐所用,完全使用手机键盘操作,操作简单,所以在这方面是完全可行的。

3.2 需求分析

3.2.1 系统的性能需求

首先,手机游戏最大的问题在于每一款手机拥有自己的屏幕大小和特定的API及性能。游戏开发过程中,要考虑到游戏程序的设计要能合乎大多数手机的应用。J2ME提出的一系列标准使得使用J2ME开发的游戏可以在配备J2ME的任何厂家的移动设备上运行。软件最好操作简单容易。受手机屏幕大小和显示的影响。手机键盘的不方便,游戏需要设计得容易操作。

其次,软件具有人工智能算法原理要简单,并且运行快速。对于人机游戏,不需要网络连接,游戏处理不会有太长的等待时间。游戏是需要快速反应的。手机处理器的频率直接要求我们需要使用简单实用的智能算法。

3.2.2 系统的功能需求

A.游戏内容

此款游戏主题是五子棋对弈。无“禁手”的规则基本是人人皆知。相同颜色的棋子,五子一线为胜。

B.游戏方式

区别于一般的生活中的人与人的对弈,用在手机上为人机对弈,在手机屏幕上构造一个游戏棋盘,并且设计黑、白棋子。利用人工智能的相关知识实现对弈。

C.游戏对象

五子棋手机游戏是大众游戏,游戏者只要具备一般的操作知识就可以进入游戏。对玩游戏者并没有什么特殊要求。

D.游戏目标

此款手机游戏为棋类游戏,就是为了让人们闲暇时间休闲、锻炼棋艺。

a) 欢迎界面:玩家可点击“确定”进入规则说明界面。

b) 规则说明界面:玩家可点击“开始游戏”进入游戏。

c) 棋盘界面:对弈界面,使用上、下、左、右键来移动落子点位,使用确定按钮来落子,相应条件下可实现重新开始游戏功能。

d) 胜负判断:涉及人工智能,用以判断人与机器的输赢状况,游戏无“禁手”,五子首先连成一线者胜。

3.3 系统概要设计

该系统设计的主要模块分为:欢迎模块、规则说明模块、对弈与胜负判断模块。各主要模块的功能描述如下:

欢迎模块:这部分是游戏出现的第一个界面,主要是为了说明已经进入五子棋游戏系统。

规则说明模块:此模块说明了游戏规则。玩家可以选择开始游戏或返回欢迎界面。

对弈模块:该部分主要是进行人机对弈的棋盘界面。该模块有退出游戏和重新开始的功能。

胜负判断模块:这部分即是对每次棋局结果的判断,是人赢了或者是电脑获胜。

系统主要功能模块如图3-1所示。

图3-1 系统功能模块图

4 系统详细设计

4.1 界面设计

该部分主要说明手机游戏画面显示,包括画面的低级绘制以及如何进行游戏按键处理。

本程序的设计主要使用了MIDP所提供的javax.microedition.lcdui包中的类来实现手机的用户界面。

各个类如表4-1所示。

4.1.1 图形的低级绘制

若是要在MIDlet中使用低级用户界面设计,就必须定义一个从Canvas类派生出来的子类。

在Canvas类的子类中必须实现paint()方法。Graphics对象包含了所有的在屏幕上绘画的方法,例如drawArc()、drawLine(),drawRect (),drawString()和fillArc()等。

本程序设计用到了Canvas类中的基本绘图方法:

绘制直线:

Public void drawLine(int x1,int y1,int x2,int y2)

绘制矩形:

Public void drawRect(int x,int y,int width,int height)。

绘制字符串:

Public void drawString(String str,int x,int y,int anchor)。

填充指定矩形内的圆:

Public void fillArc(int x,int y,int width,int height,int startAngel,in tint arcAngel)。

使用上述方法绘制棋盘界面:

绘制棋盘:

gg.drawLine(gridWidth,i*gridHeight,grifWidth*lineNumber+1,i*gridH eight)。

gg.drawLine(i*gridWidth,gridHeight,i*gridWidth,,lineNumber*gridHe ight+1)。

绘制棋子:

gg.fillArc(x-gridwidth*2/5),y-gridHeight*2/5,gridWidth*4/5,gridHe ight*4/5,0,360)。

绘制显示输赢的字符串:

gg.drawString(Show String,base x,base y,Graphics.TOP| Graphics.LEFT)。

4.1.2 用户按键设计

游戏是交互的,因此在游戏中一个重要的内容就是响应用户的按键操作。下面介绍在游戏中用户按键响应的实现。

使用Canvas中的protected void keyPressed(int keycode)函数,当按下按键时调用该函数,实现上下左右的按键消息。

设计举例:

Protected void keyPressed(int keyCode){

if (keycode==getKeyCode(Canvas.LEFT)){

……}

}

手机键盘与平常设备键盘不同,命令的执行主要通过command类设计。该类构建在执行信息状态列中,功能是在对象中命令执行动作状况。动作定义在CommandListener,并且结合显示状态,主要提供接口与使用者交互模式。

设计举例:

private Command ok1 = new Command("确定", Command.OK, 1);

使用优先级作为希望的命令显示顺序的标识。一般数字越小,在列表中的级别就越高。

4.2 走棋算法

对于五子棋游戏,主要就是判断棋盘上是否存在五子连珠情况。判断五子连珠的原理是从横,竖,左斜线,右斜线4条线上是否存在5个相连的同类棋子。

对战一方落子后,在该处向8个方向检测连续的同类棋子,如果检测到直线方向上存在5个连续的同类棋子,则判断为“连五”并结束检测。基于检测结果,可以判断游戏是否结束,并根据获胜方的落子代码判断获胜方是谁。

4.3 胜负判断

为检测当前棋局是否已经有一方获胜,从横向、纵向、左斜、右斜四种情况考虑。首先,获取当前下棋点(x,y)和棋子的颜色,接着计算连续的相同颜色的棋子;有连续5个相同的棋子则return true;给出本次棋局结果。

对战一方落子后,在该处向8个方向检测连续的同类棋子,如果检测到直线方向上存在5个连续的同类棋子,则判断为“连五”并结束检测。基于检测结果,可以判断游戏是否结束,并根据获胜方的落子代码判断获胜方是谁。

5 系统测试

5.1 测试方案

程序测试是程序编码完成后必须的一步,通过测试,检查代码的正确性,了解功能的实现性,可以达到发现问题,改进功能,让程序更完善更健壮。没有经过测试的软件是无法大量投入使用的,因为它无法保证可以在用户端健壮地运行。测试通常分为两大类:白盒测试和黑盒测试。“白盒测试”指的是测试者清楚待测对象内部工作机制的测试;“黑盒测试”指的是测试者无需了解测试对象内部工作机制的测试。

因为并不是所有的用户都能知道系统的结构和处算法,所以,从用户的角度出发,采用黑盒测试法对系统进行功能测试。

5.2 测试结果

a)运行程序,出现欢迎界面,如图5-1所示:

5-1

b)点击“确定”进入游戏说明界面,可点击“返回”回到欢迎界面,如图5-2所示:

5-2

c)点击“开始游戏”进入棋盘界面,默认玩家先行,为黑子,如图5-3所示

5-3

d)对弈棋盘如图5-4所示,假设走棋结果人获胜。

5-4

e)假设走棋结果电脑获胜,结果如图5-5所示。

5-5

6总结

整个设计基本完成,由于能力和时间的关系,总是有很多不尽人意的地方,譬如功能较少、外观较粗糙等。通过这个程序设计,我深刻体会到即使是对于一个并不大的程序,代码的组织都是非常重要的,因为这关系到日后的维护以及扩展。

刚开始决定编写五子棋游戏时,我觉得难度比较大。后来通过网络寻找相关的视频学习相关知识,并查找,一点点进行下去。同时,因为该程序的设计侧重于算法部分,对弈算法的设计,对于我而言很难,通过网络资源,我了解到,不少参考资料上已提供了各种精良可用的现成算法,我可以先学习这些已经设计好的算法,选择合适的方式组织代码。

整个设计过程中,我受益非浅,感受颇深,体会到软件开发并不是纯数学,

更侧重于分析。虽然设计结果并不是很完善,有很多地方还有待进一步改进,但是我觉得最可贵的是过程中的收获。在以后的时间里,我仍将努力学习,深入实践,不断提升自我,努力实现更高的自我价值。

参考文献

[1] 赫玉龙,李向前.J2ME移动应用开发[M].北京:清华大学出版社,2006.9.

[2] 李振鹏,龚剑.J2ME手机游戏开发技术详解[M].北京:清华大学出版社,2006.3.

[3] 王森.Java手机/PDA程序设计入门[M].北京:电子工业出版社,2004.3.

[5] 欧阳泉,许向阳.J2ME平台结构及开发应用[J].计算机与数字工程,2006,(03):112-113.

[6] 刘洁,段晓勇.基于J2ME的Java手机应用程序的开发[J].科技广场,2007,(01):66-68.

[7] 李观华,范辉.J2ME在移动通信程序中的应用[J].计算机应用,2003,(03):124-126.

[8]https://www.360docs.net/doc/4010622455.html,/Index.asp

源代码:

Midlet1.java

import javax.microedition.lcdui.*;

import javax.microedition.midlet.*;

public class Midlet1 extends MIDlet implements CommandListener {

public Display display;

private Canvas1 lc = new Canvas1();

//欢迎界面

private Form W;//新建一个form对象

private Command ok1;

private Command exit;

private Image welcomeimg;

//说明界面

private Form E;

private Command ok2;

private Command back;

private Image helpimg;

public Midlet1()

{

lc.setParam(); //初始化数组

display = Display.getDisplay(this); //通过display的

静态方法getdisplay()来获得当前设备的display对象

}

public void commandAction(Command c,Displayable s)

{

if (c ==exit)

{

this.notifyDestroyed();

}

if (c == ok1)

{

display.setCurrent(E);//调用setcurrent()方法将display对象绑定到显示设备

}

if (c == back)

{

display.setCurrent(W);

}

if (c == ok2)

{

display.setCurrent(lc);

}

}

public void startApp()

{

//欢迎界面

W= new Form("欢迎您进入五子棋游戏^_^");

display.setCurrent(W);//调用setcurrent方法将display

对象绑定到显示设备

ok1 = new Command("确定",Command.OK,1);

exit = new Command("退出",Command.EXIT,1);

W.addCommand(exit); //调用addCommand方法将Command对

象添加到GUI显示组件

W.addCommand(ok1);

try{

welcomeimg = Image.createImage("/welcome.png");

W.append(welcomeimg);

}catch (Exception e){}

//游戏说明界面

E= new Form("五子棋游戏说明");

ok2= new Command("开始游戏",Command.OK,1);

back= new Command("返回",Command.BACK,1);

E.addCommand(ok2);

E.addCommand(back);

try{

helpimg = Image.createImage("/help.png");

E.append(helpimg); //添加图层

}catch (Exception e){}

//设置命令监听者

W.setCommandListener(this);

E.setCommandListener(this);

}

public void pauseApp()

{

}

public void destroyApp(boolean unconditional)

{

}

}

Canvas1.java

import javax.microedition.lcdui.*;

import java.util.*;

public class Canvas1 extends Canvas implements CommandListener {

Graphics gg;

Random rnd = new Random(); // 构造一个随机数生成器

int lineNumber=15;

int gridWidth=10; //格子的宽度

int gridHeight=10; //格子的高度

int lineColor = 0x006699; //棋盘格子线的颜色

int focusColor = 0x00ff00; //焦点的颜色

int intRunMode = 0; //0-等待初始态,1-下棋,2-等待用户响应

int intPlayer =0; //0-黑棋(先下者),1-白棋(后下者)

int gotoValue;

int[] qipan;

//使用一个二维数组记录棋盘棋子的分布//检查后,如果不存在五子,则全为0,如果存在,则依次是五个子的位置

int[] wuzi = new int[5];

int[][] q;

int[][] m;

//int[] g={1,16,15,17}; //这个

int[] g= new int[4];

int baseX=10; //棋盘左上角X

int baseY=10; //棋盘左上角Y

int currentX; //当前所在区域的左上角X

int currentY; //当前所在区域的左上角Y

int currentA; //当前是第几个竖线

int currentB; //当前是第几个横线

int LastA; //最后一个子位于第几根竖线

int LastB; //最后一个子位于第几根横线

boolean loadedMenu = false;

Command cmdRestart = new Command("重新开始", Command.SCREEN, 1);

//设置一些棋盘参数

public void setParam() {

qipan = new int[lineNumber * lineNumber];

q = new int[3][lineNumber * lineNumber];

m = new int[3][lineNumber * lineNumber];

g[0] = 1;

g[1] = lineNumber ;

g[2] = lineNumber - 1;

g[3] = lineNumber + 1;

}

public void paint(Graphics g) {

addCommand(cmdRestart);

setCommandListener(this);

gg=g;

if (intRunMode == 0) {

buildChessboard();

}

}

//事件处理函数

public void commandAction(Command c, Displayable d) {

if (c == cmdRestart)

{

intRunMode = 0;

repaint();

}

}

/**

* 开始游戏时所做的一些工作

* 比如画棋盘,初始化一些参数、数组,并设置最开始时的焦点位置

*/

public void buildChessboard() {

try {

//初始化数组

for (int i = 0; i < lineNumber * lineNumber; i++) { qipan[i] = 0;

}

for (int i = 0; i < 5; i++)

wuzi[i] = 0;

gg.setColor(0x006699cc);

gg.fillRect(0, 0, getWidth(), getHeight());

for (int i = 1; i < lineNumber + 1; i++) {

gg.setColor(lineColor);

gg.drawLine(gridWidth, i * gridHeight, gridWidth * lineNumber + 1, i * gridHeight);

gg.drawLine(i * gridWidth, gridHeight, i * gridWidth,lineNumber * gridHeight + 1);

}

//初始时在中间

currentX = baseX + gridWidth * (lineNumber - 1) / 2 - gridWidth / 2;

currentY = baseY + gridHeight * (lineNumber - 1) / 2 - gridHeight / 2;

currentA = 8;

currentB = 8;

intRunMode = 1;

intPlayer = 0;

moveFoucs(currentX - gridWidth / 2, currentY - gridHeight / 2 - 1,gridWidth * 3, gridHeight * 2);

}

catch (Exception e) {

System.out.println("buildChessboard Error:" + e);

}

}

//移动焦点,需要对六个格子大的范围进行重画

//(可以优化为两个格子重画内容包括六个棋盘格子,十二个可能存在的棋子,以及一个焦点

public void moveFoucs(int x, int y, int width, int height) {

try {

gg.setColor(0x006699cc);

gg.fillRect(x, y, width, height);

//这六个格子可能是横着的,也可能是竖的,其中有四个格子的位置是不变的

mydrawRect(x, y, gridWidth, gridHeight);

mydrawRect(x, y + gridHeight, gridWidth, gridHeight);

mydrawRect(x + gridWidth, y, gridWidth, gridHeight);

mydrawRect(x + gridWidth, y + gridHeight, gridWidth, gridHeight);

if (width > height) {

mydrawRect(x + gridWidth * 2, y, gridWidth, gridHeight);

mydrawRect(x + gridWidth * 2, y + gridHeight, gridWidth, gridHeight);

//最右边的竖线

DrawChessman(x + gridWidth * 3, y);

DrawChessman(x + gridWidth * 3, y + gridHeight);

DrawChessman(x + gridWidth * 3, y + gridHeight * 2);

//最下面的横线

DrawChessman(x, y + gridHeight * 2);

DrawChessman(x + gridWidth, y + gridHeight * 2);

DrawChessman(x + gridWidth * 2, y + gridHeight * 2);

}

else {

mydrawRect(x, y + gridHeight * 2, gridWidth, gridHeight);

mydrawRect(x + gridWidth, y + gridHeight * 2, gridWidth, gridHeight);

//最右边的竖线

DrawChessman(x + gridWidth * 2, y);

DrawChessman(x + gridWidth * 2, y + gridHeight);

DrawChessman(x + gridWidth * 2, y + gridHeight * 2);

DrawChessman(x + gridWidth * 2, y + gridHeight * 3);

//最下面的横线

DrawChessman(x, y + gridHeight * 3);

DrawChessman(x + gridWidth, y + gridHeight * 3);

}

//画光标

gg.setColor(focusColor);

gg.drawLine(currentX, currentY,currentX + gridWidth /5, currentY);

gg.drawLine(currentX, currentY, currentX,currentY + gridHeight /5);

gg.drawLine(currentX

+gridWidth*4/5,currentY,currentX + gridWidth, currentY);

gg.drawLine(currentX + gridWidth, currentY, currentX + gridWidth,currentY + gridHeight /5);

gg.drawLine(currentX,currentY + gridHeight * 4/ 5,currentX, currentY + gridHeight);

gg.drawLine(currentX,currentY + gridHeight,currentX + gridWidth / 5,currentY + gridHeight);

五子棋Java实验报告

五子棋JAVA实验报告 目录 五子棋JA V A实验报告 (1) 一、实验目的和要求 (2) 二、五子棋的基本常识与原理 (2) 三、五子棋的系统设计 (3) 四、五子棋的实现与测试 (7) 五、分析与总结 (10) 六、附录 (12)

一、实验目的和要求 1、能够用编程语言实现一个简单的五子棋程序 2、在实际系统中使用、实现人工智能的相关算法 3、进一步加深对人工智能算法的理解 二、五子棋的基本常识与原理 1、五子棋的起源 五子棋,是一种两人对弈的纯策略型棋类游戏,亦称“串珠”、“连五子”;是中国民间非常熟知的一个古老棋种。相传,它起源于四千多年前的尧帝时期,比围棋的历史还要悠久。亦有传说,五子棋最初流行于少数民族地区,以后渐渐演变成围棋并在炎黄子孙后代中遍及开来。 五子棋发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。 传统五子棋的棋具与围棋相同,棋子分为黑白两色,棋盘为19X19,棋子放置于棋盘线交叉点上。两人对局,各执一色,轮流下一子,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。因为传统五子棋在落子后不能移动或拿掉,所以也可以用纸和笔来进行游戏。 2、五子棋的基本常识 与任何一种竞技棋一样,五子棋的每一局棋也分为三个阶段:开局,中局和残局。 五子棋的开始阶段称为开局,或称布局。其开局阶段是十分短暂的,大约在七着与十几着之间。在这一阶段的争夺中,双方的布局,应对将对以后的胜负起着极为关键的作用。在开局阶段取得的形势好坏,主动与被动,先手与后手的优劣程度,往往直接影响中局的战斗。因此积极处理好开局和开局向中局的过渡十分重要。 五子棋是从一至五,逐渐布子,发展连系,同时运用限制和反限制的智慧,在连子的过程中为自己的棋子争得相对的主动权和优势,逐步扩展优势,或者从劣势转化为优势,击溃对方的防线,最后连五取胜或抓禁手取胜或迫使对方投子认负。 3、五子棋比赛的相关规定 (1) 职业连珠规则 a. 黑方先下子,白后下,从天元开始相互顺序落子。 b. 最先在棋盘横向、竖向、斜向形成连续的相同色五个棋子的一方为胜。 c. 黑棋禁手判负,白棋无禁手。黑棋禁手包括“三三”(包括“四三三”)、“四四”(包括“四四三”)、

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

五子棋课程设计实验报告

西南交通大学 程序语言综合课程设计 五子棋游戏 课程《程序语言综合课程设计》 学院信息科学与技术学 专业软件工程 姓名 学号 20119050 日期 2016年月日

目录 第一章课程设计的目的和要求 (3) 1.1 课程设计的目的 (3) 1.2 课程设计的要求 (3) 1.3 课程设计的实验环境 (3) 第二章功能描述 (4) 第三章总体设计 (5) 3.1 功能模块设计 (5) 3.1.1 任务执行流程图 (5) 3.1.2 下棋函数流程图 (6) 3.2 数据结构设计 (7) 3.2.1 定义结构体 (7) 3.2.2 定义数组 (7) 3.2.3 全局变量 (7) 3.3 函数功能描述 (7) 第四章程序实现 (8) 4.1源码分析 (8) 4.2运行结果及界面介绍 (25) 第五章后记 (30)

第一章课程设计的目的和要求 1.1 课程设计的目的 1.加深对C语言数据类型,运算,语句结构及其程序设计的基本方法理解和掌握; 2.熟练掌握流程图的绘制、程序设计文档的书写; 3.通过编写一个完整的程序,一方面可以检查我们这学期的学习情况,为以后的学习打下坚实的基础; 4.熟悉C语言游戏编程,掌握五子棋游戏开发的基本原理,从而为以后的程序开发奠定基础。 1.2 课程设计的要求 1、编写程序代码,调试所写程序使其能够正确运行; 2、能进行基本的五子棋操作,有图形界面,能够用键盘操作; 3、能够实现悔棋、存档和读档等附加功能 1.3 课程设计的实验环境 该课程设计在设计与实验过程中需要在windows XP系统/windows 2000以上系统中进行,程序设计要求在visual C++6.0平台中进行,完成代码的编写、编译、调试、测试等工作。本游戏对计算机硬件和操作系统要求极低,所以在这里只是把自己的电脑硬件参数和系统参数列下: 硬件:Cpu:2.1GHZ,内存,2GB,硬盘:320GB,操作系统:windows xp 软件环境:安装VC++6.0

五子棋游戏实验报告

五子棋游戏实验报告 课程名称计算机程序设计(VB) 学号______________________ 姓名______________________ 班级______________________ 提交时间 五子棋软件设计 一、实验目的 1?通过五子棋软件设计或者自拟题目设计,巩固本课程所学的各个章节重点知识,自拟题目的同学需尽早向教师提岀自己的想法及设计方案。 2?通过开发一个较大的系统,增强软件开发能力。 3?通过调试系统,增强逻辑思维能力。 二、实验内容 1.基本要求: (1)输入两个对手名字,然后进入游戏界面。 (2)用鼠标点击的方式在棋盘上摆放棋子,黑白交替。(棋盘15*15 ) (3)可以悔棋。 (4)五子连在一起的时候能判断胜利,并且显示出胜利者的名字。 (5)能够将棋局的结果保存,保存该棋局

结束的状态、对手名字、棋局名字(棋局名字在保存时由用户在相应的界面下添入)(此功能要求用数据库和文件两种技术实现)。

因为棋盘上空点居多,大部分点的信息为0,因此只需保存有棋子的点的信息 用文件技术进行棋局保存,思路相同。 (7)五子棋恢复棋局 思路:首先从数据库文件中找到要恢复棋局的数据(即曾经保存的数据),然后把这些数据赋值给内存中相应的数组或者变量中,按照这些数据重新绘制棋盘和棋子,即完成了对棋局的恢复。 窗体启动事件应该完成的事情: 组合框中应该显示曾经保存的棋局名。因为每次保存棋局时,都是将棋局所有棋子的记录添加在表的最 后,因此表中关于棋局名的记录只能是类似于aaabbbbccccc的形式,而不可能是abbcacc的形式,根据 这个特点编程序取出表中不同的棋局名。 具体算法: 用一个字符串变量strfile初始值为空,从表的顶端向下依次移动记录指针,如果当前记录的棋局名字段和strfile不相等,说明进入另一个棋局的记录中,将该棋局记录的棋局名赋值给strfile,并加入到组合 框中,一直到表中最后一个记录 因为要从数据库中取岀相关数据到a数组中,因此要将a数组所有数据清零。 要建立一个data控件,与数据库连接起来,而后识别棋局(即表中的棋局名字段与在列表框中选择的棋 局名比较),将数据库该棋局中所有信息都赋值给a数组及相关变量。 刚才仅仅是数据的恢复,即将数据库中已经保存过的数据恢复到内存中,下一步应该根据内存中的数据重新绘制棋盘以及棋子。 重新绘制棋盘是独立的一块功能,因此考虑用全局子过程来实现,该子过程定义在模块中。思路如下: 清屏一绘制棋盘一根据a数组中的每一项的两个下标来决定绘制棋子的位置,根据每一项的值是1还是 2来决定在该位置绘制何颜色的棋子。 决定该黑白方走的blackwhite变量当时没有保存,可以采用在数据库中保存的方式来解决,本例中解决方法是通过数黑白棋子个数来决定恢复棋局后该谁走的。 因此设置了一个变量做计数器,每走一步棋计数器的值加一。 用文件技术实现棋局恢复,思路相同。 (8)悔棋 悔一步棋:用几个变量来表示关于一步棋的几个信息,每次下子都将该子的信息赋值给那几个变量,悔 一步棋即将那几个变量所表示的点的a数组信息清零。而后调用paint ()过程重画。 以上是教师带着学生完成的软件功能。 遗留问题:保存棋手姓名和棋局名并在恢复棋局的时候显示。(需要同学们自己完成)思路:在数据表中多建立两个字段,分别表示两个棋手姓名,同其它数据的保存类似。 三、设计日期 十二月 四、完成日期 十二月 五、实验体会 其实,一开始学习vb我就对它不抱有一定的热情,可能是因为要用到计算机以及编程问题,当时一想到有代码,就会无比的苦恼,但是为了让这门课顺利通过,我还是怀着一颗必须要学的心情。起初,我对待这门新课程和其他课

五子棋游戏代码(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); }

五子棋C++实验报告

(此文档为word格式,下载后您可任意编辑修改!)

一、需求分析 1.1开发背景 电脑游戏行业经过二十年的发展,已经成为与影视、音乐等并驾齐驱的全球最重要的娱乐产业之一,其年销售额超过好莱坞的全年收入。互联网的出现为电脑游戏行业发展注入了新的活力,凭借信息双向交流、速度快、不受空间限制等优势,让真人参与游戏,提高了游戏的互动性、仿真性和竞技性,使玩家在虚拟世界里可以发挥现实世界无法展现的潜能,改变了单机版游戏固定、呆板、与机器对话的状况。网络游戏的这些优势不仅使其在电脑游戏行业中异军突起并在某种程度上取代了单机版游戏,而且成为网络业三大(网上金融、网上教育和网络游戏)赢利且利润优厚的领域之一。 网络作为一种新兴的传播方式,主要包括三大内容:娱乐、资讯、通讯。提到网络娱乐,过去主要指的是单机版游戏,没有引入网络的概念但随着科技的发展,游戏娱乐产业也在成长目前,国内的游戏娱乐产业正处于起步阶段,特点表现为:第一,它是一种文化的传播。娱乐产业可以潜移默化地改变人的观念,当前,很多多媒体的播放已被电脑网络所取代。第二,网络游戏加强了人与人的沟通。第三,网络游戏具有一定的教育意义。网络游戏所具有的角色扮演的功能,使得玩家能通过互助更好地完成游戏中的各项任务。网络无国界,游戏在网络文化产业世界的发展中地位会越来越高。 目前在国外,休闲游戏如棋类等,玩家的年龄跨度非常大,这和我国目前网游市场以青少年为主要消费人群的状况截然不同。其实,网络可以解决空间的问题,网络和生活越来越息息相关,因此,开辟适合各个年龄层的游戏产品迫在眉睫。同时,这也涉及到一个企业开发的能力。娱乐产业发展到一定程度,通过不断锻炼和经验的积累,完全可以通过融入娱乐的成分把教条的东西深入浅出地展现给消费者。 就国内的发展来看,最近這两三年内国内的游戏公司如雨后春笋般的成立,所开发或代理的网络游戏更是不胜枚举。以全球游戏业界的发展来看,這几年韩国的表现最为突出,特別是在网络游戏的技术研发兴游戏制作,其所发行的网络游戏更成为全球游戏产业重要的指标之一。去年在美国洛杉矶所举行的 E3(Electronic Entertainment Exposition)展中,已经有几家的韩国厂商挤入世界第一线的游戏开发厂商之列。 近几年来,由于 3D 硬体绘图技术的突破,使得即时描绘的书面越来越精致,而且3D遊戏性更多元化更逼近真实世界,因此在遊戏产业中,3D 游戏已经逐渐取代2D游戏为游戏市场的主流,即使是网络游戏,也慢慢趋向3D化。然而游戏3D化将会带来的游戏开发上的困难等问题,这些问题以后都需要逐步解决。 人们面对电脑的时间越来越多,面对身边的人的时间越来越少,所以我们游戏所要达到的目的就是加大人们之间的沟通,让大家随时随地都可以体验到玩游戏的乐趣。而三子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。同样的,通过这个游戏,既能在休闲时刻娱乐一下,也能在压力面临的时候放松一刻。

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

五子棋系统实验报告

湖南工业大学 课程设计任务书 2015—2016学年第2 学期 计算机与通信学院(系、部)计算机科学与技术专业计算机1502班级课程名称:面向对象程序设计 设计题目:五子棋 完成期限:自2016年6月13日至2016年6月19日共1周

指导教师(签字):年月日 系(教研室)主任(签字):年月日

面向对象程序设计课程设计 设计说明书 五子棋 起止日期: 2016年6月13日至 2016年6月18日 学生姓名王回 班级计算机1502学号15408100209成绩 指导教师(签字) 计算机与通信学院 2016年 6 月 18日

五子棋 一、课题的介绍和课题的任务 设计的课题名称:五子棋 实现以下功能: 功能1、模拟真实棋盘棋子 功能2、模拟人与人对战下棋 功能3、模拟实时胜负判断 功能4、模拟棋局的存储与读取 二、设计的要求 具有动画功能(即图像能即时移动),能实现人与人进行简单的对玩,能实现简单的胜负判断 三、系统的分析和系统中类的设计 CWZQApp类作用:初始化应用程序及运行该程序的所需要的成员函数CWZQDoc类作用:存放应用程序的数据以及实现文件的保存,加载功能 CMainFrame类作用:管理应用程序的窗口,显示标题栏,状态栏,工具栏等,同时处理针对窗口操作的信息 CAboutDlg类作用:向导自动生成对话框类 CWZQView类作用:管理视图窗口,在框架窗口中实现用户数据的显示和打印,存放添加的功能模块

CWZQView类中的成员函数与数据成员: void Save(); //**** //保存文件 void OnOpen() //打开文件 void over(CPoint point);//**** //检查是否结束voidOnDraw(CDC* pDC) //画棋盘函数 void OnLButtonUp(UINT nFlags, CPoint point)//模拟下棋函数 HCURSOR hcursorwhite; //**** //两个鼠标 HCURSOR hcursorblack; //**** intwzq[19][19]; //**** //棋盘数组 boolcolorwhite; //**** // colorwhite TRUE时白棋下, 否则黑棋下 CBitmapm_bmblack; //**** //棋子位图 CBitmapm_bmwhite; //**** void CWZQView::OnDraw(CDC* pDC) //构造棋盘,显示白棋以及黑棋 GetDocument() //获取文档指针,在视图中显示文档内容 CBrush //用于构造CBrush对象,然后传给需要画 刷的CDC成员函数 pDC->FillRect(myrect1,&mybrush1) // 画黑框线 四、系统的实现及调试 添加的功能: 1.图标,光标以及位图的绘制 程序运行开始鼠标在进入棋盘界面未放下棋子时变为类似棋子光标,此处需要描绘2种棋子光标: 黑白鼠标Cursor以替换当前鼠标: IDC_CURSOR1 黑棋子 IDC_CURSOR2 白棋子 说明: 由于下棋时我们必须把鼠标热点设置在中间,点击下图(图3-1-3)最右边按扭,然后把鼠标移动到图像中你想设置为热点的地方,按下鼠标左键。

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

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

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课程设计

《面向对象程序设计》 课程设计报告 实验时间: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

五子棋课程设计实验报告

C语言程序设计报告 题目: 五子棋 班级: 电气Q1041班 人数: 3人 小组成员: 周啸天、万广富、黄山奇

指导老师:桂超 时间: 2011.11.30

目录 第一章课程设计的目的和要求 (3) 1.1 课程设计的目的 (3) 1.2 课程设计的要求 (3) 1.3 课程设计的实验环境 (3) 第二章功能描述 (4) 第三章总体设计 (5) 3.1 功能模块设计 (5) 3.1.1 任务执行流程图 (5) 3.1.2 下棋函数流程图 (6) 3.2 数据结构设计 (7) 3.2.1 定义结构体 (7) 3.2.2 定义数组 (7) 3.2.3 全局变量 (7) 3.3 函数功能描述 (7) 第四章程序实现 (8) 4.1源码分析 (8) 4.2运行结果及界面介绍 (22) 第五章后记 (27)

第一章课程设计的目的和要求 1.1 课程设计的目的 1.加深对C语言数据类型,运算,语句结构及其程序设计的基本方法理解和掌握; 2.熟练掌握流程图的绘制、程序设计文档的书写; 3.通过编写一个完整的程序,一方面可以检查我们这学期的学习情况,为以后的学习打下坚实的基础; 4.熟悉C语言游戏编程,掌握五子棋游戏开发的基本原理,从而为以后的程序开发奠定基础。 1.2 课程设计的要求 1、编写程序代码,调试所写程序使其能够正确运行; 2、能进行基本的五子棋操作,有图形界面,能够用键盘操作; 3、能够实现悔棋、存档和读档等附加功能 1.3 课程设计的实验环境 该课程设计在设计与实验过程中需要在windows XP系统/windows 2000以上系统中进行,程序设计要求在visual C++6.0平台中进行,完成代码的编写、编译、调试、测试等工作。本游戏对计算机硬件和操作系统要求极低,所以在这里只是把自己的电脑硬件参数和系统参数列下: 硬件:Cpu:2.1GHZ,内存,2GB,硬盘:320GB,操作系统:windows xp 软件环境:安装VC++6.0

基于Java的五子棋小游戏论文

信息计算软件设计 基于JA V A 题目 的五子棋游戏设计

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

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

相关文档
最新文档