课程设计--手机黄金矿工游戏Word文档格式.docx

上传人:聆听****声音 文档编号:934952 上传时间:2023-04-29 格式:DOCX 页数:21 大小:462.57KB
下载 相关 举报
课程设计--手机黄金矿工游戏Word文档格式.docx_第1页
第1页 / 共21页
课程设计--手机黄金矿工游戏Word文档格式.docx_第2页
第2页 / 共21页
课程设计--手机黄金矿工游戏Word文档格式.docx_第3页
第3页 / 共21页
课程设计--手机黄金矿工游戏Word文档格式.docx_第4页
第4页 / 共21页
课程设计--手机黄金矿工游戏Word文档格式.docx_第5页
第5页 / 共21页
课程设计--手机黄金矿工游戏Word文档格式.docx_第6页
第6页 / 共21页
课程设计--手机黄金矿工游戏Word文档格式.docx_第7页
第7页 / 共21页
课程设计--手机黄金矿工游戏Word文档格式.docx_第8页
第8页 / 共21页
课程设计--手机黄金矿工游戏Word文档格式.docx_第9页
第9页 / 共21页
课程设计--手机黄金矿工游戏Word文档格式.docx_第10页
第10页 / 共21页
课程设计--手机黄金矿工游戏Word文档格式.docx_第11页
第11页 / 共21页
课程设计--手机黄金矿工游戏Word文档格式.docx_第12页
第12页 / 共21页
课程设计--手机黄金矿工游戏Word文档格式.docx_第13页
第13页 / 共21页
课程设计--手机黄金矿工游戏Word文档格式.docx_第14页
第14页 / 共21页
课程设计--手机黄金矿工游戏Word文档格式.docx_第15页
第15页 / 共21页
课程设计--手机黄金矿工游戏Word文档格式.docx_第16页
第16页 / 共21页
课程设计--手机黄金矿工游戏Word文档格式.docx_第17页
第17页 / 共21页
课程设计--手机黄金矿工游戏Word文档格式.docx_第18页
第18页 / 共21页
课程设计--手机黄金矿工游戏Word文档格式.docx_第19页
第19页 / 共21页
课程设计--手机黄金矿工游戏Word文档格式.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

课程设计--手机黄金矿工游戏Word文档格式.docx

《课程设计--手机黄金矿工游戏Word文档格式.docx》由会员分享,可在线阅读,更多相关《课程设计--手机黄金矿工游戏Word文档格式.docx(21页珍藏版)》请在冰点文库上搜索。

课程设计--手机黄金矿工游戏Word文档格式.docx

设计思路、方法科学合理;

达到课程设计任务书规定的要求;

图、表、文字表达准确规范,上交及时。

30

答辩陈述和回答问题

陈述简明扼要,思路清晰,清楚流利,回答问题准确,基本概念清楚有理有据,有一定深度。

, 30

评定成绩

□优秀

□良好

□中等

□及格

□不及格

评定人员签名

2013年7月5日

3

课程设计任务书

一、设计题目:

《手机黄金矿工游戏》

二、设计内容:

黄金矿工是一款备受玩家喜爱的经典游戏。

本设计针对黄金矿工实现了新游戏,恭喜过关、游戏失败、暂停游戏、继续游戏或重新开始等过程。

可以清楚的演示各个画面的切换和一些游戏开发的类库。

三、设计要求:

1、开始显示欢迎界面,然后是游戏界面,主界面显示各种键的功能以及菜单-开始游戏和离开游戏。

2、开始玩游戏,如果赢了可进入下一关或重新开始。

采用子菜单的重新开始来实现以上功能。

3、游戏期间可以暂停游戏。

子菜单选项的暂停/继续游戏、离开游戏实现以上功能。

四、工作计划:

时间

完成内容

提交文档

备注

第1天

查找资料,确定题目,选择方案

课程设计说明书

设计准备阶段

第2天

第3天

设计建模

