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

合集下载

java2048游戏课程设计

java2048游戏课程设计

java2048游戏课程设计一、课程目标知识目标:1. 学生能理解2048游戏的基本规则和逻辑,掌握其核心算法。

2. 学生能运用Java语言实现2048游戏的各项功能,包括游戏界面展示、数字格移动、合并等。

3. 学生了解面向对象编程思想,并能运用到2048游戏的开发中,如定义类、创建对象等。

技能目标:1. 学生能够运用所学知识独立完成2048游戏的编写,提高编程实践能力。

2. 学生能够通过分析问题、设计算法、编写代码、调试程序等过程,培养解决问题的能力。

3. 学生能够运用Java语言编写功能模块,提高模块化编程能力。

情感态度价值观目标:1. 学生通过完成2048游戏的开发,增强对编程学习的兴趣和自信心,培养自主学习能力。

2. 学生在团队协作中,学会沟通、分享、互助,培养良好的团队协作精神。

3. 学生能够在编程过程中,体会到编程的美和乐趣,激发创新思维,培养探究精神。

本课程针对高中年级学生,结合Java编程语言的教学,以2048游戏为载体,让学生在实践中掌握编程知识和技能。

课程注重培养学生的编程思维和实际操作能力,提高学生分析问题、解决问题的能力,同时激发学生对编程的兴趣和热情,培养良好的团队协作精神。

通过本课程的学习,使学生能够达到上述课程目标,为后续的编程学习打下坚实基础。

二、教学内容1. 面向对象编程基础:复习Java类与对象的概念,理解封装、继承、多态等面向对象特性。

- 教材章节:第三章《面向对象编程》- 内容:类的定义、对象的创建、访问控制符、构造方法、继承、多态。

2. Java基本语法:巩固Java基本语法,包括数据类型、运算符、控制结构等。

- 教材章节:第二章《Java基本语法》- 内容:变量、数据类型、运算符、控制结构(循环、分支)。

3. Java Swing图形用户界面:学习Swing图形用户界面编程,为2048游戏设计界面。

- 教材章节:第六章《图形用户界面编程》- 内容:Swing组件、容器、布局管理器、事件处理。

2048设计报告

2048设计报告
5)最后是可不可以继续游戏的检测。当屏幕上没有没有写有数据的方格并且屏幕上的数据没有哪两个相邻的数据是一样的两个数,那么就判定为游戏结束。
三、研究/设计方案(包括研究/设计方法、技术路线,理论分析、计算、实验方法和步骤及其可行性,可能出现的技术问题及解决办法)
可行性,可能出现的技术问题及解决办法)
步骤:
[10]
[11]
[12]/p-26393184.html
二、研究内容
要开发这一款游戏,要根据以下几步来完成:
1)首先是要对这款游戏的代码分析。对整一个游戏,要将各个部位分割成其对应部位的功能代码,并且逐一去分析实现其中不同的功能。
[2]/userlog6/81073/archives/2007/291252.shtml.
[3]信息管理系列.《商业网站的创建与管理》.中国人民大学出版社.2001.15-24.63-72.
[4]/Electronic/081021/10363416-2.html.
2)其次是游戏的流程。在做好每一个部分的代码之后,就需要把所创造的各个关键部分拼接起来,因此,就需要先把该游戏的流程一步一步的弄清楚。
3)再者是对《2048》这一款游戏的算法分析。对于整个游戏而言,最主要的心脏就是这一款游戏的算法,游戏好不好,就看这一款游戏的算法是不是符合逻辑。《2048》这一款游戏的算法分为上下左右自 2 个方向的,具体的下面分析。4)《2048》中每个格子的数据和颜色的刷新。在每一次移动之后,几乎在这4*4的每一个方格上的数据都会变化,因此在每一次移动之后,每一个方格上的数据都要刷新一次。相对的,每一个数的背景颜色是不同的,也就是说,在每一次数据刷新的时候,每一个方格上的颜色也要同样的刷新一次。
由于本人十分喜欢《2048》这款手游,在了解了本次课程设计是设计一个Android平台下的软件之后,

2048游戏的设计与实现 课程设计

2048游戏的设计与实现 课程设计

