2048小游戏Java课程设计报告书_第1页
2048小游戏Java课程设计报告书_第2页
2048小游戏Java课程设计报告书_第3页
2048小游戏Java课程设计报告书_第4页
2048小游戏Java课程设计报告书_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2048小游戏Java课程设计报告书2048小游戏Java课程设计报告书34/34肄PAGE34蒄虿腿芁羆羄蒅芆羂虿袈蒂羆节袆袅蚄蕿羁葿肆袄肃蒄膂膅蚀2048小游戏Java课程设计报告书可编写可更正

JAVA语言程序设计》课程设计报告

2048智力小游戏设计

专业班级:计算机科学与技术嵌入13-1

学生姓名:卓海有

学生学号:

小组成员:单建飞堵文斐李栋承梅孔伟

指导教师姓名:宋强1可编写可更正

目录

源代码清单9可编写可更正

一、前言

近来以来,移着手游越来越成为当下游戏产业中重要的一环,市场也在加

大对这一产业的投入,涌现出了气愤的小鸟,水果忍者,flappybird,2048等

诸多优秀的手游,可是任何一款手游能够风靡,主要还是依赖其简单的操作性,

因此本次java课设我选择其中的典型2048PC版作为本次课设的课题。

2048游戏规则很简单,玩家每次能够选择上下左右其中一个方向去搬动,

每搬动一次,所有的数字方块都会往搬动的方向靠拢外,系统也会在空白的地方

随机出现一个数字方块,相同数字的方块在靠拢、相撞时会相加。系统恩赐的数

字方块不是2就是4,玩家要想方法在这小小的16格范围中凑出“2048”这个

数字方块。

二、游戏需求解析

需求解析

现代社会对休闲小游戏的需求是:提高游戏的操作可行性,降低游戏的

操作难度,降低游戏的上手难度,降低游戏的竞争需求,对使用设备的要求趋于

简单化和多样化,游戏界面更加人性化,功能更加贴合使用。

(1)界面

一款的好的游戏其界面必定友好,简洁已经成为现在UI设计的主流,简

单易上手才能获取玩家的喜欢。

(2)功能需求

能够显示游戏的当前得得分,并记录游戏的最高分并显示,当在次打开

游戏时,能够显示最高分;在游戏进行的过程中循环播放音乐,并能够关闭

音乐也许打开音乐;游戏的主界面上,相同的数字要显示相同的颜色。游戏

结束要有相应的提示。游戏的主要目的是经过上下左右搬动来将相邻相同的

数字相加,经过不断地累加最后加到2048。

(3)操作性需求

1可编写可更正

游戏的体验是衡量一款游戏的要点,本游戏可经过键盘w,s,a,d以及方

向键来控制方块的搬动,还可以够经过在游戏的主面板中向上下左右拖动鼠标

来控制方块的搬动,左右手都能够操作,充分考虑便利性。不相同的人有不

相同习惯,经过多种方式来操作游戏,能够各种习惯的人的需求。

可行性解析

(1)面向对象的程序设计方法

Java面向对象程序设计的基本思想是经过构造和组织对象来求解问题

的。对象是很好理解的,任何一种物体都能够被认为是对象,比方,汽车就

是一种对象。对象拥有两个最基本的属性:拥有必然的物质基础和必然的功

能,这两种基本属性在Java语言中表现为拥有必然的储藏单元并具备必然

的功能。理解了Java的这种面向对象程序设计的基本思想此后,在今后的

编程过程中,就应当个构造人们简单理解的更凑近于真实物理世界物体的对

象。

Java面向对象程序设计的过程特别简单。这里介绍一种自顶向下的程序

设计方法,第一构造一个类来办理需要解决的问题,尔后依照已经拥有的类

(比方以前求解其他问题时实现的类),解析和构造新的类,想法将问题分

解下去,而最开始构造的类经过组织这些新构造的类、已有的类及由他们生

成的实例来求解指定的问题。这个过程能够连续递归下去,用在新构造的类

上,直到最后解决了指定的问题,比方Java的应用程序和小应用程序都必

须有一个类作为入口求解问题。

在计算机语言中,面向对象的类一般拥有三个基本特点:封装性、继承

性和多态性,这三种特点进一步简化了Java求解模型,提高了程序的复用

性,节约了程序的代码量,从而提高了软件的生产率。

(2)java技术解析

图形用户界面不但能够供应各种数据的基本图形的直观表示形式,而且

能够成立友好的交互方式,从而使计算机软件能够设计得十分简单易用。从2可编写可更正