设计阶段

第4天

第5天

详细设计与实现

编码测试阶段

第6天

第7天

第8天

整理材料,撰写设计说明书

收尾阶段

第9天

第10天

课程设计答辩

课程设计说明书、设计源代码

课程设计答辩、考核,评定成绩

指导教师:

王艳涛 陈伟

教研室主任:

高殿武

2013年6月25日

I

本科课程设计说明书

目 录

1、程序的算法及说明 2

1.1、程序算法 2

1.2、程序的使用方法 2

2、程序的项目结构及说明 5

3、程序运行与发布 6

3.1欢迎界面 6

3.2主界面 6

3.3游戏界面 7

4、总结 8

5、参考文献 9

附录:

程序源代码 10

1、程序的算法及说明

—II—

1.1、程序算法

游戏规则:

黄金矿工游戏的目的是用最少的时间尽量钩到所有的金块与石头块。

在游戏中,游戏角色不能移动。

游戏开始即倒计时50秒。

操作者通过钩子左右摇摆来选择方向发出钩子。

一次只能钩到一个物品,当钩到金块或石头块时,其形状越大,钩上来的时间越慢。

每次成功钩到后系统会记相应的钱数。

注意游戏时间结束会判定所得钱数与游戏要求钱数比较,如高于目标钱数则继续下一关。

否则游戏失败,此时建议重新玩一次。

如果成功达到要求钱数,屏幕会出现提示,此时可进入下一关继续游戏。

本游戏共20关,每关的难易程度不同,越往后目标钱数越高,选择合适方向钩选大块金块的机会越难。

考验玩家准确的判断力与果断性。

1.2、程序的使用方法

1.开始显示欢迎界面,欢迎界面显示了游戏制作者的主要信息,然后3秒后自动跳转到游戏主界面。

2.主界面中显示各种键的功能以及菜单-开始游戏和离开游戏。

游戏中钩子自动左右摇摆。

按↓钩子射出。

3.游戏期间,右键菜单可以选定暂停游戏,暂停后可选继续游戏。

4.游戏中,右键菜单可以选择重新开始游戏和离开游戏。

程序流程图如下:

—2—

开始

判断用户是否按键

读取按键信息

输出关卡

过关

判断钩到钱数是

否超过目标钱数

结束

图1程序流程图

—3—

2、程序的项目结构及说明

本程序的项目结构如图2所示

图2手机游戏推箱子目结构图

本程序的JAVA源文件说明如下:

本程序共Stone.java, Hook.java, Gold.java, Gain.java,FlashScreen.java, GameTimer.java,

Target.java,GameCanvas.java,GoldMiner.java。

9个JAVA源文件:

Stone:

石头类,定义石头属性和方法。

Hook:

矿钩类。

定义矿钩属性和方法。

Gold:

金块类。

定义金块属性和方法。

Gain:

金钱类。

FlashScreen:

闪屏类,自我介绍界面。

GameTimer:

时间类。

控制时间。

Target:

目标基类。

GameCanvas:

画布。

GoldMiner:

入口类,该文件的父类是MIDlet。

—4—

3、程序运行与发布

3.1欢迎界面

欢迎界面显示了程序第一个屏幕,欢迎界面如图3所示。

图3 欢迎界面

3.2主界面

进入主程序界面后可根据界面中的提示选择新游戏或选关,主界面如图4

所示。

—5—

图4 程序主界面

3.3游戏界面

开始玩游戏,如果赢了可进入下一关或重来。

采用子菜单选项确定和取消来实现以上功能。

—6—

图5开始游戏界面 图6失败出现的界面

图7通关游戏界面 图8所有关卡通关界面

—7—

4、总结

在本次课程设计过程中,为努力做到最好,本人做了很多工作。

设计前从各方面考虑选定了手机游戏黄金矿工,选定题目后,通过网上搜索等途径寻找了一些资料方便设计。

