论文模板.docx
- 文档编号:10191042
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:23
- 大小:107.33KB
论文模板.docx
《论文模板.docx》由会员分享,可在线阅读,更多相关《论文模板.docx(23页珍藏版)》请在冰豆网上搜索。
论文模板
毕业论文(设计)
论文(设计)题目:
系别:
专业:
学号:
姓名:
指导教师:
时间:
河池学院
毕业论文(设计)开题报告
系别:
专业:
学号
姓名
论文(设计)题目
基于J2ME的手机游戏六子炮棋的设计
命题来源
教师命题□学生自主命题□教师课题
选题意义(不少于300字):
当前,手机和网络已走进千家万户,网络游戏产业的日益发展。
而网络游最大的缺点便是依赖于PC机,并不具备便携性。
手机游戏正好与之互补,因此,手机游戏将与网络游戏长期共存。
而随着3G移动手机的推出,将会给手机游戏注入新的活力。
六子炮棋是广西壮族自治区非常流行的一种棋类游戏,其特点是游戏简单而富于智慧,乐趣,道具用石子、小木棒等均可。
娱乐的同时也起到开发智力的作用,因此,此游戏大广西地区非常受欢迎,但受地域影响中国其它地区,对此游戏的了解却知之甚少,因此开发此游戏,能利用普及率极高的手机平台作媒介,推广此游戏,让更多的人了解此富于智慧的游戏。
同时也为保留这一广西民间智慧财富起到一定作用。
研究综述(前人的研究现状及进展情况,不少于600字):
J2ME(Java2MicroEdition)是Java2的一个组成部分,它与J2SE、J2EE并称,J2ME是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话和可视电话、数字机顶盒、汽车导航系统等等。
Java手机游戏的推出和推广,推动了J2ME手机游戏市场的发展,目前真正由国内自行研发的手机游戏还不多,并且形式上、技术上还有很大的提高空间。
目前,基于J2me技术开发的手机游戏已经不少,比如疯狂扫雷,手机象棋,异度风暴等等。
因此从事J2me技术的手机游戏前景是非常不错,设计一个基于J2me技术的手机游戏也是非常现实的。
六子炮棋规则简单,以9宫格的16个交点走子路线,对战时双方各持6子,如果本方两子(只有两子)形成一条直线,并且对方只有一子正对直线一端,刚可吃掉该子,如果其中一方只剩下一子而无法形成“炮口”,则视为负。
走子只能以9宫格直线一次走一格,不能跳格或走对角。
此棋源于于射击三一点线原理。
因此得名六子炮棋,也叫炮棋。
目前,尚未找此游戏的电子产品,因此开发此游戏具有极大的挑战性。
就目当而言,J2MEMIDP2.0技术已经推出,但因为各种原因,J2MEMIDP2.0技术尚未普及,更多的java手机只J2MEMIDP1.0技术,因此本游戏选用J2MEMIDP1.0技术,当能J2MEMIDP2.0手机也能够兼容。
同时不涉及手机开发商专用类库,屏幕自适应手机屏幕,因此适用于所有支持java的手机机型。
为得到更大的手机机型的支持,本游戏暂时不支持触屏。
研究的目标和主要内容(不少于400字)
一款基于支持java手机的广西壮族自治区民间传统游戏,没计包括主界面,游戏界面,帮助,作者介绍等。
此游戏能够把此民间智慧完整的在现于手机平台。
本系统的主要内容有:
(1)菜单选择界面,提供用户选择具体功能的界面,也决定游戏美术风格。
(2)游戏主界面,游戏的操作界面。
(3)帮助界面,此游戏的操作说明及规则说明。
(4)设置界面,用户可以选择开启声音、震动与否。
(5)水平榜,根据用户胜负做出一个等级差别。
(6)作者介绍,关于本游戏版权等信息。
本系统的一些具体要求有:
(1)对于用户的一些可能出现的错误操作用出预测,并输出错误信息。
(2)功能完善、无误、可靠、稳定。
(3)提供系统使用帮助,便于新用户能及时快速的上手使用。
(4)游戏程序容易维护,方便添加功能模块。
(5)操作方便、简单,界面美观、友好。
(6)开发周期应以一般系统开发时间相差不多,以五周为限。
(7)程序输写注解,以便维护和修改。
拟采用的研究方法
(1)查找并阅读相关资料,解决技术难题,利用流程图,对游戏全程初步分析。
(2)安装开发过程中所用到的所有相关软件,并熟悉相关操作。
(3)根据手上资料,对游戏的各种方法进行分析,建模,设计。
(4)用记事本编写程序,并用WirelessToolkit2.5测试。
研究工作的进度安排
(1)2010年1月10日-2010年1月12日 与指导老师沟通,完成毕业论文选题。
(2)2010年1月16日-2010年1月18日,收集整理资料,完成文献综述和开题报告,论文(设计)提纲。
(3)2010年2月1日-2010年2月3日,游戏规化,系统分析并完成流程图。
(4)2010年2月4日-2010年2月7日,书写地图数组。
(5)2010年2月8日-2010年2月13日,界面平面美工设计。
(6)2010年2月20日-2010年2月27日,完成初步程序编写。
(7)2010年2月28日-2010年3月10日,完成游戏模拟测试和手机测试。
(8)2010年2月11日-2010年3月20日,完成设计(论文)撰写、装订。
(9)2010年5月-2010年6月1日,论文答辩。
参考文献目录(作者、书名或论文题目、出版社或刊号、出版年月日或出版期号)
[1]王森.Java手机程序设计入门与应用[M].北京:
中国铁道出版社,2003
[2]李振鹏.J2ME手机游戏开发技术详解[M].北京:
清华大学出版社,2006
[3]王珊.数据库系统概论第四版[M].北京:
高等教育出版社,2006
[4]陈雄.实用软件工程都教程[M].北京:
机械工业出版社,2009
[5]美艾斯曼.PHOTOSHOP设计师圣经高级蒙版与图像合成技法[M].北京:
清华大学出版社,2005
[6]郑人杰,殷人昆,陶永雷.实用软件工程[M].北京:
清华大学出版社,1997.4
[7]沈大海,张涛.J2me手机游戏开发技术与项目实战详解[M].北京:
人民邮电出版社,2008
指导教师意见
该生的选题拟采用J2ME开发手机游戏六子炮棋,技术上比较新颖,难度适中,也有实用价值,工作量符合要求,同意开题。
签名:
年月日
教研室主任意见
同意指导老师的意见,同意开题。
签名:
年月日
目录
摘要1
关键词1
1绪论1
1.1课题的提出1
1.2课题的目的与意义2
1.3开发工具的选择2
2游戏分析与总体设计3
2.1游戏分析3
2.2游戏目标3
2.3总体需求4
2.4游戏模块流程图4
3详细设计5
3.1MIDlet框架5
3.2Canvas框架7
3.2.4判断是否可以走棋的算法11
3.2.5按键处理13
4游戏运行及维护14
4.1模拟测试14
4.2手机测试15
4.3程序维护15
5小结14
参考文献14
Abstract14
Keywords15
致谢15
基于J2ME的手机游戏六子炮棋的设计
[摘要]随着移动通信技术的迅速发展,彩屏手机的日益普及,以及3G时代的到来,依托手机为平台的手机游戏,将会以其便携、休闲等优点走进更多人的生活当中,并展示出广阔的市场前景。
而使用Java2MicroEdition语言制作的手机游戏,有着许多优势。
如跨平台性,可移植性好等。
它将在手机游戏中有很高地位和巨大的市场份额,前景乐观。
六子炮棋因其简单、随地可玩等优点深受人民的喜爱,并广为流传。
为了推广此游戏,本文拟用J2me(Java2MicroEdition)语言MIDP1.0技术、notepad++、依托手机平台,策划并编写程序,完成了这一游戏的制作。
此游戏界面美观、大方功能完善,不仅有游戏说明、游戏帮助、游戏规则介绍等,更具不同风格、不同引擎深度供你选择。
[关键词]六子炮棋;J2ME;Java;MIDP1.0
1绪论
1.1课题的提出
六子炮棋深受人们喜爱。
其特点是游戏简单而富于智慧,乐趣。
道具用石子、小木棒等均可,随地可玩。
娱乐放松的同时也可开发智力,陶冶心性。
因此游戏大广西地区非常受欢迎,但受地域影响,中国其它地区,对此游戏的了解却知之甚少。
因此开发此游戏,能利用普及率极高的手机平台做媒介,推广此游戏,让更多的人了解此富于智慧的游戏。
手机和网络已走进千家万户,网络游戏产业虽然蓬勃发展。
而网络游戏最大的缺点便是依赖于PC机,并不具备便携性,手机游戏正好与之互补。
因此,手机游戏将与网络游戏长期共存。
而随着3G移动手机的推出,将会给手机游戏注入新的活力。
而使用Java2MicroEdition语言制作的手机游戏,有着许多优势。
如跨平台性,可移植性好等。
它将在手机游戏中有很高地位和广阔的市场份额,前景乐观。
我拟用J2me(Java2MicroEdition)语言MIDP1.0技术、Notepad编辑、依托手机平台制作此游戏。
1.2课题的目的与意义
制作J2ME手机游戏六子炮棋主要目地是利用手机平台再现这一民间版图游戏,使这一民间智慧得到推广和传承。
此游戏要达到界面美观、大方,友好、大气,操作方便。
功能完善、无误、可靠、稳定。
虽然J2MEMIDP2.0技术早已推出,但因为各种原因,J2MEMIDP2.0技术尚未普及,更多的java手机只支持J2MEMIDP1.0技术,因此本游戏选用J2MEMIDP1.0技术,当然J2MEMIDP2.0手机也能够兼容。
同时不涉及手机开发商专用类库,屏幕自适应手机屏幕,因此适用于所有支持java的手机机型。
此外,本游戏暂时不支持触屏。
1.3开发工具的选择
根据上述特点和要求,此游戏将使用J2me(Java2MicroEdition)语言,MIDP1.0技术设计。
开发坏境是Notepad++。
1.3.1J2ME(Java2MicroEdition)的特点
J2ME是一种高度优化的Java运行环境,主要针对消费类电子设备而设计,例如蜂窝电话和可视电话、移动手机、数字机顶盒、汽车导航系统等等。
J2ME技术在1999年的JavaOneDeveloperConference大会上正式推出,它将Java语言的跨平台性的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。
J2ME(Java2MicroEdition)是Java2的一个组成部分,其实在这里大家可以把Configuration当作是J2ME对于两种类型嵌入式装置的规格。
而这些规格之中定义了这些装置至少要符合的运算能力、供电能力、记忆体大小等规范。
同时也定了一组在这些装置上执行的Java程序所能使用的类别函数库,这些规范之中所定义的类别函数库为Java标准核心类别函数库的子集合以及与该型态装置特性相符的扩充类别函数库。
就拿CLDC的规范来说,可以支援的核心类别函数库为java.lang.*、java.io.*、java.util.*,而支援的扩充类别函式库为java.microedition.io.*。
区分出两种主要的Configuration之后,J2ME接著在定义出Profile的概念。
Profile是架构在Configuration之上的规格。
之所以有Profile的概念,是为了要更明确地区分出各种嵌入式装置上Java程序该如何开发以及它们应该具有哪些功能。
因此Profile之中定义了与特定嵌入式装置非常相关的扩充类别函数库。
1.3.2Java虚拟机
Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。
Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。
Java虚拟机的特点。
Java语言的一个非常重要的特点就是跨平台性。
而使用Java虚拟机是实现这一特点的关键。
一般的高级语言如果要在不同的平台上运行的话,至少需要编译成不同的目标代码。
而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。
Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。
1.3.3Notepad++
Notepad++的主要功能有:
语法高亮显示,支持的程序语言有:
C,C++,Java,C#,XML,HTML,PHP,Javascript,HTML,CSS,RCresourcefile,makefile,ASCIIartfile(extension.nfo,),doxygen,inifile,batchfile,ASP,VB/VBSsourcefiles,SQL,Objective-C,CSS,Pascal,Perl,Python,Lua,TCL,Assembler,Ruby,Lisp,Scheme,Properties,Diff,Smalltalk,Postscript及VHDL。
此还有以下一些功能:
前端显示、行号显示、自动换行、页面放大缩小、自动封闭HTML标签、查找替换、字数统计等等。
2游戏分析与总体设计
2.1游戏分析
六子炮棋一种版图类棋牌游戏。
开发过程包括界面美术设计、游戏规则的逻辑、人工智能等方面。
对于界面美术设计,要做到操作简单,美观大方等。
对于游戏规则的逻辑和人工智能方面,一定要准确,完全,完善,另外人工智能更要达到一定的水平,也就是手机引擎棋力不能太弱,否则失去可玩性,失去吸引力。
2.2游戏目标
(1)菜单选择界面,提供用户选择具体功能的界面,也决定游戏美术风格。
(2)游戏主界面,游戏的操作界面。
(3)帮肋界面,此游戏的操作说明及规则说明。
(4)设置界面,用户可以选择开启声音、震动与否。
(5)游戏关于,关于本游戏版权,作者介绍等信息。
此外还有以下一些功能:
悔棋操作。
棋盘交换,声音设置,风格选择、棋力先择等等。
2.3总体需求
此游戏的关键在于复杂的逻辑关系,及人工智能。
2.3.1引擎
什么时候可以走 棋:
必需是对方下棋以后、必需有棋子可走(没有被吃完并不被困死)、走棋不能踩到对方或自己棋子上。
怎样吃对方棋子:
下子处的一行或一列有一个空位、与自己的另一子形成直线(枪口),不间断、这条直线上有对手棋子,不间断。
此外,对方棋子自己走上不在此例
引步骤的评分:
可以走棋分数加1,被吃减6,可吃加6,形成枪口加3,托敌加2,完全围困加20等等。
2.3.1下棋者
怎样允许走棋:
轮到自己走棋,拿起棋子,移动了位置,并且每次能只能移动一步,不能踩到自己棋子或引擎棋子位置。
放下棋子。
下棋者吃子:
刚下了棋,下子处的一行或一列有一个空位、与自己的另一子形成直线(枪口),不间断、这条直线上有对手棋子,不间断。
2.3.2按键处理
处理整个Canvas的各种动作,要求正确,不冲突。
包括各界面标识,动作标识,风格标识、2.3.4其它
棋盘与棋子(地图):
用二维数表示。
0代表空位,1代表下棋者棋子,2代表引擎棋子
抓手:
0代表不拿或放下,1代表拿起棋子。
生命(棋子数):
初始都是6,少于2者为负。
步骤:
小于100,否则合棋。
2.4游戏模块流程图
游戏模块流程图如图1所示,当游戏开,则进入游戏开始菜单,可以选择开始游戏。
如果对游戏规则得不大了解,可以进入游戏帮助界面,可获得相关帮助信息。
游戏关于则是游戏的版板说明及作者介绍。
游戏设置可以对游戏的外观进行选择,同时还可以选择开启或关闭声音。
退出游戏,程序结束。
图1游戏模块流程图
3详细设计
3.1MIDlet框架
继承MIDlet,完成游戏的起启动,游戏启动如图2(游戏主画面)来电处理,暂停处理等等。
首先引入开发包midlet,创建游戏启动类,并继承静态类MIDlet,并重构MIDlet的三个静态方法,startApp(),pauseApp(),以及destroyApp(boolean),其中startApp(),在游戏启动是调用,pauseApp(),在来电话时调用,destroyApp(boolean),在游戏结束时调用。
编写启动方法,gameStarts()。
该方法将Canvas设为当前屏目,也就是游戏启动。
编写游戏结束方法gameEixt(),该方法调用MIDlet类的notifyDestroyed()方法,结束游戏。
程序如下:
importjavax.microedition.lcdui.*;
importjavax.microedition.midlet.*;
publicclassPaoQiGameStartextendsMIDlet{
publicstaticPaoQiGameStartmidlet;
publicstaticPaoQiGameCanvasgc=newPaoQiGameCanvas();
publicvoidstartApp(){
midlet=this;
PaoQiGameStart.gameStarts();
}
publicvoidpauseApp(){}
publicvoiddestroyApp(booleanff){}
publicstaticvoidgameEixt(){
midlet.notifyDestroyed();
}
publicstaticvoidgameStarts(){
gc.startNum=2;
Display.getDisplay(midlet).setCurrent(gc);
}
}
3.2Canvas框架
Canvas框架是游戏的主体部分,包括棋盘棋子的绘制、抓手绘制,界面切换、游戏逻辑、游戏机制、按键处理等等功能都在Canvas框架中完成。
以下是部分功能解释。
3.2.1下棋者走棋与吃子算法
drawRMove(intnum)方法主要实现玩家下棋。
brs变量是一boolean型就量,作用是将走棋的权力交给玩家,也就是brs为ture的时候,玩家才能行棋,相当于现实中的流轮下棋一样。
drawRMove()整型参数的功能是判断玩家的行子方向以及拿起棋子或是放下棋子,1,2,3,4代表上、下、左、右四个方向,5代表落子。
整型变量,tk,tu,用于限制玩家走棋的步数,也就是该棋子只能行走一格。
走棋是通过将数组Map[][]变化然后重绘画布实现的,Map[row][col]=0,表示该棋子从原位置拿走,该位置为空位置,Map[row][col+1]=1,表示落子处为玩家棋子。
重绘画布则在按键处理方法中完成。
部分程序如下:
publicvoiddrawRMove(intnum){
if(brs){
switch(num){
case1:
if(tk!
=1&&tu==0){
if(dir==0){
if(kx }elseif(dir==1){if(kx } if(col+1<=3&&Map[row][col+1]==0&&dir==1){ Map[row][col]=0; Map[row][col+1]=1; tk++; } } break; } } } publicvoidcheck(introw,intcol){ row=this.row; col=this.col; //行查找开始 if(Map[row][0]==0&&Map[row][1]! =0&&Map[row][2]! =0&&Map[row][3]! =0){//查找0列是否有0 checkR(row,col); } if(Map[row][3]==0&&Map[row][0]! =0&&Map[row][1]! =0&&Map[row][2]! =0){//查找3列是否有0 checkR(row,col); } //列查找开始 if(Map[0][col]==0&&Map[1][col]! =0&&Map[2][col]! =0&&Map[3][col]! =0){//查找0行是否为0 checkC(row,col); } if(Map[3][col]==0&&Map[0][col]! =0&&Map[1][col]! =0&&Map[2][col]! =0){//查找3行是否为0 checkC(row,col); } } 3.2.2引擎走棋算法 drawBMove(int,int,int,int)是引擎行棋的方法,四个整型参数分别记录上一步棋子与当前棋子。 bbs与brs类似,是一个将行棋权交给引擎的boolean就量,lifeB则是引擎棋子数目,就是说只能轮到引擎行棋,并且引擎没有输掉比赛的时候才能行棋。 程序如下: publicvoiddrawBMove(intbrowq,intbcolq,intbrow,intbcol){ if(bbs&&lifeB>1){ Map[browq][bcolq]=0; Map[brow][bcol]=2; engineCheck(brow,bcol); if(inilevelNum==2){ gameBuZou(); } brs=true; bbs=false; if(soundNum==0){ ss.loadSounds(SoundString[1]); ss.playSound(); } } } 3.2.3步骤评分算法 engineCheck(int,int)是引擎步骤的评分法方,该方遍历所有可行棋的步骤,采用冒泡排序法,将最优的行棋方法找出来。 程序如下: publicintengineAn(intr,intc){ intengK=0;//行空位标记 intengZ=0;//行引擎方棋子标记 intengD=0;//行本方棋子标记 intengKL=0;//列空位标记 intengZL=0;//列引擎方棋子标记 intengDL=0;//列本方棋子标记 for(inti=0;i<4;i++){ //行 if(Map[r][i]==1){engD++;} if(Map[r][i]==2){engZ++;} if(Map[r][i]==0){engK++;} if(Map[i][c]==1){engDL++;} if(Map[i][c]==2){engZL++;} if(Map[i][c]==0){engKL++;} } switch(engD){//找到方棋子 case0: engPf++; break; case1: engPf=engPf; break; case2: engPf++;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 论文 模板