2048小游戏设计 下载本文

内容发布更新时间 : 2024/12/23 13:56:12星期一 下面是文章的全部内容请认真阅读。

页眉内容

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