2048java课程设计报告_2048小游戏-Java-课程设计报告书

《2048小游戏-Java-课程设计报告书》由会员分享,可在线阅读,更多相关《2048小游戏-Java-课程设计报告书(31页珍藏版)》请在金锄头文库上搜索。

1、JAVA 语言程序设计课程设计报告2048 智力小游戏设计专业班级: 计算机科学与技术嵌入 13-1 学生姓名: 卓海有 学生学号: 13031010166 小组成员: 单建飞 堵文斐 李栋承 梅孔伟指导教师姓名: 宋 强 目录1.前言 .12.游戏需求分析 .12.1 需求分析 .12.2 可行性分析 .23.概要设计 .34.详细设计 .44.1流程图 .44.2界面的整体布局 .44.3方法模块分析 .55.测试 .86.总结 .106.参考文献 .107.部分源代码: .101一、前言最近以来,移动手游越来越成为当下游戏产业中重要的一环,市场也在加大对这一产业的投入,涌现出了愤怒的小鸟。

2、,水果忍者,flappy bird,2048等诸多优秀的手游,然而任何一款手游能够风靡,主要还是依靠其简单的操作性,因此本次 java 课设我选择其中的典型 2048PC 版作为本次课设的课题。2048 游戏规则很简单,玩家每次可以选择上下左右其中一个方向去移动,每移动一次,所有的数字方块都会往移动的方向靠拢外,系统也会在空白的地方随机出现一个数字方块,相同数字的方块在靠拢、相撞时会相加。系统给予的数字方块不是 2 就是 4,玩家要想办法在这小小的 16 格范围中凑出“2048”这个数字方块。二、游戏需求分析2.1 需求分析现代社会对休闲小游戏的需求是:提高游戏的操作可行性,降低游戏的操作难度。

3、,降低游戏的上手难度,降低游戏的竞争需求,对使用设备的要求趋于简单化和多样化,游戏界面更加人性化,功能更加贴合使用。(1)界面一款的好的游戏其界面必须友好,简洁已经成为当今 UI 设计的主流,简单易上手才能得到玩家的青睐。(2)功能需求能够显示游戏的当前得得分,并记录游戏的最高分并显示,当在次打开游戏时,能够显示最高分;在游戏进行的过程中循环播放音乐,并能够关闭音乐或者打开音乐;游戏的主界面上,相同的数字要显示相同的颜色。游戏结束要有相应的提示。游戏的主要目的是通过上下左右移动来将相邻相同的数字相加,通过不断地累加最终加到 2048。(3)操作性需求游戏的体验是衡量一款游戏的关键,本游戏可通过。

4、键盘 w,s,a,d 以及方向键来控制方块的移动,还可以通过在游戏的主面板中向上下左右拖动鼠2标来控制方块的移动,左右手都可以操作,充分考虑便捷性。 不同的人有不一样习惯,通过多种方式来操作游戏,可以各种习惯的人的需求。2.2 可行性分析(1)面向对象的程序设计方法Java 面向对象程序设计的基本思想是通过构造和组织对象来求解问题的。对象是很好理解的,任何一种物体都可以被认为是对象,例如,汽车就是一种对象。对象具有两个最基本的属性:具有一定的物质基础和一定的功能,这两种基本属性在 Java 语言中表现为拥有一定的存储单元并具备一定的功能。理解了 Java 的这种面向对象程序设计的基本思想之后,。

5、在以后的编程过程中,就应当个构造人们容易理解的更接近于真实物理世界物体的对象。Java 面向对象程序设计的过程非常简单。这里介绍一种自顶向下的程序设计方法,首先构造一个类来处理需要解决的问题,然后根据已经拥有的类(例如以前求解其它问题时实现的类) ,分析和构造新的类,设法将问题分解下去,而最开始构造的类通过组织这些新构造的类、已有的类及由他们生成的实例来求解指定的问题。这个过程可以继续递归下去,用在新构造的类上,直到最后解决了指定的问题,例如 Java 的应用程序和小应用程序都必须有一个类作为入口求解问题。在计算机语言中,面向对象的类一般具有三个基本特性:封装性、继承性和多态性,这三种特性进一。

