欢迎来到天天文库
浏览记录
ID:37846015
大小:2.96 MB
页数:12页
时间:2019-06-01
《Java课程设计 俄罗斯方块》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、课程设计报告(本科)课程:Java语言程序设计学号:101041100810104110241010411076姓名:李思贤马军福董国运班级:计算机科学与技术(计算机应用)教师:时间:计算机科学与技术系设计名称:俄罗斯方块设计内容、目的与要求:要求:界面美观,功能布局合理;要求具有左右移动以及反转的功能;完成俄罗斯方块游戏的基本操作功能,并能够显示失败和胜利的信息。计划与进度安排:12月17日~12月21日:完成选题,并且弄明白本次课程设计的具体要求;12月21日~12月23日:通过各种方式进行相关资料的收集,包括上网,查阅相关资料,学习相关的要求知识。这段时间内我们小
2、组成员自学了jpanel中使用Graphics类的知识,键盘触发事件的知识、以及Timer类的知识。12月24日~12月27日:小组成员讨论本程序的大致框架,划分出所需函数的各自功能,小组分工,马军福负责函数实现功能大致要求,列出程序功能表,划分各数据成员的具体功能。李思贤和董国运负责各个函数功能的具体实现,两个人密切合作,最终每一个人完成各自负责的函数,并且两个人详细的列出了各函数的接口数据的详细说明。到28日时候所有程序组件合并。12月28日~12月30日:小组成员在一起对函数之间的接口错误,以及变量命名错误进行了修改,在这个过程中遇到的问题最多,进度比较慢,我们三
3、个人多次共同商议各函数的功能,对一些函数的功能进行了返工修改,实现了各函数之间的功能协调。12月31日~1月2日:小组完成课程设计报告的正式版。设计过程、步骤(可加页):设计说明:1.这个程序定义了两个类,一个是BlockFrame类,另一个是Block类。前一个负责整体外部布局,后一个负责方块的变化过程的显示,这两个类分别继承了Jframe类和Jpanel类,所以在整个程序运行过程中大量调用了父类的成员方法。(1):第一个类BlockFrame类的setSize()函数用于设置整个框架的大小,setTitle()函数用于设置框架标题的显示,setResizable()
4、用于框架大小不可调整的设置。(2):第二个类Block调用了paintComponent()函数,先声明一个Graphics对象g,依照内部map数组的数据调用g.fillRect()进行方块的显示,并且调用了repaint()成员方法进行重新刷新方块面板的显示。2.为了让使用者及时感觉到方块界面的动态,这个程序使用了Timer类,用于定时刷新面板。111.内部数据的操作过程全部封装在类Block中,成员变量有blockType、score、turnSate、x、y、i、j和flag以及三维数组shapes[][][],二维数组map[][]。blockType代表方块
5、类型,一共有7种方块类型。Score代表游戏过程中的积分,turnSate代表翻转状态,对于每一个方块分别有四种状态。x和y代表运行的方块的坐标,(x,y)这个点是4*4方块最左上方的那个小方块,而这个坐标是相对于map[][]数组来说的。i和j用于map[][]数组的遍历,起到一个数组元素定位的参数作用。flag用于判断在面板中是否已经有一个运行的方块,如果有flag值=1就创建一个新的移动的方块在面板中。三维数组shapes[][][]是表示一个方块的内部数据,一个方块一共有16个点,在空间中排列以4*4的方式显示出来,值为1的点代表实心,值为0的点代表空心。Map
6、函数是整个面板所对应的内部数据,值为1的点代表实心,值为0的点代表空心。2.为了实现对map[][]和shapes[][][]的操作,我们分别定义了newblock()函数、drawwall()函数、newmap()函数、turn()函数、left()函数、right()函数、down()函数、blow()函数、delline()函数、gameover()函数和add()(1):newblock()函数的作用是随机生成任何一种类型的方块,采用math.Random()实现随机选择。(2):newmap()函数用于初始化地图。(3):drawwall()函数就是对面板中表
7、示围墙的数据进行赋值。(4):turn()函数用于方块旋转的实现,也是仅仅对turnState的值进行合法修改。(5):left()函数用于方块左移的实现,是对x的值进行进行减1合法修改。(6):right()函数用于方块右移的实现,是对x的值进行进行加1合法修改。(7):down()函数用于方块左移的实现,是对y的值进行进行加1合法修改。(8):blow()函数用于判断方块是否到底以及是否触碰到其他已经到底的方块。返回值为1表示可以继续下移、变换。返回值为0表示已经到底或者触碰到其他已经到底的方块。这个函数主要起到一个辅助其他函数实现功
此文档下载收益归作者所有