java课程设计Word文档格式.docx
《java课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《java课程设计Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
软件:
集成开发环境Eclipse
三、功能需求描述
1、图形用户界面:
2048的最大特点就是玩家对图形界面里的数字进行操作,也就是是玩家与游戏的互动
2、当前分数SCORE与最高分数的显示:
在我们设计的2048游戏中当前分数取了页面内所有数字相加的值为分数,对玩家玩游戏的进展有直接性、客观性的展现;
同时,最高分数取了以往玩家退出游戏时所保存分数的最高分
3、数字颜色:
游戏中数字的颜色以2为首项的等比数列变化,即2、4、8、16、32、64、128、256、512、1024、2048.......对应的数字卡片变色
4、游戏的退出:
游戏退出时,我们采用弹出对话框的确认玩家是否真的要退出游戏,当然这样做更符合游戏人性化设计的观念。
功能图如下:
四、总体设计
简要设计流程:
程序结构说明:
;
import.*;
publicclassJava2048extendsJFrameimplementsKeyListener{
privatestaticfinallongserialVersionUID=1L;
Colorbackground=newColor(190,173,160);
ength());
();
}catch(Exceptione1){(null,"
找不到同目录下文件或文件已损坏!
"
"
提示"
;
};
}
(0);
}
}
});
restart();
}
voidrestart(){//重新开始
//若是初次运行游戏,则从文件中读入最高分
if(highestScore==0){}
Filefile=newFile("
);
BufferedReaderbr;
try{
br=newBufferedReader(newFileReader(file));
highestScore2=());
();
}catch(Exceptione){
(this,"
(0);
};
highestScore=highestScore2;
array=newint[4][4];
//清空游戏用2维数组
score=0;
//重置分数为零
biggestNumber=0;
//重置最大数字为零
//在游戏区随机生成两个2或4
generateRandom2or4();
//绘图方法
publicvoidpaint(Graphicsg){
gBuffer=g;
(background);
(30,40,185,90,20,20);
//画分数显示区
(245,40,185,90,20,20);
//画最高分显示区
(245,40,185,90,20,20);
(0,150,454,460,10,10);
//画主游戏区
(wordFont);
(wordColor);
("
SCORE"
90,70);
//画SCORE
BEST"
315,70);
//画BEST
(numberFont);
;
if(score<
10){
(score),110,115);
//画分数数字}elseif(score<
100){
(score),100,115);
//画分数数字
}elseif(score<
1000){
(score),85,115);
10000){
(score),73,115);
100000){
(score),60,115);
1000000){
(score),50,115);
}else{
(score),37,115);
if(highestScore<
(highestScore),325,115);
}elseif(highestScore<
(highestScore),315,115);
(highestScore),300,115);
(highestScore),288,115);
(highestScore),275,115);
(highestScore),265,115);
(highestScore),252,115);
(foreground);
for(inti=0;
i<
4;
i++){
for(intj=0;
j<
j++){
(10+j*112,160+i*112,100,100,10,10);
(10+j*112,160+i*112,100,100,10,10);
}
for(inti=0;
i<
4;
i++){
for(intj=0;
j<
j++){
switch(array[i][j]){
case2:
{
(newColor(238,228,218));
(newColor(122,113,104));
(newFont("
微软雅黑"
,50));
2"
45+j*112,230+i*113);
break;
case4:
(newColor(236,224,200));
(newColor(119,110,103));
(newFont("
4"
case8:
(newColor(242,177,121));
(newColor(250,248,235));
("
8"
break;
case16:
(newColor(245,149,101));
(newColor(252,244,242));
(newFont("
,45));
16"
33+j*112,230+i*111);
case32:
(newColor(245,124,95));
(newColor(255,241,249));
32"
case64:
(newColor(246,93,59));
(newColor(247,249,235));
64"
case128:
(newColor(237,206,113));
(newColor(248,246,255));
,40));
128"
23+j*112,228+i*111);
case256:
(newColor(237,204,97));
(newColor(245,244,249));
256"
case512:
(newColor(235,201,78));
(newColor(255,241,248));
512"
23+j*112,228+i*111);
case1024:
(newColor(237,197,63));
(newColor(240,246,244));
,35));
1024"
17+j*112,225+i*113);
case2048:
(newColor(238,194,46));
(newColor(250,249,255));
2048"
case4096:
(newColor(242,193,28));
4096"
case8192:
(newColor(236,173,57));
8192"
default:
publicvoidkeyPressed(KeyEvente){
if()=={
moveUp();
}elseif()=={
moveDown();
moveLeft();
moveRight();
if(biggestNumber>
1024){
switch(biggestNumber){
case2048:
{
if(this,"
挑战2048成功!
\n是否继续挑战"
=={
biggestNumber++;
//防止2048重复判断
}else{
restart();
repaint();
case4096:
挑战4096成功!
//防止4096重复判断
case8192:
挑战8192成功!
//防止8192重复判断
default:
if(judgeFail()){
(this,"
挑战失败!
restart();
repaint();
@Override
publicvoidkeyReleased(KeyEvente){
publicvoidkeyTyped(KeyEvente){
//判断是否已经失败,若失败则返回true,否则返回false
publicbooleanjudgeFail(){
for(intj=0;
for(inti=0;
process[i][0]=array[i][j];
process[i][1]=1;
for(inti=1;
intk=i;
while(k>
0){
if(process[k][0]==0){
returnfalse;
}elseif(process[k-1][0]==0){
}elseif(process[k-1][0]==process[k][0]){
}else{
break;
}
for(inti=3;
i>
-1;
i--){
process[3-i][0]=array[i][j];
process[3-i][1]=1;
for(inti=0;
for(intj=0;
process[j][0]=array[i][j];
process[j][1]=1;
for(intl=1;
l<
l++){
intk=l;
for(intj=3;
j>
j--){
process[3-j][0]=array[i][j];
process[3-j][1]=1;
if(array[i][j]==0){
returnfalse;
returntrue;
publicvoidmoveUp(){
ifGenerate2or4=false;
process[i][0]=array[i][j];
process[i][1]=1;
processProcess();
array[i][j]=process[i][0];
if(ifGenerate2or4){
generateRandom2or4();
//向下滑动,若各列均没有方块相消或移动,则返回false,否则返回true;
public