6、步简化了 Java 求解模型,提高了程序的复用性,节省了程序的代码量,从而提高了软件的生产率。(2)java 技术分析图形用户界面不仅可以提供各种数据的基本图形的直观表示形式,而且可以建立友好的交互方式,从而使计算机软件可以设计得十分简单易用。从 Java 语言诞生到现在, Java 语言已经提供了两代图形用户界面。第一代图形用户界面 AWT 提供了基本的图形用户界面,它强烈地依赖于具体的计算机操作系统,而且缺少基本的剪贴板和打印支持功能。现在第二代图形用户界面 Swing 对 AWT 进行了扩展,Swing 不仅在功能上比 AWT 强大,3而且在很大程度上克服了 AWT 的上述缺点,它所设计。

7、的图形用户界面与具体的计算机操作相关性很小,而且可以定制指定的操作系统风格的图形用户界面。GUI(图形用户界面)组件构成了图形用户界面的基础。在 Java 程序设计中,要求按照一定的布局方式将组件安排在容器中,然后通过事件处理的方式实现人机交互,而容器本身也是组件,这样在容器中也可以含有容器,从而可以通过这种嵌套方式方便地组合各种组件。事件处理模型是 Java 语言提供的一种人机交互模型,它使得用户能够通过鼠标、键盘或其他输入设备来控制程序的执行流程,从而达到人机交互的目的。对鼠标、键盘或其他输入设备的各种操作一般也称为事件。Java语言对这些事件的处理模型是采用面向对象的方法,即通过对象的形。

8、式把各种事件进行封装和处理。这种事件处理模型的三个基本要素是事件源、事件对象以及事件监听器。事件源是各种组件,是接受各种事件的对象。在各种事件源上运用鼠标、键盘或其他输入设备进行各种操作,就会有事件发生。每种操作一般都对应着事件,Java 语言通过事件对象来包装这些事件。对事件进行处理是通过事件监听器实现的。因为鼠标事件也是一种事件,所以对鼠标事件进行处理要遵循事件处理模型。鼠标事件的处理也是建立在事件源的基础之上,以事件对象本身,最后通过事件监听器进行处理。类 java.awt.event.MouseEvent 包装常用的鼠标事件,例如,按下鼠标键和放开鼠标键等。类 MouseEvent 的。

9、实例对象记录了鼠标的当前位置和状态发生变化的鼠标键等。对鼠标事件进行处理最关键的是实现事件监听器接口。这些相关接口包括MouseListener,MouseMotionListener,MouseWheelListener,MouseInputListener。前面三个是包 java.awt.event 中的接口,最后一个接口MouseInputlistener 来自包 javax.swing.event。接口 Java.awt.event.MouseListener 主要用来处理按下鼠标键、放开鼠标键、单击鼠标键、鼠标进入组件内和鼠标离开组件区域等事件。对鼠标事件进行处理,就是要设计类,实现。

10、上面的鼠标事件监听器接口,然后在事件源中注册处理鼠标事件监听器的对象,以便对鼠标事件进行处4理。3、 概要设计 4、详细设计(1) 流程图5(2) 界面的整体布局分别构建 mainPane,scoresPane 两大模块放入游戏窗体,其中scoresPane 包含 2048 字样的提示,当前得分和最高分,当得分超过最高分时,将得分存入工程文件夹下的 myRecording.txt,覆盖最高分,同时在最高分显示最新 myRecording.txt 的内容。通过 Create 方法随机产生 2 号方块或者 4 号方块,通过 setColor 方法设置每个数字代表的方块颜色。(3) 方法模块分析方法。