Java语言程序设计课程设计题目2048游戏的设计与实现目录1. 需求分析 ...........................................................................................错误!未定义书签。

2. 系统运行环境 ....................................................................................错误!未定义书签。

3. 功能需求描述 ....................................................................................错误!未定义书签。

4. 总体设计 ...........................................................................................错误!未定义书签。

5. 程序模块设计 ....................................................................................错误!未定义书签。

6. 总结...................................................................................................错误!未定义书签。

一、需求分析《2048》是比较流行的一款数字游戏。

原版2048首先在github上发布,原作者是Gabriele Cirulli。

它是基于《1024》和《小3传奇》的玩法开发而成的新型数字游戏[1] 。

随后2048便出现各种版本,走各大平台。

由Ketchapp公司移植到IOS的版本最为火热,现在约有1000万下载,其名字跟原版一模一样。

JAVA课程设计报告(小游戏)1

JAVA课程设计报告(小游戏)1

JAVA课程设计报告(小游戏)第一章总体设计1.1本系统的主要功能记忆测试游戏1.2系统包含的类及类之间的关系本系统共包括7个java源文件。

如图1-1所示。

图1-1 类之间的关系2.2 java源文件及其功能1.MemoryGame.java该文件负责创建记忆测试系统的主窗口,该类含有main方法,记忆测试系统从该类开始运行;2.MemoryTestArea.java该文件所包含的MemoryTestArea类是主类MemoryGame窗口的一个JPanel容器,所创建的对象成为测试区,这个测试区被添加到MemoryGame窗口的中心;3.Block.java该文件所包含的Block类是JButton的子类,负责为MemoryTestArea 类中的ArrayList数组表提供Block对象;4.Record.java该文件所包含的Record类是javax.swing包中JDialog对话框的子类,当用户成功单击出相应级别所要求的图标相同的方块后,Record创建的对象负责保存用户的名字和成绩到相应的级别文件中;5.ShowRecordDialog.java该文件所包含的ShowRecordDialog类是javax.swing包中JDialog 对话框的子类,当用户单击查看排行榜时,ShowRecordDialog创建的对象负责显示用户的成绩;6.People.java该文件所包含的People对象封装用户的名字和成绩,以便ShowRecordDialog 对象可以按成绩的高低排列用户。

