2048小游戏设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2048小游戏
(一)程序介绍
2048是一款益智小游戏,玩家需要在l6个格子中通过数字叠加的方法将最初的数字2凑成数字2048。有16个格子,初始时会有两个格子上安放了两个数字2, 每次可以选择上下左右其中一个方向去滑动, 每滑动一次, 所有的数宇方块都会往滑动的方向靠拢外, 系统也会在空自的地方随即出现一个数字方块,相同数字的方块在靠拢、相撞时会相加。 2o48是比较流行的一款数字游成a本课程设计通过设计与开发 JvM平台上的2048游戏,进一步掌握所学Java课程的知识, 体验 Java的跨平台性, 同时将 Java设计方面的知识拓展应用
(二) 功能需求描述
l、图形用户界面: 2048的最大特点就是玩家对图形界面里的数字进行操作, 也就是是玩家与游戏的互动
2、当前分数 scoRE 与最高分数的显示:在我们设计的2048游戏中当前分数取了页面i内所有数字相加的值为分数, 对玩家玩游戏的进展有直接性、客观性的展现, 同时, 最高分数取了以往玩家退出游戏时所保存分数的最高分
3、数字颜色‘游戏中数宇的颜色以2为首項的等比数列变化,即2、
4、8、l6、32、“、128、256、5l2、l024、2048__.对应的数字卡片变色
4、游戏的退出:游戏退出时,我们采用弹出对话框的确认玩家是否真的要退出游戏, 当然这样做更符合游戏人性化设计的观念。
(三)玩法技巧:
1、最大数尽可能放在角落
2、数字按顺序紧邻排列
3、首先満足最大数和次大数在的那一列/行是满的
4、时刻注意活动较大数旁边要有相近的数
5、以大数所在的一行为主要移动方向
6、不要急于“清理桌面”
(四)程序说明
一个类 Copy2048继承JFrame, 类中包括, 一个构造方法 Copy2048,构造方法中设定游戏界面的大小,背景颜色,边框,字体,标签,布局,位置,记录剩
余空方块数目,记录分数,用于判断游成是否失败,用于判断游戏是否失败,设置字体类型和大小, 为最高分标签添加接键监听器, 一个 KeyEvent按键事件, 构造方法中创建游戏主面板,设置主面板位置尺寸,设置空布局,创建文本框二维数组,创建标签,调用时间处理方法, 一个Create2方法,是在随机位置产生一个2号方块的方法, ll到l4同时被键盘赋値为1说明任何方向键都不能产生新的数字2,那就说明游戏失败GAME OVER! 一个setColor方法,是为了产生2l:)48小游戏方块的颜色。
(五) 程序结构
l.重新开始,若是初次运行游戏,则从文件中读入最高分
void restart0
2.控制方法
ptlblic void keyPtessed(KeyEvent e)
3.结图方法
public void paint(〔iraphics g)
4.判断是否己经失败,若失败则返回true,否则返回false
pablic boolean judgeFai10
5.向下滑动,若各列均投有方块相相或移动,则返回false,否则返回true; public void moveDown0
6.向左滑动,若各行均投有方块相相或移动,则返回false,否则返回true; ptlblic void moveLeft0
7.向右滑动,若各行均投有方块相相或移动,则返回false,否则返回true, public void moveRight0
8.向上滑动,若各行均投有方块相消或移动,则返回false,否则返回true; Public void moveUp0
9.在游戏区空用处随机生成2public void generateRandom2 0
(六)JAVA制作2048小游戏详细代码
import ;
import ;
import ;
impol1 ;
import ;
import ;
import java.util. Random;
import javax.swing_BorderFactory;
import javax.swing_lcon;
import javax.swing. lmagelcon;
import javax.swing_JFrame;
import ;
import javax.swing_JPanel;
import ;
import java)(.swing_border.*;
import java)(.swing.JTextField;
public class Copy2048 extends JFrame{
private JPanel scoresPane;
private JPanel mainPane;
private JLabel labelMaxScores;
private JLabel labelScores;
private JLabel tips;
private JTextField textMa)(Scores; private JLabel textScores; private JLabel[] [] texts;
privatelcorl icon2;
private int times= 16;
private int scores= 0;
private int11 ,l2,l3,l4,l5;
//提示操作t示签
//-记录剩余空方块数目
//-记最分数
//用-]-'判断游戏是否失败
Font font= new Font(”H, Font.BOLD,14); Font font2 = new Font(-', Font.BOLD,30); Random random= new Random0;
/般置字体类型和大小//设置字体类型和大小
//随机类实例化
public static void main(StringI] args){
EventOueue.invokeLater(new Runnable0{
public void run0{
try{
Copy2048 ffame= new Copy20480;
frame.setVisible(true);
}
catch(Exception e1){
e1 .prlntStact(Trace0;
}
}
});
}
public Copy20480{
super0;
setFiesizable(false);
getContentPane0.setLayout(null);