基于Java语言的俄罗斯方块游戏课程设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于Java语言的俄罗斯方块游戏课程设计学院:X专业:X班级:X姓名:X学号:X指导老师:X摘要第一章引言1.1设计的课题背景1.2研究课题的任务,目的和意义1.2.1课题的任务1.2.2课题的目的1.2.3课题的意义1.3系统的主要功能和特色1.3.1系统的主要功能1.3.2系统的特色第二章系统需求分析2.1本课题研究现状分析2.2要解决的问题及解决方法2.3系统设计的主要内容、目标2.3.1系统设计的主要内容2.3.2设计的目标2.4使用的关键技术第三章系统的详细设计3.1系统的总体系结构3.2系统各模块的界面设计及实现3.2.1主窗体程序模块设计与实现3.2.2方块变换模块设计与实现3.2.3满行消除并计分模块设计与实现第四章系统的安装与测试4.1系统的安装4.1.1系统的运行环境4.1.2系统的安装4.2系统的测试结束语参考文献附录:有关程序代码摘要:在现代,高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,一些有趣的桌面游戏已经成为人们在使用计算机进行工作或学习之余休闲娱乐的首选,而俄罗斯方块游戏是人们最熟悉的小游戏之一。俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢·帕基特诺夫发明,故得此名。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。由于上手简单、老少皆宜,从而家喻户晓,风靡世界。为此,我设计了一款简单的俄罗斯方块JAVA游戏程序,以便更好的满足广大电脑工作者闲暇之余的消遣,并且也让我学到编程技术。关键字:俄罗斯方块游戏、Java语言、编程第一章引言1.1设计的课题背景俄罗斯方块是一款电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢·帕基特诺夫发明,故得此名。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。由于上手简单、老少皆宜,从而家喻户晓,风靡世界。2014年2月22日,英国心理学家发现,减肥者通过玩俄罗斯方块,可以降低对富含脂肪的食物和零食的心理需求;尝试戒烟者的烟瘾也能得到遏制。本学期学习java程序后,对该语言有了更深了解,可以尝试实现小程序的开发。因此利用所学知识,编写了俄罗斯方块这一游戏,实现了它的部分简单功能。1.2研究课题的任务,目的和意义1.2.1课题的任务本游戏开发的总体任务是实现游戏的可操作性,以及界面的美观性。采用JAVAGUI编程实现界面以及事件的控制。用户根据键盘的四个方向键控制翻转、向左、向右、和向下操作。1.2.2课题的目的用所学的Java知识编写小游戏,学会使用Java中的相关知识,熟练掌握开发程序的流程。熟练使用eclipse软件进行Java编程,并进行调试和测试。基本实现俄罗斯方块的基本功能。1.2.3课题的意义本课题的选择,完成后,可方便人们进行游戏的玩耍,开发相应智力与推理能力。如果加以推广,必将使人们在枯燥的时间有娱乐的游戏,使人们的生活更加丰富。1.3系统的主要功能和特色1.3.1系统的主要功能用户根据键盘的四个方向键控制翻转、向左、向右、和向下操作,每当整一行全满时,自动消除,并计分。1.3.2系统的特色本次设计的游戏中增加了计分功能,可以方便游戏玩家查看分数,查看自己的实际水平。设计框图:总体界面:俄罗斯方块游戏帮助新游戏暂停继续退出关于界面左侧右侧游戏区域计分文字区域整体的大致效果:俄罗斯方块游戏帮助游戏区域计分:好好学习课程。珍惜美好时光!第二章系统需求分析2.1本课题研究现状分析俄罗斯方块不仅有益智力,还能促进手指灵活性。目前,手机普及的程度相当大,人们可以在闲暇时间娱乐。它趣味性强,易上手,能满足人们对它的娱乐要求。因此,俄罗斯方块游戏,可以为用户提供一个可在普通个人电脑上运行的游戏,如果时间足够,开发出手机版俄罗斯方块后,将更方便人们闲暇时玩耍。2.2要解决的问题及解决方法解决了程序太大不能进行简单游戏娱乐的弊端,以相当简单的代码完成了相应功能,解决了人们玩游戏不方便的弊端,使人们能随意在任何地方都能娱乐,消遣空闲时间。2.3.1系统设计的主要内容在eclipse英文LUNA版中编写代码,使用Java中Frame、Button等相关组件进行合理的组合设计,实现相应效果,达到预期效果。2.3.2设计的目标在编程完成后,可以利用键盘的上、下、左、右键,能够实现对游戏的控制,其中表示方块翻转,表示方块左移,表示方块右移,表示方块加速下降。游戏者在游戏时可以利用这四个键进行相应的操作,使其完成相应变化,从而得到游戏者想要的形状,以完成整行的匹配。第三章系统的详细设计3.1系统的总体系结构不同的随机方块会从区域上方缓慢落下,能以90度为单位旋转每一方块,以一格为单位左右移动方块,让方块加速落下。区域中横向格子方块填满,则该行会自动消除并为玩家的得分。当固定的方块推到区域最上方,则游戏结束。编写主方法,对所编写的类进行测试。方块的消去,变换形状通过编写的成员方法实现。使用随机函数确定每次掉落的方块形状。使用ActionListiner响应键盘事件。3.2系统各模块的界面设计及实现3.2.1主窗体程序模块设计与实现主窗体使用Frame窗体,在窗体上实现相应功能。把菜单栏添加到窗体上。将不同菜单添加到菜单栏上,完成新游戏、暂停、继续、退出等功能。相应代码如下:publicclassGameextendsJFrame{publicGame(){Tetrisbloka=newTetrisblok();addKeyListener(a);add(a);}publicstaticvoidmain(String[]args){Gameframe=newGame();JMenuBarmenu=newJMenuBar();frame.setJMenuBar(menu);JMenugame=newJMenu(游戏);JMenuItemnewgame=game.add(新游戏);JMenuItempause=game.add(暂停);JMenuItemgoon=game.add(继续);JMenuItemexit=game.add(退出);JMenuhelp=newJMenu(帮助);JMenuItemabout=help.add(关于);menu.add(game);menu.add(help);frame.setLocationRelativeTo(null);//设置窗口相对于指定组件的位置,null将其置为屏幕中间frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭游戏frame.setSize(220,275);frame.setTitle(俄罗斯方块);frame.setVisible(true);frame.setResizable(false);//改变生成的窗体的大小,默认为true(可改变)}}3.2.2方块变换模块设计与实现共设置有7种不同的形状,分别为I形、S形、T形、Z形、O形、J形、L形。相应形态举例如下:1.I形:2.O形3.T形4.L形5.J形6.S形7.Z形相应代码如下://方块的形状方块类型有S、Z、L、J、I、O、T共7种privatefinalintshapes[][][]=newint[][][]{//I类型{{0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0},{0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0},{0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0},{0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0}},//S形{{0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0},{1,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0},{0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0},{1,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0}},//Z形{{1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0},{0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0},{1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0},{0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0}},//J形{{0,1,0,0,0,1,0,0,1,1,0,0,0,0,0,0},{1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0},{1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0},{1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0}},//O形{{1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0},{1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0},{1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0},{1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0}},//L形{{1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0},{1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0},{1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0},{0,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0}},//T形{{0,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0},{0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0},{1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0},{0,1,0,0,0,1,1,0,0,1,0,0,0,0,0,0}}};3.2.3满行消除及计分模块设计与实现当满一整行后,需要自动消除,并实现计分。规定每满一行,总分加10分。相应代码如下://满一整行后消除,并加分publicvoiddelline(){intc=0;for(intb=0;b22;b++){for(inta=0;a12;a++){if(map[a][b]==1){c=c+1;if(c==10){score+=10;for(intd=b;d0;d--){for(inte=0;e11;e++){map[e][d]=map[e][d-1];}}}}}c=0;}}第四章系统的安装与测试4.1系统的安装4.1.1系统的运行环境系统是在eclipse的LUNA英文版本下进行编写与调试的。4.1.2系统的安装在eclipse官网直接下载、安装eclipse,版本为eclipse-java-luna-SR2-win32-x86_64,在Myproject工作空间,text包下编写、测试、执行。4.2系统的测试程序完成后,进行系统测试后,达到了预期目标,能进行简单的游戏,当满一整行时,可以自动消除,并实现计分功能。键盘功能测试:测试结果:方向键“↑”:实现了旋转方块;方向键“↓”:实现了方块加速下落;方向键“←”:实现了方块左移;方向键“→”:实现了方块右移。结束语通过本次实验,学习到了Java语言的精深,刚开始的时候,自己觉得不会做出理想的效果,但我一步一步慢慢的去做,最后出来了相应效果,虽然还需改进,我已觉得有了很大的成就感。虽然在实验过程中,遇到了许多的困难,但通过去查找资料,上网搜索,询问同学,问题都得到了解决。通过这次的学习,使我对JAVA面向对象的编程有了更深一步的了解,因为这次的课程设计,使我在今后的工作和学习中,更有信心去克服生活中的困难,积极处理问题。也使我相信,只要自己想做、想学,就没有完成不了的工作。参考文献:[1]唐大仕Java程序设计(修订本).清华大学出版社,北京交通大学出版社,2012.3[2]刘慧宁,那盟.Java程序设计[M].北京:机械工业出版社,2005,10:309-312.[3]朱喜福,赵敏,夏齐霄,等.java程序设计[M].北京:人民邮电出版社,2005,2:272

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功