2048游戏的设计与实现 课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java语言程序设计
课程设计
题目2048游戏的设计与实现
目录
1. 需求分析 ................................................................................................................... 错误!未定义书签。
2. 系统运行环境.......................................................................................................... 错误!未定义书签。
3. 功能需求描述.......................................................................................................... 错误!未定义书签。
4. 总体设计 ................................................................................................................... 错误!未定义书签。
5. 程序模块设计.......................................................................................................... 错误!未定义书签。
6. 总结............................................................................................................................. 错误!未定义书签。
一、需求分析
《2048》是比较流行的一款数字游戏。原版2048首先在github上发布,原作者是Gabriele Cirulli。它是基于《1024》和《小3传奇》的玩法开发而成的新型数字游戏[1]。
随后2048便出现各种版本,走各大平台。由Ketchapp公司移植到IOS的版本最为火热,现在约有1000万下载,其名字跟原版一模一样。衍生版中最出名的是《2048六边形》版本,先后在全球81个国家中的board game中排进了前200。安卓版非常火爆的有《挑战2048》,其2.0.0版以后还加入了双人对战。其次比较特别的有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、游戏的退出:游戏退出时,我们采用弹出对话框的确认玩家是否真的要退出游戏,当然这样做更符合游戏人性化设计的观念。
功能图如下:
四、总体设计
简要设计流程:
程序结构说明:
//重新开始,若是初次运行游戏,则从文件中读入最高分
void restart()
//控制方法
public void keyPressed(KeyEvent e)
//绘图方法
public void paint(Graphics g)
//判断是否已经失败,若失败则返回true,否则返回false
public boolean judgeFail()
//向下滑动,若各列均没有方块相消或移动,则返回false,否则返回true;
public void moveDown()
//向左滑动,若各行均没有方块相消或移动,则返回false,否则返回true;
public void moveLeft()
//向右滑动,若各行均没有方块相消或移动,则返回false,否则返回true;
public void moveRight()
//向上滑动,若各行均没有方块相消或移动,则返回false,否则返回true;
Public void moveUp()
//在游戏区空闲处随机生成2或4
public void generateRandom2or4()
五、程序模块设计
源码如下:
Main类:
import javax.swing.JFrame;
public class Main {
public static void main(String[] args){
JFrame frame=new Java2048();
frame.setTitle("Java2048");
frame.setSize(455,610);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
frame.setVisible(true);
}
}
Java2048类:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
public class Java2048 extends JFrame implements KeyListener{ private static final long serialVersionUID = 1L;
Color background = new Color(190, 173, 160);// 背景色
Color foreground = new Color(204, 192, 178);// 前景色
Color wordColor = new Color(232, 216, 203);// 单词色
Font wordFont = new Font("微软雅黑", Font.PLAIN, 20);// 单词字体Font numberFont = new Font("微软雅黑", Font.BOLD, 40);// 数字字体