java课程设计.docx

上传人:b****6 文档编号:8082990 上传时间:2023-01-28 格式:DOCX 页数:22 大小:115.26KB
下载 相关 举报
java课程设计.docx_第1页
第1页 / 共22页
java课程设计.docx_第2页
第2页 / 共22页
java课程设计.docx_第3页
第3页 / 共22页
java课程设计.docx_第4页
第4页 / 共22页
java课程设计.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

java课程设计.docx

《java课程设计.docx》由会员分享,可在线阅读,更多相关《java课程设计.docx(22页珍藏版)》请在冰豆网上搜索。

java课程设计.docx

java课程设计

Java语言程序设计

课程设计

题目2048游戏的设计与实现

学院数信学院

专业计算机科学与技术

班级计科121

学号5131

学生姓名郑帅兵

指导教师赵利平

编写日期2014-7-8

 

一、需求分析

 

《2048》是比较流行的一款数字游戏。

原版2048首先在github上发布,原作者是GabrieleCirulli。

它是基于《1024》和《小3传奇》的玩法开发而成的新型数字游戏[1] 。

随后2048便出现各种版本,走各大平台。

由Ketchapp公司移植到IOS的版本最为火热,现在约有1000万下载,其名字跟原版一模一样。

衍生版中最出名的是《2048六边形》版本,先后在全球81个国家中的boardgame中排进了前200。

安卓版非常火爆的有《挑战2048》,其版以后还加入了双人对战。

其次比较特别的有2048中国朝代版。

更有2048自定义版,可以自己定义文字和图片。

《2048》是IOS中流行的一款。

本课程设计通过设计与开发JVM平台上的2048游戏,进一步掌握所学Java课程的知识,体验Java的跨平台性,同时将Java设计方面的知识拓展应用

 

二、系统运行环境

1、硬件环境:

2、软件环境:

操作系统:

WindowsXP/Windows7

软件:

集成开发环境Eclipse

三、功能需求描述

1、图形用户界面:

2048的最大特点就是玩家对图形界面里的数字进行操作,也就是是玩家与游戏的互动

2、当前分数SCORE与最高分数的显示:

在我们设计的2048游戏中当前分数取了页面内所有数字相加的值为分数,对玩家玩游戏的进展有直接性、客观性的展现;同时,最高分数取了以往玩家退出游戏时所保存分数的最高分

3、数字颜色:

游戏中数字的颜色以2为首项的等比数列变化,即2、4、8、16、32、64、128、256、512、1024、2048.......对应的数字卡片变色

4、游戏的退出:

游戏退出时,我们采用弹出对话框的确认玩家是否真的要退出游戏,当然这样做更符合游戏人性化设计的观念。

功能图如下:

四、总体设计

 

简要设计流程:

程序结构说明:

;

import.*;

import.*;

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();

generateRandom2or4();

}

//绘图方法

publicvoidpaint(Graphicsg){

gBuffer=g;

(background);

(30,40,185,90,20,20);//画分数显示区

(30,40,185,90,20,20);

(245,40,185,90,20,20);//画最高分显示区

(245,40,185,90,20,20);

(0,150,454,460,10,10);//画主游戏区

(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);//画分数数字

}elseif(score<10000){

(score),73,115);//画分数数字

}elseif(score<100000){

(score),60,115);//画分数数字

}elseif(score<1000000){

(score),50,115);//画分数数字

}else{

(score),37,115);//画分数数字

}

if(highestScore<10){

(highestScore),325,115);

//画分数数字

}elseif(highestScore<100){

(highestScore),315,115);

//画分数数字

}elseif(highestScore<1000){

(highestScore),300,115);

//画分数数字

}elseif(highestScore<10000){

(highestScore),288,115);

//画分数数字

}elseif(highestScore<100000){

(highestScore),275,115);

//画分数数字

}elseif(highestScore<1000000){

(highestScore),265,115);

//画分数数字

}else{

(highestScore),252,115);

//画分数数字

}

(foreground);

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