Java语言出生到现在,Java语言已经供应了两代图形用户界面。第一代图

形用户界面AWT供应了基本的图形用户界面,它强烈地依赖于详细的计算机

操作系统,而且缺少基本的剪贴板和打印支持功能。现在第二代图形用户界

面Swing对AWT进行了扩展,Swing不但在功能上比AWT富强,而且在很大程度上战胜了AWT的上述缺点,它所设计的图形用户界面与详细的计算机操作相关性很小,而且能够定制指定的操作系统风格的图形用户界面。

GUI(图形用户界面)组件组成了图形用户界面的基础。在Java程序设

计中,要求依照必然的布局方式将组件安排在容器中,尔后经过事件办理的方式实现人机交互,而容器自己也是组件,这样在容器中也能够含有容器,从而能够经过这种嵌套方式方便地组合各种组件。

事件办理模型是Java语言供应的一种人机交互模型,它使得用户能够经过鼠标、键盘或其他输入设备来控制程序的执行流程,从而达到人机交互

的目的。对鼠标、键盘或其他输入设备的各种操作一般也称为事件。Java语言对这些事件的办理模型是采用面向对象的方法,即经过对象的形式把各种事件进行封装和办理。这种事件办理模型的三个基本要素是事件源、事件

对象以及事件监听器。事件源是各种组件,是接受各种事件的对象。在各种事件源上运用鼠标、键盘或其他输入设备进行各种操作,就会有事件发生。

每种操作一般都对应着事件,Java语言经过事件对象来包装这些事件。对事件进行办理是经过事件监听器实现的。

因为鼠标事件也是一种事件,因此对鼠标事件进行办理要依照事件办理模型。鼠标事件的办理也是成立在事件源的基础之上,以事件对象自己,最后经过事件监听器进行办理。

类包装常用的鼠标事件,比方,按下鼠标键和松开鼠标键等。类MouseEvent的实例对象记录了鼠标的当前地址和状态发生变化的鼠标键等。对鼠标事件进行办理最要点的是实现事件监听器接口。这些相关接口包括

MouseListener,MouseMotionListener,MouseWheelListener,

3可编写可更正

MouseInputListener。前面三个是包中的接口,最后一个接口

MouseInputlistener来自包。

接口主要用来办理按下鼠标键、松开鼠标键、单击鼠标键、鼠标进入组

件内和鼠标走开组件地域等事件。

对鼠标事件进行办理,就是要设计类,实现上面的鼠标事件监听器接口,

尔后在事件源中注册办理鼠标事件监听器的对象,以便对鼠标事件进行处

理。

三、大纲设计

四、详细设计

(1)流程图

4可编写可更正

(2)界面的整体布局

分别成立mainPane,scoresPane两大模块放入游戏窗体,其中

scoresPane包括2048字样的提示,当前得分和最高分,当得分高出最高分时,将得分存入工程文件夹下的,覆盖最高分,同时在最高分显示最新的内容。

经过Create方法随机产生2号方块也许4号方块,经过setColor方法设置

每个数字代表的方块颜色。

(3)方法模块解析

方法1:设置标签颜色,每次随机产生2或4和数字合并此后就要调用

该方法来设置标签的颜色

publicvoidsetColor(inti,intj,Stringstr){

if("".equals(str)){

texts[i][j].setBackground(newColor(120,221,247));5可编写可更正

return;}intresult=(str);switch(result){case2:texts[i][j].setBackground(newColor(240,240,0));break;case4:texts[i][j].setBackground;break;case8:texts[i][j].setBackground(newColor(240,150,10));break;

case16:texts[i][j].setBackground;break;case32:texts[i][j].setBackground;break;case64:texts[i][j].setBackground(newColor(155,10,190));break;

case128:texts[i][j].setBackground;break;case256:texts[i][j].setBackground;break;case512:texts[i][j].setBackground;break;

case1024:texts[i][j].setBackground;break;

case2048:texts[i][j].setBackground;break;

case4096:texts[i][j].setBackground;break;

default:break;

}

}

方法2:在随机地址产生一个2号或4号方块的方法,同时该方法也用

于判断游戏可否结束。

publicvoidCreate(){

inti,j;etText();

if(("")==0)){

intima=2*(int)(1+()*2);etText(imass);

setColor(i,j,imass);

6可编写可更正

times--;

r=false;

p1=p2=p3=p4=0;

}

}

quals(texts[p][q].getText()))temp2[p][q]=0;

