2048小游戏设计 联系客服

发布时间 : 星期三 文章2048小游戏设计更新完毕开始阅读

.

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 java.awt.Color;

import java.awt.EventOueue; import java.awt.BorderLayout; impol1 java.awt.FlowLayout; import java.awt.Font; import java.awt.event.'; import java.util. Random;

import javax.swing_BorderFactory; import javax.swing_lcon;

import javax.swing. lmagelcon; import javax.swing_JFrame; import javax.swing.JLabel; import javax.swing_JPanel;

import javax.swing.SwingConstants; 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); setBounds(500, 50, 500, 615); setDefaultC?oseOperation(J Frame. EX「「0N_CLOSE) ; setTltle(\版\ scoresPane= new JPanel0; scoresPane.setBackground(Color.green); scoresPane.setBounds(20, 20, 460, 40);

scoresPane.setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2,,Color.YELLOW)); getContentPane0.add(scoresPane); scoresPane.setLayout(null);

labelMaxScores= new JLabel(\最高分:\labelMaxScores.setBounds(10, 5, 50, 30); scoresPane.add(labelMaxScores); textMaxScores= new JTextField(\textMaxScores.setBounds(60, 5, 150, 30); textMaxScores.setFont(font); textMaxScores.setEditable(false); scores Pane.add(textMaxScores) ; 数面ili , 1 '

labelScores= new JLabel(”得 分:\labelScores.setBounds(240, 5, 50, 30); scoresPane.add(labelScores);

textSoores= new JLabe1(String.valueOf(scores)); textSoores.setFont(font); textSoores.setBounds(290, 5, 150, 30); scores Pane.add(textScores) ;

mainPane= new JPanel0; mainPane.setBounds(20, 70, 460, 500); this.getContentPane0.add(mainPane);

mainPane.setLayout(null); //设置空布用 texts= new JLabel[4][4]; for(int i= 0; i<4; i++){

..