第二章详细设计2.1主类MemoryGame.java(1)成员变量见表2-1表2-1 主要成员变量(属性)成员变量描述变量类型名称菜单条JMenuBar bar 字符串数组Sring imagename 测试区对象MemoryArea memoryarea 菜单JMenu menuGrade(2)方法见表2-2表2-2 主要方法成员变量描述功能备注MemoryGame() 完成窗口初始化构造函数actionPerformed(实现接口中的方法ActionEvent)Main(String[]) 软件运行的入口(3)源代码见文件×××.java2.2类×××××(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称测试区的行列数int Row,col用户的用时int usedtime 提供存储成绩的界面Record record(2)方法见表2-4表2-4 主要方法方法名功能备注MemoryTestArea() 创建memoryGame对象构造函数run() 显示图标1200毫秒2.3类Block(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称openStateIcon是方块上的图标ImageIcon openStateIcon (2)方法见表2-4表2-4 主要方法方法名功能备注setOpenStateIcon( ImageIcon)Block 对象调用setOpenStateIcon(ImageIcon)方法可也设置它上面的图标getOpenStateIcon()Block 对象调用getOpenStateIcon()方法可以获得它上面的图标2.4类ShowRecordDialog(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称gradeFile是对话框要读取的文件,该文件存储读取的成绩File gradeFile Clear是注册ActionEvent JButton clear事件的按钮showArea文本区显示对话从gradeFile文本中读出的成绩JTextArea showArea(2)方法见表2-4表2-4 主要方法方法名功能备注ShowRecorDialog()ShowRecorDialog()是构造方法,负责创建shoeDialog对象setGradeFile(File)ShowRecorDialog类创建的ShowRecorDialog对话框是主类MemoryGame窗口中的一个成员2.5 People类(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称用户的名字String name用户的用时int time(2)方法见表2-4表2-4 主要方法方法名功能备注getTime()返回timegetName()返回namecompareTo(Object)确定People对象的大小关系2.6 Record类(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称用户的用时int time 用来输入名字的文本框JTextField yourName保存成绩的按钮对象JButton enter 放弃保存成绩的按钮对象JButton cancel 级别文件File gradeFile(2)方法见表2-4表2-4 主要方法方法名功能备注Record()负责创建record对象的构造方法setGradeFile (File)Record类创建的Record对话框是测试区MemoryTextArea 中的一个成员。

小游戏Java课程设计报告书-V1

小游戏Java课程设计报告书-V1

小游戏Java课程设计报告书-V1本篇文章主要介绍小游戏Java课程设计报告书的相关内容。

1. 引言本次小游戏Java课程设计的目的是提高学生对Java语言的掌握能力和实际开发能力。

该小游戏为一款基于Java语言的桌面游戏。

2. 开发环境本次小游戏的开发环境采用Eclipse编译器,并使用Java语言作为主要开发语言。

游戏使用了Swing界面库和各种Java类库来实现不同的功能。

3. 游戏功能分析游戏的主要功能分为三个部分:游戏界面、游戏规则和游戏控制。

3.1 游戏界面游戏的界面主要由几个部分组成:标题栏、游戏画面和控制按钮。

其中,游戏画面包括了地图、玩家、敌人以及游戏元素等。

控制按钮用来控制玩家移动或者其他相关操作。

3.2 游戏规则游戏的规则很简单,玩家需要通过操作控制按钮,使得玩家在地图上移动,同时避免敌人的攻击,并到达游戏终点。

3.3 游戏控制游戏的控制主要包括以下几个方面:1. 玩家移动控制;2. 敌人移动控制;3. 游戏胜负判断;4. 游戏关卡和等级控制。

4. 实现方法和关键技术本次小游戏的实现主要涉及以下几个技术和方法:1. Java GUI编程;2. Java面向对象编程;3. Java事件处理;4. 游戏逻辑设计。

5. 结论通过对小游戏Java课程设计的开发实现,学生对Java编程技术进一步深入学习和掌握,同时提高了学生的合作开发与沟通协作能力。

本次小游戏的开发实践活动是一次有效的教学方法,为以后的Java学习和实践工作奠定了坚实的基础。

java课程设计报告2048

java课程设计报告2048

java课程设计报告2048一、教学目标本课程旨在通过2048游戏的项目实践,让学生掌握Java编程的基本概念和方法。

知识目标包括理解Java的基本语法、数据结构、控制流程和类与对象的概念。

技能目标则是培养学生运用Java编程解决实际问题的能力,以及良好的编程习惯和团队协作能力。

情感态度价值观目标则是激发学生对计算机科学的兴趣,培养他们勇于探索和创新的科学精神。

二、教学内容教学内容以《Java编程思想》教材为基础,涵盖Java基本语法、数据类型、控制结构、面向对象编程、异常处理等核心知识点。

课程将从简单的Java程序设计开始,逐步深入到复杂的数据结构和算法,最后通过实现2048游戏,让学生运用所学知识解决实际问题。

三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。

讲授法用于讲解Java的基本语法和概念,案例分析法用于分析实际编程问题,实验法用于让学生动手实践,巩固所学知识。

通过多样化的教学方法,激发学生的学习兴趣,提高他们的主动性和创新能力。

四、教学资源教学资源包括《Java编程思想》教材、相关参考书籍、网络资源以及实验设备。

教材为学生提供系统的学习材料,参考书籍用于拓展知识视野,网络资源提供丰富的学习资料和实践案例。

实验设备则为学生提供动手实践的机会,让他们在实践中加深对Java编程的理解。

五、教学评估本课程的评估方式包括平时表现、作业、考试和项目实践四个方面。

平时表现主要评估学生的课堂参与度和团队协作能力,作业则评估学生对知识点的理解和应用能力,考试则评估学生的知识掌握程度,项目实践则评估学生的实际编程能力和解决问题的能力。

评估方式将尽量客观、公正,全面反映学生的学习成果。

六、教学安排本课程的教学安排将紧凑合理,确保在有限的时间内完成教学任务。

课程将按照教材的章节顺序进行,每个章节都将有足够的时间进行讲解和实践。

同时,教学安排还会考虑学生的实际情况和需要,如学生的作息时间、兴趣爱好等,尽量使教学安排符合学生的需求。

程序设计报告——控制台游戏2048

程序设计报告——控制台游戏2048
大连理工大学程序设计总结报告
控制台游戏——2048
学生姓名:刘阳
院系班级:电计1203
学号:201281303
联系电话:188-4085-1891
Email:rick@
完成日期:2014年7月1日
一、
设计目标:完成一个控制台小游戏,其中包括游戏、排名、存档和读档等功能。
函数原型19int average()
函数功能:根据数据文件求玩家纪录中的平均水平
入口参数:void
出口参数:void
算法描述:以读的方式打开数据文件,读进相应的数组,调用quntity函数求出文件中数据的个数,计算出平均值,结果直接输出在屏幕上。
下面是int game(int a[4][4],int step,int grade)函数的流程图。
函数原型7int read_rank(int x,int num)
函数功能:读取游戏排名
入口参数:int x,int num
出口参数:x值为1或2,num为数据文件中记录个数
算法描述:通过参数x的控制以读的方式打开相应的数据文件,将排名数据存入相应数组中,再通过gotoxy函数以及for循环打印。
函数原型8int save_record(int x,int a[4][4],int step,int grade);
函数功能:读取游戏存档。
入口参数:int x,int a[4][4],int b[2]
出口参数:x值为1或2,保存游戏数据的二维数组a[4][4],保存步数step和分数grade的数组b[2]。
算法描述:通过参数x的控制以读的方式打开相应的数据文件,将游戏数据信息读取到数组a[4][4]中,将分数等信息读取到b[2]中。
函数原型17int initialization(int a[4][4])

java课程设计

java课程设计

Java语言程序设计课程设计题目2048游戏的设计与实现学院数信学院专业计算机科学与技术班级计科121学号5131学生姓名郑帅兵指导教师赵利平编写日期2014-7-8目录1. 需求分析 (3)2. 系统运行环境 (3)3. 功能需求描述 (3)4. 总体设计 (3)5. 程序模块设计 (3)6. 总结 (3)一、需求分析《2048》是比较流行的一款数字游戏。

原版2048首先在github上发布,原作者是Gabriele Cirulli。

它是基于《1024》和《小3传奇》的玩法开发而成的新型数字游戏[1]?。

随后2048便出现各种版本,走各大平台。

由Ketchapp公司移植到IOS的版本最为火热,现在约有1000万下载,其名字跟原版一模一样。

衍生版中最出名的是《2048六边形》版本,先后在全球81个国家中的board game中排进了前200。

安卓版非常火爆的有《挑战2048》,其版以后还加入了双人对战。

其次比较特别的有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、游戏的退出:游戏退出时,我们采用弹出对话框的确认玩家是否真的要退出游戏,当然这样做更符合游戏人性化设计的观念。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

v1.0 可编辑可修改《JA V A语言程序设计》课程设计报告2048智力小游戏设计专业班级:计算机科学与技术嵌入13-1学生姓名:卓海有学生学号:小组成员:单建飞堵文斐李栋承梅孔伟指导教师姓名:宋强目录源代码清单 (9)一、前言最近以来,移动手游越来越成为当下游戏产业中重要的一环,市场也在加大对这一产业的投入,涌现出了愤怒的小鸟,水果忍者,flappy bird,2048等诸多优秀的手游,然而任何一款手游能够风靡,主要还是依靠其简单的操作性,因此本次java课设我选择其中的典型2048PC版作为本次课设的课题。

2048游戏规则很简单,玩家每次可以选择上下左右其中一个方向去移动,每移动一次,所有的数字方块都会往移动的方向靠拢外,系统也会在空白的地方随机出现一个数字方块,相同数字的方块在靠拢、相撞时会相加。

系统给予的数字方块不是2就是4,玩家要想办法在这小小的16格范围中凑出“2048”这个数字方块。

二、游戏需求分析需求分析现代社会对休闲小游戏的需求是:提高游戏的操作可行性,降低游戏的操作难度,降低游戏的上手难度,降低游戏的竞争需求,对使用设备的要求趋于简单化和多样化,游戏界面更加人性化,功能更加贴合使用。

(1)界面一款的好的游戏其界面必须友好,简洁已经成为当今UI设计的主流,简单易上手才能得到玩家的青睐。

(2)功能需求能够显示游戏的当前得得分,并记录游戏的最高分并显示,当在次打开游戏时,能够显示最高分;在游戏进行的过程中循环播放音乐,并能够关闭音乐或者打开音乐;游戏的主界面上,相同的数字要显示相同的颜色。

游戏结束要有相应的提示。

游戏的主要目的是通过上下左右移动来将相邻相同的数字相加,通过不断地累加最终加到2048。

(3)操作性需求游戏的体验是衡量一款游戏的关键,本游戏可通过键盘w,s,a,d以及方向键来控制方块的移动,还可以通过在游戏的主面板中向上下左右拖动鼠标来控制方块的移动,左右手都可以操作,充分考虑便捷性。

不同的人有不一样习惯,通过多种方式来操作游戏,可以各种习惯的人的需求。

可行性分析(1)面向对象的程序设计方法Java面向对象程序设计的基本思想是通过构造和组织对象来求解问题的。

对象是很好理解的,任何一种物体都可以被认为是对象,例如,汽车就是一种对象。

对象具有两个最基本的属性:具有一定的物质基础和一定的功能,这两种基本属性在Java语言中表现为拥有一定的存储单元并具备一定的功能。

理解了Java的这种面向对象程序设计的基本思想之后,在以后的编程过程中,就应当个构造人们容易理解的更接近于真实物理世界物体的对象。

Java面向对象程序设计的过程非常简单。

这里介绍一种自顶向下的程序设计方法,首先构造一个类来处理需要解决的问题,然后根据已经拥有的类(例如以前求解其它问题时实现的类),分析和构造新的类,设法将问题分解下去,而最开始构造的类通过组织这些新构造的类、已有的类及由他们生成的实例来求解指定的问题。

这个过程可以继续递归下去,用在新构造的类上,直到最后解决了指定的问题,例如Java的应用程序和小应用程序都必须有一个类作为入口求解问题。

在计算机语言中,面向对象的类一般具有三个基本特性:封装性、继承性和多态性,这三种特性进一步简化了Java求解模型,提高了程序的复用性,节省了程序的代码量,从而提高了软件的生产率。

(2)java技术分析图形用户界面不仅可以提供各种数据的基本图形的直观表示形式,而且可以建立友好的交互方式,从而使计算机软件可以设计得十分简单易用。

从Java语言诞生到现在,Java语言已经提供了两代图形用户界面。

第一代图形用户界面AWT提供了基本的图形用户界面,它强烈地依赖于具体的计算机操作系统,而且缺少基本的剪贴板和打印支持功能。

现在第二代图形用户界面Swing对AWT进行了扩展,Swing不仅在功能上比AWT强大,而且在很大程度上克服了AWT的上述缺点,它所设计的图形用户界面与具体的计算机操作相关性很小,而且可以定制指定的操作系统风格的图形用户界面。

GUI(图形用户界面)组件构成了图形用户界面的基础。

在Java程序设计中,要求按照一定的布局方式将组件安排在容器中,然后通过事件处理的方式实现人机交互,而容器本身也是组件,这样在容器中也可以含有容器,从而可以通过这种嵌套方式方便地组合各种组件。

事件处理模型是Java语言提供的一种人机交互模型,它使得用户能够通过鼠标、键盘或其他输入设备来控制程序的执行流程,从而达到人机交互的目的。

对鼠标、键盘或其他输入设备的各种操作一般也称为事件。

Java 语言对这些事件的处理模型是采用面向对象的方法,即通过对象的形式把各种事件进行封装和处理。

这种事件处理模型的三个基本要素是事件源、事件对象以及事件监听器。

事件源是各种组件,是接受各种事件的对象。

在各种事件源上运用鼠标、键盘或其他输入设备进行各种操作,就会有事件发生。

每种操作一般都对应着事件,Java语言通过事件对象来包装这些事件。

对事件进行处理是通过事件监听器实现的。

因为鼠标事件也是一种事件,所以对鼠标事件进行处理要遵循事件处理模型。

鼠标事件的处理也是建立在事件源的基础之上,以事件对象本身,最后通过事件监听器进行处理。

类包装常用的鼠标事件,例如,按下鼠标键和放开鼠标键等。

类MouseEvent的实例对象记录了鼠标的当前位置和状态发生变化的鼠标键等。

对鼠标事件进行处理最关键的是实现事件监听器接口。

这些相关接口包括MouseListener,MouseMotionListener,MouseWheelListener,MouseInputListener。

前面三个是包中的接口,最后一个接口MouseInputlistener来自包。

接口主要用来处理按下鼠标键、放开鼠标键、单击鼠标键、鼠标进入组件内和鼠标离开组件区域等事件。

对鼠标事件进行处理,就是要设计类,实现上面的鼠标事件监听器接口,然后在事件源中注册处理鼠标事件监听器的对象,以便对鼠标事件进行处理。

三、概要设计四、详细设计(1)流程图(2)界面的整体布局分别构建mainPane,scoresPane两大模块放入游戏窗体,其中scoresPane包含2048字样的提示,当前得分和最高分,当得分超过最高分时,将得分存入工程文件夹下的,覆盖最高分,同时在最高分显示最新的内容。

通过Create方法随机产生2号方块或者4号方块,通过setColor方法设置每个数字代表的方块颜色。

(3)方法模块分析方法1:设置标签颜色,每次随机产生2或4和数字合并之后就要调用该方法来设置标签的颜色public void setColor(int i, int j, String str) {if ("".equals(str)) {texts[i][j].setBackground(new Color(120,221,247));return;}int result = (str);switch (result) {case 2: texts[i][j].setBackground(new Color(240,240,0)); break;case 4: texts[i][j].setBackground; break;case 8: texts[i][j].setBackground(new Color(240,150,10)); break;case 16: texts[i][j].setBackground; break;case 32: texts[i][j].setBackground; break;case 64: texts[i][j].setBackground(new Color(155,10,190));break;case 128: texts[i][j].setBackground; break;case 256: texts[i][j].setBackground; break;case 512: texts[i][j].setBackground; break;case 1024: texts[i][j].setBackground; break;case 2048: texts[i][j].setBackground; break;case 4096: texts[i][j].setBackground; break;default: break;}}方法2:在随机位置产生一个2号或4号方块的方法,同时该方法也用于判断游戏是否结束。

public void Create() {int i, j;etText();if (("") == 0)) {int ima = 2 * (int) (1 + () * 2);etText(imass);setColor(i, j, imass);times--;r = false;p1 = p2 = p3 = p4 = 0;}}quals(texts[p][q].getText()) )temp2[p][q] = 0;else temp2[p][q] = (texts[p][q].getText());}}temp1scores = temp2scores;temp2scores = scores;}else if (p1 > 0 && p2 > 0 && p3 > 0 && p4 > 0){v1.0 可编辑可修改械工业出版社..[2] 黄晓东.Java课程设计案例精编[M].北京:中国水利水电出版社,.[3] 求是科技. Java信息管理系统开发实例导航[M].北京:人民邮电出版社..源代码清单package my2048game;import .*;import .*;import .*;import .*;public class My2048Game extends JFrame{equestFocus();}pg"));(433,120,45,30);(jb1);etFont(font2);texts[i][j].setHorizontalAlignment; etText("");texts[i][j].setBounds(110 * j+15, 110 * i+15, 100, 100);etOpaque(true); etBorder(2, 2, 2,quals(texts[i][j].getText()) ) temp1[i][j] = temp2[i][j] = 0;else temp1 [i][j] = temp2[i][j] = (texts[i][j].getText());}}}quals(str)) {texts[i][j].setBackground(new Color(120,221,247));return;}int result = (str);switch (result) {case 2: texts[i][j].setBackground(new Color(240,240,0)); break;case 4: texts[i][j].setBackground; break;case 8: texts[i][j].setBackground(new Color(240,150,10)); break;case 16: texts[i][j].setBackground; break;case 32: texts[i][j].setBackground; break;case 64: texts[i][j].setBackground(new Color(155,10,190)); break;case 128: texts[i][j].setBackground; break;case 256: texts[i][j].setBackground; break;case 512: texts[i][j].setBackground; break;case 1024: texts[i][j].setBackground; break;case 2048: texts[i][j].setBackground; break;case 4096: texts[i][j].setBackground; break;default: break;}}etText();etText();etText(str);etText("");etText(str);etText("");etText();str1 = texts[i][j + 1].getText();if ("") == 0) {if ("") != 0)biaoji = 1;texts[i][j + 1].setText(str);setColor(i, j + 1, str);texts[i][j].setText("");setColor(i, j, "");} else if (str1) == 0 && j != a&& j != a + 1) {num = (str);scores += num;times++;str = (2 * num);texts[i][j + 1].setText(str);setColor(i, j + 1, str);texts[i][j].setText("");setColor(i, j, "");a = j;biaoji = 1;}}}}p2 = 1; Create(); break;case :case :biaoji = 0;for (int j = 0; j < 4; j++) {a = 5;for (int k = 0; k < 3; k++) {for (int i = 1; i < 4; i++) {str = texts[i][j].getText();str1 = texts[i - 1][j].getText();if ("") == 0) {if ("") != 0)biaoji = 1;texts[i - 1][j].setText(str);setColor(i - 1, j, str);texts[i][j].setText("");setColor(i, j, "");} else if (str1) == 0 && i != a&& i != a - 1) {num = (str);scores += num;times++;str = (2 * num);texts[i - 1][j].setText(str);setColor(i - 1, j, str);texts[i][j].setText("");setColor(i, j, "");a = i;biaoji = 1;}}}}p3 = 1; Create(); break;case :case :biaoji = 0;for (int j = 0; j < 4; j++) {a = 5;for (int k = 0; k < 5; k++) {for (int i = 2; i >= 0; i--) {str = texts[i][j].getText();str1 = texts[i + 1][j].getText();if ("") == 0) {if ("") != 0)biaoji = 1;texts[i + 1][j].setText(str);setColor(i + 1, j, str);texts[i][j].setText("");setColor(i, j, "");} else if (str1) == 0 && i != a&& i != a + 1) {num = (str);scores += num;times++;str = (2 * num);texts[i + 1][j].setText(str);setColor(i + 1, j, str);texts[i][j].setText("");setColor(i, j, "");a = i;biaoji = 1;}}}}p4 = 1; Create(); break;case :if (p1 <= 0 || p2 <= 0 || p3 <= 0 || p4 <= 0){for(int i = 0; i < 4; ++i){for(int j = 0; j < 4; ++j){if(temp1[i][j] == 0) texts[i][j].setText("");else texts[i][j].setText( (temp1[i][j]) );temp2[i][j] = temp1[i][j];setColor(i, j, texts[i][j].getText());}}scores = temp1scores;temp2scores = temp1scores;}break;default: break;}if(maxscores<=scores){maxscores=scores;(maxscores);();}("<html>SCORE<br>"+(scores)+"</html>");("<html>BEST<br>"+(maxscores)+"</html>");etText();etText();etText(str);etTe xt("");etText(str);etText("");etText();str1 = texts[i][j + 1].getText();if ("") == 0) {if ("") != 0)biaoji = 1;texts[i][j + 1].setText(str);setColor(i, j + 1, str);texts[i][j].setText("");setColor(i, j, "");} else if (str1) == 0 && j != a&& j != a + 1) {num = (str);scores += num;times++;str = (2 * num);texts[i][j + 1].setText(str);setColor(i, j + 1, str);texts[i][j].setText("");setColor(i, j, "");a = j;biaoji = 1;}}}}p2 = 1; Create(); break;case 3:biaoji = 0;for (int j = 0; j < 4; j++) {a = 5;for (int k = 0; k < 3; k++) {for (int i = 1; i < 4; i++) {str = texts[i][j].getText();str1 = texts[i - 1][j].getText();if ("") == 0) {if ("") != 0)biaoji = 1;texts[i - 1][j].setText(str);setColor(i - 1, j, str);texts[i][j].setText("");setColor(i, j, "");} else if (str1) == 0 && i != a&& i != a - 1) {num = (str);scores += num;times++;str = (2 * num);texts[i - 1][j].setText(str);setColor(i - 1, j, str);texts[i][j].setText("");setColor(i, j, "");a = i;biaoji = 1;}}}}p3 = 1; Create(); break;case 4:biaoji = 0;for (int j = 0; j < 4; j++) {a = 5;for (int k = 0; k < 5; k++) {for (int i = 2; i >= 0; i--) {str = texts[i][j].getText();str1 = texts[i + 1][j].getText();if ("") == 0) {if ("") != 0)biaoji = 1;texts[i + 1][j].setText(str);setColor(i + 1, j, str);texts[i][j].setText("");setColor(i, j, "");} else if (str1) == 0 && i != a&& i != a + 1) {num = (str);scores += num;times++;str = (2 * num);texts[i + 1][j].setText(str);setColor(i + 1, j, str);texts[i][j].setText("");setColor(i, j, "");a = i;biaoji = 1;}}}}p4 = 1; Create(); break;default: break;}if(maxscores<=scores){maxscores=scores;(maxscores);();}("<html>SCORE<br>"+(scores)+"</html>");("<html>BEST<br>"+(maxscores)+"</html>");etText();if (("") == 0)) {int ima = 2 * (int) (1 + () * 2);etText(imass);setColor(i, j, imass);times--;r = false;p1 = p2 = p3 = p4 = 0;}}quals(texts[p][q].getText()) )temp2[p][q] = 0;else temp2[p][q] = (texts[p][q].getText());}}temp1scores = temp2scores;temp2scores = scores;}else if (p1 > 0 && p2 > 0 && p3 > 0 && p4 > 0){quals("shengyin")){if(jb1_flag2){setJb1_flag(false);jb1_flag2=false;(new ImageIcon("src/静音图标.jpg"));(false);pg"));(false);//让按钮失去焦点}(false);//设置焦点,不能用请求焦点}}}//记录类class Recorder{//定义一个变量记录最高分private static int maxscores_2048=0;public static int getMaxscores_2048() {return maxscores_2048;}public static void setMaxscores_2048(int maxscores_2048) { = maxscores_2048;}//定义文件输入流变量private static FileReader fr=null;private static BufferedReader br=null;private static FileWriter fw=null;private static BufferedWriter bw=null;//从文件中读取,记录public static void getRecording(){boolean flag=false;//用于判断文件是否是新创建的try {File f=new File("src/");if()){fr=new FileReader(f);br=new BufferedReader(fr);String n=();maxscores_2048=(n);}else{flag=();}} catch (Exception e) {// TODO: handle exception();}finally{try {//关闭文件流的顺序,先开的后关闭if(!flag){();();}} catch (Exception e2) {// TODO: handle exception();}}}//保存最高分纪录public static void keepRecording(){//创建try {File f=new File("src/");fw=new FileWriter(f);bw=new BufferedWriter(fw);(maxscores_2048+"\r\n");} catch (IOException e) {// TODO Auto-generated catch block();}finally{//关闭流try {();();} catch (IOException e) {// TODO Auto-generated catch block();}}}}//播放声音的类class AePlayWave extends Thread{private static String filename;public AePlayWave(String wavefile){filename=wavefile;}public AePlayWave(){}public void run(){while(true){File soundFile=new File(filename); AudioInputStream audioInputStream=null; try {audioInputStream=(soundFile);} catch (Exception e) {// TODO: handle exception();return ;}AudioFormat format=();SourceDataLine auline=null;info=new , format);try {auline=(SourceDataLine)(info);();} catch (Exception e) {// TODO: handle exception();return ;}();int nBytesRead=0;byte[]abData=new byte[1024];try {while(nBytesRead!=-1){nBytesRead=(abData);if()){if(nBytesRead>=0){(abData,0,nBytesRead);}}else{while(!());}}} catch (Exception e) {// TODO: handle exception();return ;}finally{();();}}}}。

相关文档
最新文档