elsetemp2[p][q]=(texts[p][q].getText());

}

}

temp1scores=temp2scores;

temp2scores=scores;

}

elseif(p1>0&&p2>0&&p3>0&&p4>0)

{

7可编写可更正

工业初版社..

8可编写可更正

黄晓东.Java课程设计案例精编[M].北京:中国水利水电初版社,.

求是科技.Java信息管理系统开发实例导航[M].北京:人民邮电初版社..

源代码清单

packagemy2048game;

import.*;

import.*;

import.*;

import.*;

publicclassMy2048GameextendsJFrame{

equestFocus();

}

pg"));

(433,120,45,30);

(jb1);

etFont(font2);

texts[i][j].setHorizontalAlignment;etText("");

texts[i][j].setBounds(110*j+15,110*i+15,100,

100);etOpaque(true);etBorder(2,2,2,

quals(texts[i][j].getText()))temp1[i][j]=temp2[i][j]=0;

elsetemp1[i][j]=temp2[i][j]=(texts[i][j].getText());

}

}

}

quals(str)){

9可编写可更正

texts[i][j].setBackground(newColor(120,221,247));

return;

}

intresult=(str);

switch(result){

case2:texts[i][j].setBackground(newColor(240,240,0));break;

case4:texts[i][j].setBackground;break;

case8:texts[i][j].setBackground(newColor(240,150,10));break;

case16:texts[i][j].setBackground;break;

case32:texts[i][j].setBackground;break;

case64:texts[i][j].setBackground(newColor(155,10,190));break;

case128:texts[i][j].setBackground;break;

case256:texts[i][j].setBackground;break;

case512:texts[i][j].setBackground;break;

case1024:texts[i][j].setBackground;break;

case2048:texts[i][j].setBackground;break;

case4096:texts[i][j].setBackground;break;

default:break;

}

}

etText();etText();etText(str);etText("");etText(str);etText("");etText();

str1=texts[i][j+1].getText();

if("")==0){

if("")!=0)

biaoji=1;

10可编写可更正

texts[i][j+1].setText(str);

setColor(i,j+1,str);

texts[i][j].setText("");

setColor(i,j,"");

}elseif(str1)==0&&j!=a

j!=a+1){

num=(str);scores+=num;times++;

str=(2*num);

texts[i][j+1].setText(str);

setColor(i,j+1,str);

texts[i][j].setText("");

setColor(i,j,"");

a=j;

biaoji=1;

}

}

}

}

p2=1;Create();break;

case:

case:

biaoji=0;

for(intj=0;j<4;j++){

a=5;11可编写可更正

for(intk=0;k<3;k++){

for(inti=1;i<4;i++){

str=texts[i][j].getText();

str1=texts[i-1][j].getText();

if("")==0){

if("")!=0)

biaoji=1;

texts[i-1][j].setText(str);

setColor(i-1,j,str);

texts[i][j].setText("");

setColor(i,j,"");

}elseif(str1)==0&&i!=a

i!=a-1){

num=(str);scores+=num;times++;

str=(2*num);

texts[i-1][j].setText(str);setColor(i-1,j,str);texts[i][j].setText("");setColor(i,j,"");

a=i;

biaoji=1;

}

}

}12可编写可更正

}

p3=1;Create();break;

case:

case:

biaoji=0;

for(intj=0;j<4;j++){

a=5;

for(intk=0;k<5;k++){

for(inti=2;i>=0;i--){

str=texts[i][j].getText();

str1=texts[i+1][j].getText();

if("")==0){

if("")!=0)

biaoji=1;

texts[i+1][j].setText(str);

setColor(i+1,j,str);

texts[i][j].setText("");

setColor(i,j,"");

}elseif(str1)==0&&i!=a

i!=a+1){

num=(str);scores+=num;times++;

str=(2*num);

texts[i+1][j].setText(str);13可编写可更正

setColor(i+1,j,str);

texts[i][j].setText("");

setColor(i,j,"");

a=i;

biaoji=1;

}

}

}

}

p4=1;Create();break;

case:

if(p1<=0||p2<=0||p3<=0||p4<=0){

for(inti=0;i<4;++i){

for(intj=0;j<4;++j){

if(temp1[i][j]==0)texts[i][j].setText("");

elsetexts[i][j].setText((temp1[i][j]));

temp2[i][j]=temp1[i][j];

setColor(i,j,texts[i][j].getText());

}

}

scores=temp1scores;

temp2scores=temp1scores;

}

break;

default:break;

14可编写可更正

}

