欢迎来到天天文库
浏览记录
ID:15346926
大小:785.50 KB
页数:33页
时间:2018-08-02
《java俄罗斯方块编程报告书精选资料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、淮海工学院计算机工程学院课程设计报告设计名称:面向对象课程设计选题名称:益智类小游戏——俄罗斯方块姓名:苦茶(笔名)学号:************专业班级:计算机科学与技术G计111系(院):计算机工程学院设计时间:2013.6.17~2013.6.30设计地点:计算机楼204机房成绩:指导教师评语:签名:年月日1.课程设计目的《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java
2、语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力。2.课程设计任务与要求:课程设计可选用NetBeans、Eclipse、JBuilder等作为开发平台以提高开发效率,尽可能熟练掌握其中一种集成开发环境。建议采用UML建模技术进行系统的分析设计,在Visio中画出系统用例图和类图,并将UML图复制到设计报告中。通过这次设计,要求掌握以下内容:1)面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用2)类、包、接口的定义与使用3)常用工具类与算法的实现(数组、向量、字符串、链表)4
3、)Java常用标准GUI组件及其事件处理5)Java的异常处理机制6)Java的数据库连接技术7)Java的多线程技术与动画制作8)Java的网络编程3.课程设计说明书流程图:(主界面)游戏界面:游戏:文字说明:主界面做了五个按钮,分别是创建用户、开始游戏、游戏记录、游戏设置和退出。其中创建用户和游戏记录是和数据库有关的事件,游戏设置里面有三个单选框设置游戏的难度,退出按钮不解释。游戏界面是重点制作的界面,使用扩展JPanel面板绘制游戏主界面,以20像素为一个单位,做成10*18的矩形框,添加相应的按钮如图。首先用一个4*
4、4的二维数组制定7个方块,有图像为1反之为0,在用随机函数Randomran=newRandom(7);产生0~6的随机数用switch语句产生相应的方块,在用paintComponent(Graphicsg)方法画出产生的方块。解决了方块问题随之而来的就是如何让它移动,加入implementsKeyListener的接口实现键盘输入控制方块的移动,但在这之前必须加入焦点事件。这里面还加入了时间监听方法为了是让方块每隔多长时间下落一个单位。移动的问题解决了就会发现只要在界面里移动都是可以的,所以必须给方块的移动加上范围,让它
5、不能出黑边矩形框,那么如何判断方块是否出界呢?很简单只用记住产生方块的二维数组的二维坐标就能轻易解决,判断if(x<-3
6、
7、x>=7
8、
9、y<0
10、
11、y>=18)如果符合要求那么说明方块出界,应该回返false让方块不能执行down()方法。这时你会发现新的方块会落在旧的方块以占据的位置,解决这个问题的方法就是重新创建一个10*18的二维数组,一旦方块落在就用这个二维数组记下方块落下的坐标,赋值为1,在判断边界的的方法里在增加一个判断语句就是判断将要落下的坐标是否在10*18的二维数组中值为1如果为1不执行down()方法,产生
12、新的方块。以上问题解决了,只要解决旋转和消行那么俄罗斯方块小游戏基本完成了。首先看看如何翻转,其实也很简单,这里我们使用中心顺时针旋转,主要算法初中就涉及过就是坐标相互交换具体实现语句为:round[i].x=x0-y0+fang[i].y;round[i].y=x0+y0-fang[i].x;然后重新制定方块的坐标repaint()就好了。再说消行之前用到的10*18的二维数组现在排上大用场了,这里使用二重循环判断如果有有一行(这里说行其实在二维数组中是列)都为1那么整个数组向下移动覆盖这一行,重新为数组的第一行赋值为0,
13、repaint()方法后就产生了消行的效果,同时统计分数。最后完善一下程序吧,设置按钮的相应及其功能;用一新的二维数组记下下一个产生的方块显示先界面上,帮助游戏者更好的排列方块;记录分数达到一定数值增加游戏的等级及方块的下落速度,方块达到界面的顶端也就是新产生的方块越出了外矩形框的范围那么游戏结束,如果游戏者游戏前创建用户那么将用户名和得分一起写入数据库,下次游戏的时候可以通过查看游戏记录查看到。4.课程设计成果实验截图:创建用户:游戏等级:游戏记录:开始游戏:游戏运行界面:源程序代码:importjava.awt.*;im
14、portjava.awt.event.*;importjavax.swing.*;importjava.sql.*;importjava.util.*;importjavax.swing.Timer;classFang{intx;inty;}classgameWinextendsJPane
此文档下载收益归作者所有