尽管如此,在设计时还是遇到很多问题。

起初很慌乱,但是在老师同学的帮助下,得到了解决。

随后便逐渐的适应了这一过程,也慢慢摸索到了一些解决方法和途径。

很辛苦,但是当程序能够顺利运行后非常开心。

黄金矿工游戏有不足之处:

只有过关才能选择继续或重玩,输了就不能重玩。

这是本次设计的遗憾之处,但是通过本次设计,本人对JAVAME有了更深层次的理解和认识。

对其中的很多类库以及很多方法都更为了解与掌握。

总之收益良多,这次设计为本人以后更深入的学习JAVA奠定了基础,也提高了自身动手实践能力。

5、参考文献

[1]崔尚志.Mobile手机应用开发.机械工业出版社.1989:

60-98

[2]张强,陆文华.J2ME手机开发入门.1993,29(6):

263-268

[3]王梦瑶.WindowsMobile平台应用与开发.清华大学出版社.1992:

8-13

—8—

程序源代码

GoldMiner.java页面代码:

importjavax.microedition.midlet.*;

importjavax.microedition.lcdui.*;

publicclassGoldMinerextendsMIDlet{privateGameCanvasgamecanvas;

privateDisplaydisplay=null;

privateFlashScreenflashscreen;

//声明闪屏画面对象

publicGoldMiner(){

}

publicvoidstartApp(){display=Display.getDisplay(this);

flashscreen=newFlashScreen(this);

//创建闪屏display.setCurrent(flashscreen);

publicvoidloadFlashScreen(){

//设置闪屏画面为当前显示画面

publicvoidFlashScreen(){

if(gamecanvas==null){

gamecanvas=newGameCanvas(this);

Display.getDisplay(this).setCurrent(gamecanvas);

gamecanvas.doStartApp();

publicvoidpauseApp(){gamecanvas.doPauseApp();

protectedvoiddestroyApp(booleanunconditional)

—9—

throwsMIDletStateChangeException{}publicvoiddoExit(){

try{

destroyApp(false);

notifyDestroyed();

}catch(MIDletStateChangeExceptione){}

GameCanvas.java页面部分代码:

importjava.util.Timer;

importjavax.microedition.lcdui.*;

importjava.io.IOException;

importjava.util.Random;

importjavax.microedition.lcdui.game.Sprite;

publicclassGameCanvasextendsCanvasimplementsRunnable,CommandListener{privatestaticfinalintTIMEPERSTAGE=50;

privatestaticfinalintGOLDNUM=10;

privatestaticfinalintSTONENUM=4;

privatestaticfinalintGAMEOVER=0;

privatestaticfinalintSTARTING=1;

privatestaticfinalintCIRCUMGYRATEING=2;

privatestaticfinalintSTRETCHING=3;

privatestaticfinalintBACKING=4;

privatestaticfinalintCATCHING=5;

privatestaticfinalintSTAGEPASSING=6;

privatestaticfinalintALLSTATESPASSED=7;

privatebooleanisPaused;

/**Start指令变量*/

privateCommandstartCmd=newCommand("

开始游戏"

Command.SCREEN,1);

/**Exit指令变量*/

privateCommandexitCmd=newCommand("

离开游戏"

Command.SCREEN,5);

/**Pause指令变量*/

privateCommandpauseCmd=newCommand("

暂停游戏"

/**Resume指令变量*/

privateCommandresumeCmd=newCommand("

继续游戏"

/**Quit指令变量*/

privateCommandquitCmd=newCommand("

重新开始"

Command.SCREEN,4);

—10—

privateGoldMinergoldminer;

privateGold[]gold=newGold[GOLDNUM];

privateStone[]stone=newStone[STONENUM];

privateintScreenWidth;

privateintScreenHeight;

privateRandomrandomTool=newRandom();

privateHookhook=newHook();

privateinthookCirState;

privateintStage;

privateImageBackGround;

privateGaingain;

privateintAmountofMoney;

privateintStageNum;

privateint[]MinMoney={650,1500,2500,3700,5000,6500,8000,10000};

privateintLeftTime;

privateintMoneyToAdd;

privateTimertimer=null;

publicvoiddoStartApp(){

//repaint();

Threadt=newThread(this);

t.start();

} publicGameCanvas(GoldMinergoldminer){this.goldminer=goldminer;

ScreenWidth=getWidth();

ScreenHeight=getHeight();

Stage=STARTING;

gain=newGain();

try{

BackGround=Image.createImage("

/BG.png"

);

}catch(IOExceptionioe){

System.out.println("

Can'

tloadfileBackground.png"

privatevoidInitialize(){hookCirState=1;

hook.Initialize();

AmountofMoney=0;

isPaused=false;

StageNum=1;

LeftTime=TIMEPERSTAGE;

MoneyToAdd=0;

IniGold();

—11—

IniStone();

setCommandListener(this);

addCommand(startCmd);

addCommand(exitCmd);

privatevoidChangeStage(){StageNum++;

Stage=CIRCUMGYRATEING;

LeftTime=TIMEPERSTAGE;

privatevoidIniGold(){inttempint=1;

for(inti=0;

i<

GOLDNUM;

i++){if(i<

2){

gold[i]= newGold(5+randomTool.nextInt(ScreenWidth-10),randomTool.nextInt(ScreenHeight/2-40)+50,tempint);

}else{

tempint=randomTool.nextInt(4)+1;

gold[i]=newGold(randomTool.nextInt(ScreenWidth-30)+15,randomTool.nextInt(ScreenHeight/2)+ScreenHeight/3+30,tempint

privatevoidIniStone(){

STONENUM;

i++){

stone[i]=newStone(50+randomTool.nextInt(ScreenWidth-100),randomTool.nextInt(ScreenHeight/2-40)+70,randomTool.nextInt

(2)+1);

publicvoiddoPauseApp(){

publicvoidpaint(Graphicsg){switch(Stage){

caseSTARTING:

Initialize();

—12—

try{

g.drawImage(Image.createImage("

/Start.png"

),ScreenWidth/2,ScreenHeight/2,Graphics.HCENTER|Graphics.VCENTER);

}catch(IOExceptionioe){}break;

caseCIRCUMGYRATEING:

paintBackGround(g);

hook.getHookSprite().paint(g);

break;

caseSTRETCHING:

g.setColor(0x00000000);

g.drawLine(hook.INIX,hook.INIY,hook.getX(),hook.getY());

break;

caseBACKING:

caseCATCHING:

paintBackGround(g);

gain.getGainSprite().setRefPixelPosition(hook.getX(),hook.getY());

gain.getGainSprite().paint(g);

caseSTAGEPASSING:

/GP.png"

g.setColor(254,255,0);

g.drawString(String.valueOf(MinMoney[StageNum]),150,167,Graphics.TOP|Graphics.LEFT);

}catch(IOExceptionioe){System.out.println("

tloadGP.pngfile."

caseGAMEOVER:

try{

/GameOver.png"

),ScreenWidth/2,

—13—

ScreenHeight/2,Graphics.HCENTER|Graphics.VCENTER);

tloadGameOver.pngfile."

caseALLSTATESPASSED:

/CM.png"

Hook.java页面代码:

importjavax.microedition.lcdui.Graphics;

importjavax.microedition.lcdui.Image;

publicclassHook{

publicstaticfinalintSPEED=5;

publicstaticfinalintINIX=120;

publicstaticfinalintINIY=37;

privatestaticfinaldouble[]TRIANGLE={0.9848,0.9397,0.8660,0.7660,0.6427,0.5,0.3420,0.1736};

privateintnowSpeed;

privateImageSource;

privatedoubleX,Y;

privateintcurrentImage;

privateSpriteHookSprite;

publicHook(){

Source=

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2