if(maxscores<=scores)

{

maxscores=scores;

(maxscores);

();

}

("<html>SCORE<br>"+(scores)+"</html>");

("<html>BEST<br>"+(maxscores)+"</html>");etText();etText();etText(str);etTe

xt("");etText(str);etText("");etText();

str1=texts[i][j+1].getText();

if("")==0){

if("")!=0)

biaoji=1;

texts[i][j+1].setText(str);

setColor(i,j+1,str);

texts[i][j].setText("");

setColor(i,j,"");

}elseif(str1)==0&&j!=a

j!=a+1){

num=(str);scores+=num;times++;

str=(2*num);15可编写可更正

texts[i][j+1].setText(str);

setColor(i,j+1,str);

texts[i][j].setText("");

setColor(i,j,"");

a=j;

biaoji=1;

}

}

}

}

p2=1;Create();break;

case3:

biaoji=0;

for(intj=0;j<4;j++){

a=5;

for(intk=0;k<3;k++){

for(inti=1;i<4;i++){

str=texts[i][j].getText();

str1=texts[i-1][j].getText();

if("")==0){

if("")!=0)

biaoji=1;

texts[i-1][j].setText(str);

setColor(i-1,j,str);

texts[i][j].setText("");

16可编写可更正

setColor(i,j,"");

}elseif(str1)==0&&i!=a

i!=a-1){

num=(str);scores+=num;times++;

str=(2*num);

texts[i-1][j].setText(str);setColor(i-1,j,str);texts[i][j].setText("");

setColor(i,j,"");

a=i;

biaoji=1;

}

}

}

}

p3=1;Create();break;

case4:

biaoji=0;

for(intj=0;j<4;j++){

a=5;

for(intk=0;k<5;k++){

for(inti=2;i>=0;i--){

str=texts[i][j].getText();

str1=texts[i+1][j].getText();

17可编写可更正

if("")==0){

if("")!=0)

biaoji=1;

texts[i+1][j].setText(str);

setColor(i+1,j,str);

texts[i][j].setText("");

setColor(i,j,"");

}elseif(str1)==0&&i!=a

i!=a+1){

num=(str);scores+=num;times++;

str=(2*num);

texts[i+1][j].setText(str);

setColor(i+1,j,str);

texts[i][j].setText("");

setColor(i,j,"");

a=i;

biaoji=1;

}

}

}

}

p4=1;Create();break;

default:break;

}18可编写可更正

if(maxscores<=scores)

{

maxscores=scores;

(maxscores);

();

}

("<html>SCORE<br>"+(scores)+"</html>");

("<html>BEST<br>"+(maxscores)+"</html>");etText();

if(("")==0)){

intima=2*(int)(1+()*2);etText(imass);

setColor(i,j,imass);

times--;

r=false;

p1=p2=p3=p4=0;

}

}

quals(texts[p][q].getText()))temp2[p][q]=0;

elsetemp2[p][q]=(texts[p][q].getText());

}

}

temp1scores=temp2scores;

temp2scores=scores;

}

elseif(p1>0&&p2>0&&p3>0&&p4>0)

{quals("shengyin"))

{19可编写可更正

if(jb1_flag2)

{

setJb1_flag(false);

jb1_flag2=false;

(newImageIcon("src/静音图标.jpg"));

(false);pg"));

(false);//让按钮失去焦点

}

(false);//设置焦点,不能够用央求焦点

}

}

}

记录类

classRecorder

{

定义一个变量记录最高分

privatestaticintmaxscores_2048=0;

publicstaticintgetMaxscores_2048(){

returnmaxscores_2048;

}

publicstaticvoidsetMaxscores_2048(intmaxscores_2048){

=maxscores_2048;

}

定义文件输入流变量

privatestaticFileReaderfr=null;

privatestaticBufferedReaderbr=null;

20可编写可更正

privatestaticFileWriterfw=null;

privatestaticBufferedWriterbw=null;

从文件中读取,记录

publicstaticvoidgetRecording()

{

booleanflag=false;//用于判断文件是否是新创办的

try{

Filef=newFile("src/");

if())

{

fr=newFileReader(f);

br=newBufferedReader(fr);

Stringn=();

maxscores_2048=(n);

}

else

{

flag=();

}

}catch(Exceptione){

TODO:handleexception();

}

finally

{

try{

21可编写可更正

关闭文件流的序次,先开的后关闭

if(!flag)

{

();

();

}

}catch(Exceptione2){

TODO:handleexcepti

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论