for(intj=0;j<4;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<4;j++){

switch(array[i][j]){

case2:

{

(newColor(238,228,218));

(10+j*112,160+i*112,100,100,10,10);

(10+j*112,160+i*112,100,100,10,10);

(newColor(122,113,104));

(newFont("微软雅黑",,50));

("2",45+j*112,230+i*113);

break;

}

case4:

{

(newColor(236,224,200));

(10+j*112,160+i*112,100,100,10,10);

(10+j*112,160+i*112,100,100,10,10);

(newColor(119,110,103));

(newFont("微软雅黑",,50));

("4",45+j*112,230+i*113);

break;

}

case8:

{

(newColor(242,177,121));

(10+j*112,160+i*112,100,100,10,10);

(10+j*112,160+i*112,100,100,10,10);

(newColor(250,248,235));

(newFont("微软雅黑",,50));

("8",45+j*112,230+i*113);

break;

}

case16:

{

(newColor(245,149,101));

(10+j*112,160+i*112,100,100,10,10);

(10+j*112,160+i*112,100,100,10,10);

(newColor(252,244,242));

(newFont("微软雅黑",,45));

("16",33+j*112,230+i*111);

break;

}

case32:

{

(newColor(245,124,95));

(10+j*112,160+i*112,100,100,10,10);

(10+j*112,160+i*112,100,100,10,10);

(newColor(255,241,249));

(newFont("微软雅黑",,45));

("32",33+j*112,230+i*111);

break;

}

case64:

{

(newColor(246,93,59));

(10+j*112,160+i*112,100,100,10,10);

(10+j*112,160+i*112,100,100,10,10);

(newColor(247,249,235));

(newFont("微软雅黑",,45));

("64",33+j*112,230+i*111);

break;

}

case128:

{

(newColor(237,206,113));

(10+j*112,160+i*112,100,100,10,10);

(10+j*112,160+i*112,100,100,10,10);

(newColor(248,246,255));

(newFont("微软雅黑",,40));

("128",23+j*112,228+i*111);

break;

}

case256:

{

(newColor(237,204,97));

(10+j*112,160+i*112,100,100,10,10);

(10+j*112,160+i*112,100,100,10,10);

(newColor(245,244,249));

(newFont("微软雅黑",,40));

("256",23+j*112,228+i*111);

break;

}

case512:

{

(newColor(235,201,78));

(10+j*112,160+i*112,100,100,10,10);

(10+j*112,160+i*112,100,100,10,10);

(newColor(255,241,248));

(newFont("微软雅黑",,40));

("512",23+j*112,228+i*111);

break;

}

case1024:

{

(newColor(237,197,63));

(10+j*112,160+i*112,100,100,10,10);

(10+j*112,160+i*112,100,100,10,10);

(newColor(240,246,244));

(newFont("微软雅黑",,35));

("1024",17+j*112,225+i*113);

break;

}

case2048:

{

(newColor(238,194,46));

(10+j*112,160+i*112,100,100,10,10);

(10+j*112,160+i*112,100,100,10,10);

(newColor(250,249,255));

(newFont("微软雅黑",,35));

("2048",17+j*112,225+i*113);

break;

}

case4096:

{

(newColor(242,193,28));

(10+j*112,160+i*112,100,100,10,10);

(10+j*112,160+i*112,100,100,10,10);

(newColor(248,246,255));

(newFont("微软雅黑",,35));

("4096",17+j*112,225+i*113);

break;

}

case8192:

{

(newColor(236,173,57));

(10+j*112,160+i*112,100,100,10,10);

(10+j*112,160+i*112,100,100,10,10);

(newColor(248,246,255));

(newFont("微软雅黑",,35));

("8192",17+j*112,225+i*113);

break;

}

default:

{

(foreground);

(10+j*112,160+i*112,100,100,10,10);

(10+j*112,160+i*112,100,100,10,10);

}

}

}

}

}

publicvoidkeyPressed(KeyEvente){

if()=={

moveUp();

}elseif()=={

moveDown();

}elseif()=={

moveLeft();

}elseif()=={

moveRight();

}

if(biggestNumber>1024){

switch(biggestNumber){

case2048:

{

if(this,"挑战2048成功!

\n是否继续挑战","提示",=={

biggestNumber++;//防止2048重复判断

}else{

restart();

repaint();

}

break;

}

case4096:

{

if(this,"挑战4096成功!

\n是否继续挑战","提示",=={

biggestNumber++;//防止4096重复判断

}else{

restart();

repaint();

}

break;

}

case8192:

{

if(this,"挑战8192成功!

\n是否继续挑战","提示",=={

biggestNumber++;//防止8192重复判断

}else{

restart();

repaint();

}

break;

}

default:

;

}

}

if(judgeFail()){

(this,"挑战失败!

","提示",;

restart();

repaint();

}

}

@Override

publicvoidkeyReleased(KeyEvente){

}

@Override

publicvoidkeyTyped(KeyEvente){

}

//判断是否已经失败,若失败则返回true,否则返回false

publicbooleanjudgeFail(){

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

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

process[i][0]=array[i][j];

process[i][1]=1;

}

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

intk=i;

while(k>0){

if(process[k][0]==0){

returnfalse;

}elseif(process[k-1][0]==0){

returnfalse;

}elseif(process[k-1][0]==process[k][0]){

returnfalse;

}else{

break;

}

}

}

}

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

for(inti=3;i>-1;i--){

process[3-i][0]=array[i][j];

process[3-i][1]=1;

}

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

intk=i;

while(k>0){

if(process[k][0]==0){

returnfalse;

}elseif(process[k-1][0]==0){

returnfalse;

}elseif(process[k-1][0]==process[k][0]){

returnfalse;

}else{

break;

}

}

}

}

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

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

process[j][0]=array[i][j];

process[j][1]=1;

}

for(intl=1;l<4;l++){

intk=l;

while(k>0){

if(process[k][0]==0){

returnfalse;

}elseif(process[k-1][0]==0){

returnfalse;

}elseif(process[k-1][0]==process[k][0]){

returnfalse;

}else{

break;

}

}

}

}

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

for(intj=3;j>-1;j--){

process[3-j][0]=array[i][j];

process[3-j][1]=1;

}

for(intl=1;l<4;l++){

intk=l;

while(k>0){

if(process[k][0]==0){

returnfalse;

}elseif(process[k-1][0]==0){

returnfalse;

}elseif(process[k-1][0]==process[k][0]){

returnfalse;

}else{

break;

}

}

}

}

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

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

if(array[i][j]==0){

returnfalse;

}

}

}

returntrue;

}

publicvoidmoveUp(){

ifGenerate2or4=false;

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

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

process[i][0]=array[i][j];

process[i][1]=1;

}

processProcess();

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

array[i][j]=process[i][0];

}

}

if(ifGenerate2or4){

generateRandom2or4();

repaint();

}

}

//向下滑动,若各列均没有方块相消或移动,则返回false,否则返回true;

public

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

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1