11、 1:设置标签颜色,每次随机产生 2 或 4 和数字合并之后就要调用该方法来设置标签的颜色public void setColor(int i, int j, String str) if (.equals(str) textsij.setBackground(new Color(120,221,247);return;int result = Integer.parseInt(str);switch (result) case 2: textsij.setBackground(new Color(240,240,0); break;case 4: textsij.setBackground(。

12、Color.pink); break;case 8: textsij.setBackground(new Color(240,150,10); break;case 16: textsij.setBackground(Color.green); break;case 32: textsij.setBackground(Color.magenta); break;case 64: textsij.setBackground(new Color(155,10,190);break;case 128: textsij.setBackground(Color.blue); break;case 256。

13、: textsij.setBackground(Color.gray); break;case 512: textsij.setBackground(Color.cyan); break;case 1024: textsij.setBackground(Color.DARK_GRAY); break;case 2048: textsij.setBackground(Color.red); break;case 4096: textsij.setBackground(Color.white); break;default: break;方法 2:在随机位置产生一个 2 号或 4 号方块的方法,同。

14、时该方法也用于判断游戏是否结束。public void Create() int i, j;/用于记录产生的二维方阵的下标值boolean r = true;String str;if (times 0 & biaoji = 1) 6while (r) i = random.nextInt(4);j = random.nextInt(4);str = textsij.getText();if (str.compareTo() = 0) int ima = 2 * (int) (1 + Math.random() * 2);/ 随机产生2或 4String imass = String.valueOf(ima);textsij.s。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564572.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python批量音频转格式_python将mp3格式批量转化为wav格式

语音识别无论是接口还是开源的项目,大多情况下都需要将语音格式转化为wav格式。首先,需要安装pydub库,pip install pydub 就行。接下来将你需要转化的mp3文件放入文件夹,创建好需要存入的wav文件夹。接下来python 代码实现 &#…

Java包详解

Java 引入了包(package)机制,提供了类的多层命名空间,用于解决类的命名冲突、类文件管理等问题。 包允许将类组合成较小的单元(类似文件夹),它基本上隐藏了类,并避免了名称上的冲突…

groovy java_在java中使用groovy怎么搞

临摹微笑一种基于Java虚拟机的动态语言,可以和java无缝集成,正是这个特性,很多时候把二者同时使用,把groovy作为java的有效补充。对于Java程序员来说,学习成本几乎为零。同时支持DSL和其他简介的语法(例如闭包)&#x…

python自动控制库_一个可以自动化控制鼠标键盘的库:PyAUtoGUI

PyAutoGUI 不知道你们有没有用过,它是一款用Python自动化控制键盘、鼠标的库。但凡是你不想手动重复操作的工作都可以用这个库来解决。如果,我想半夜时候定时给发个微信,或者每天自动刷页面等操作,它能完全模拟手动操作&#xff0…

Java使用自定义包

包的声明和使用非常简单,在了解基本语法之后,示例在 Java 程序中声明包,以及不同包之间类的使用。 1 创建一个名为 com.dao 的包。 2 向 com.dao 包中添加一个 Student 类,该类包含一个返回 String 类型数组的 GetAll() 方法。S…

python去掉一个最高分和最低分求平均数_excel去掉一个最高分和最低分求平均数 - 卡饭网...

怎么快速计算考试成绩的最高分、最低分、平均分?怎么快速计算考试成绩的最高分、最低分、平均分? 我们可以使用Excel工作表快速计算出学校考试成绩的最高分.最低分和平均分,不需要逐个计算和核查,下面就跟小编看一下操作方法.具体如下:1. 第一步,打开一个…

mysql 类似wm concat_oracle的wm_concat()和mysql的group_concat()合并同列变成一行的用法以及和concat()合并不同列的区别...

前言标题几乎已经说的很清楚了,在oracle中,concat()函数和 “ || ” 这个的作用是一样的,是将不同列拼接在一起;那么wm_concat()是将同属于一个组的(group by)同一个字段拼接在一起变成一行。mysql是一样的,只不过mysq…

试图将驱动程序添加到存储区_基于容器的块存储使用

什么是块存储?分布式存储系统,为业务与数据在集群内漂移提供了自由保障,满足企业对于不受约束的系统环境要求。同时,平台仅保存迁移被改动的数据,而非整体增加数据量,实现增量备份。魔方云块存储的功能&…

C++类和对象的概念

C 是一门面向对象的编程语言,理解 C,首先要理解类(Class)和对象(Object)这两个概念。 C 中的类(Class)可以看做C语言中结构体(Struct)的升级版。结构体是一种…

参数名称 java_java – 具有重要名称的WSDL中的参数名称

我正在使用JAXWS RI在Java中创建一个WebService.在自动部署应用程序WAR时创建WSDL文件.问题是我希望WSDL文件中的参数(每个操作接收到)具有重要的名称,但它们显示为arg0,arg1,arg2 …有没有办法定义这个参数的名称,不使用默认名称?我已经实施了以下内容:…

python列表生成时 if_Python列表生成式

最简单的列表生成式l [x for x in range(10)]print(l)# 相当于l []for x in range(10):l.append(x)print(l)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9][0, 1, 2, 3, 4, 5, 6, 7, 8, 9]使用运算式的列表生成式l [x * x for x in range(10)]print(l)# 相当于l []for x in range(10):l.a…

如何编译和运行C++程序?

C 和C语言类似,也要经过编译和链接后才能运行。那么C是如何运行的呢,C和C的运行步骤是一样的。我们需要留意的是C源文件的后缀,以及GCC 中的g命令。 下图是 C/C 代码生成可执行文件的过程: C源文件的后缀 C语言源文件的后缀非…

java 控制台五子棋_java控制台五子棋

package frank;import java.io.*;public class App{//棋盘private String[][] board;//棋盘大小private static int BOARD_SIZE 15;//初始化棋盘public void initBoard(){board new String[BOARD_SIZE][BOARD_SIZE];for(int i 0; i < BOARD_SIZE; i){for(int j 0; j<…

pythonista脚本合集_GitHub - xchenhao/You-are-Pythonista: 汇聚【Python应用】【Python实训】【Python技术分享】等等...

You-are-Pythonista汇聚【从零单排】【实战项目】【Python面试题】【大航海】【Python应用】【Python错题集】【技术沙龙】【内推渠道】等等【人人都是Pythonista】由公众号【Python专栏】推出&#xff0c;请认准唯一标识&#xff1a;请仔细阅读本文档&#xff0c;尤其是使用说…

python配色_python语言再次解决文章配色难题

配色的选择是在我们论文文章画图过程中经常面临的一个问题。常用的R或python语言都内置了默认的颜色系统&#xff0c;强大的默认设置可以满足我们的绘图需求。但当我们需要绘制更多的图形时&#xff0c;固定的配色就会显得重复&#xff0c;此时通过自定义颜色就可以丰富图形的表…

java hashcode返回值_Java HashMap返回值未根据我对equals和hashcode的理解进行确认

以下代码示例的输出是&#xff1a;{1–e e2&#xff0c;2–e1 e1}package com.sid.practice;import java.util.HashMap;import java.util.Map;public class InputOutputPractice{public InputOutputPractice(){}public static void main(String[] args){Employee e new Inpu…

C++输入输出

C语言中&#xff0c;我们通常会使用 scanf 和 printf 来对数据进行输入输出操作。在C语言中&#xff0c;C语言的这一套输入输出库我们仍然能使用&#xff0c;但是 C 又增加了一套新的、更容易使用的输入输出库。 简单的输入输出代码示例&#xff1a; #include<iostream>…

python中的pymysql_(转)Python中操作mysql的pymysql模块详解

原文&#xff1a;https://www.cnblogs.com/wt11/p/6141225.htmlhttps://shockerli.net/post/python3-pymysql/----Python 3 进阶 —— 使用 PyMySQL 操作 MySQL前言pymsql是Python中操作MySQL的模块&#xff0c;其使用方法和MySQLdb几乎相同。但目前pymysql支持python3.x而后者…

堆排序java实例_堆排序(示例代码)

前言&#xff1a;网上有很多堆排序的案例&#xff0c;我只想写自己堆排序。一&#xff1a;堆结构即&#xff1a;一个父节点最多只能有两个子节点(可以没有)&#xff0c;如下图图1图2图3 图4二&#xff1a; 数组与堆结构转换假设已知堆数组 int[] a {9,7,6,4,5,1,3,2,} 则相…

C++变量位置

C 在C语言部分做了细节上的改进&#xff0c;变量的定义位置就是其中之一。 请看下面的代码&#xff1a; #include <stdio.h> int main(){int a;scanf("%d", &a);int b;scanf("%d", &b);int c a b;printf("%d\n", c);return 0;…