俄罗斯方块游戏
我们以控制台程序的字符界面来实现这个游戏,规定游戏区域为10×20个单元格,宽为10,高为20,在屏幕上用20行×10列个字符(如*和空格)来代表这些单元格,每次将整个游戏区域输出,然后等待用户输入一个命令,按命令的要求进行方块的移动、旋转、清行等动作,并把新的游戏区域重新输出(输出之前清除屏幕),游戏结束后给出提示,用户可重新开始或退出程序。 要求用OO技术来进行游戏的设计:
1、 方块类:每个方块都要记录自己的ID、形状。形状采用4对整数坐标来表示,分别记录其4个小方块的相对位置
方块类主要操作:
构造函数:参数至少有:ID和参考点初始坐标。
填充:把自己填充到指定的游戏区域中。返回填充成功或失败的信息。
清除:把自己从指定的游戏区域中清除。
移动:在指定的游戏区域中移动,包括向左、右、下移动,以1个单元格为单位。返回是否移动成功的信息。
旋转:在指定的游戏区域中旋转一次,然后在指定的游戏区域中重新填充自己
获得占用行:返回本方块4个小方块所占用的各行
2、 游戏区域类
其主要属性:游戏区域数据,状态:游戏未开始(初态)和游戏已开始。
主要操作为:
游戏区域读写:指定游戏区域的一个单元格坐标后,返回或设置单元格的值。
绘制:清除屏幕后将游戏区域绘制出来。
命令处理:命令为一个字符串,格式自定。要求实现如下命令:
游戏开始:当接收到此命令时,将状态切换为游戏已开始。
方块左移、右移、旋转:对活动方块调用相应的操作,不论是否能移动成功都重新绘制本游戏区域,如果移动失败绘制完毕后给出文字提示信息。为增加游戏难度,可以在执行几次左右移或旋转后自动执行“方块下移”命令。
方块下移:对活动方块调用相应的操作,如果移动成功,则重新绘制本游戏区域后操作结束,如果移动失败,则说明方块已经掉到最下面,需要执行方块落地操作。
方块落地:
先执行清行操作:获得活动方块占用了哪些行的信息,然后逐行进行扫描:可以每清除一行就重新绘制一次游戏区域,获得动画效果。
执行完清行操作后,要产生下一个方块,此时要把活动方块指定为新产生的方块,而且还要检查新产生的方块是否能成功填充,如果填充失败,说明游戏结束,此时将游戏区域状态恢复为游戏未开始,抛出异常通知游戏结束(类型自定),但在本类内不处理该异常,让类的使用者处理。
3、 程序总体流程
程序运行后,生成一个游戏区域类对象,然后不停地接收用户输入的命令,并进行处理,格式自定。
游戏开始命令。此命令被转发给游戏区域处理。
退出命令。用户可直接退出程序。
方块左移、右移、旋转、下移命令:转发给游戏区域处理。注意,由于此时游戏区域对象的函数可能会抛出异常表示游戏结束,所以需要捕获这些异常。捕获到异常时说明游戏结束,此时提问用户是退出还是继续游戏,用户要求退出则退出程序,如果要求继续游戏则执行一次“ 游戏开始命令”即可。
4、 如果有兴趣可加上分数的计算功能。
请问哪位大哥可以帮着设计一下?