想做一个简单的俄罗斯方块,怎么分析设计?如何结合设计模式?

chen1phy 2002-08-10 06:10:07
好多朋友都做过俄罗斯方块游戏的,一起来讨论一下吧。

我简单想到以下几点:
1、需要以下几个类:
方块类:
容器类:就是方块在其中运动的窗口
框架类:用来创建各种对象、响应玩家操作、显示积分、速度、级别等等;

2、为方块类、容器类、框架类定义接口
其中方块类接口可以这样定义:
Interface IBlock
{
显示;
移动(左、右、下);
旋转(左、右);
启动;
停止;
改变状态(启动、停止、暂停);
改变下落速度;
。。。
}

3、所有对象的创建采用创建型模式

有人感兴趣么?
...全文
220 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mis98ZB 2002-08-11
  • 打赏
  • 举报
回复
其实几个月前的《电脑编程技巧与维护》上就有。
chen1phy 2002-08-11
  • 打赏
  • 举报
回复
首先声明我是一个不折不扣的菜鸟,刚学编程不久。
因为看了一些书,但总感觉很虚,所以找了这么一个小游戏来实作一下。其实完全用面向过程的方法,比较容易完成,一个二维数组应该可以搞定。但这不是我需要的。
我只是希望通过分析和设计这个游戏,来实践一下怎么样面向接口编程,怎么样运用设计模式;
如果你有兴趣按这个思路来设计一次,可以贴出你的想法;
如果你觉得太小case,你尽可以一笑而过;

下面是我想到的改进的一些:

游戏的非正式场景:
1、方块和容器应该处于同一个坐标系统;
2、游戏开始后,框架 a 创建 容器 c;
3、a 创建方块 t,t的状态为运动,从初试坐标下落,具有速度s;
4、t在下落前,会询问c,是否可以下落;如果不可以,则t状态变为停止;
c 会检查自己的状态,给t一个回答;
5、a接收玩家的操作,通知t,t移动或者旋转;t移动前也会询问c;
6、t 在状态由运动变为停止后,会通知c,让c检查状态;c 如果发现某行或者某几行已满,会删除这几行;同时修改这几行上面行的状态;c还需要通知a,由a来改变速度、级别、积分;
7、c在检查状态的时候,如果发现最上面一行有数据,会通知a,a来终止游戏
8、t不显示自己,所有的显示操作,由c完成

方块的接口:
class ITetris
{
public:
virtual int MoveToLeft(); //左移
virtual int MoveToRight(); //右移
virtual int MoveDown(); //下移
virtual void RotateLeft(); //左旋转
virtual void RotateRight(); //右旋转
virtual int ChangeSpeed(int); //改变速度
virtual int ChangeColor(int); //改变颜色
virtual int ChangeCoord(int, int); //改变坐标
virtual int ChangeState(int); //改变状态
};

容器的接口:
class IContainer
{
virtual void ChangeSize(int, int);
virtual int CheckState();
};

框架的接口:
class IApplication
{
virtual int CreateContainer();
virtual int CreateTetris();
virtual void ChangeGameSetup(); //修改积分、速度、级别等
};

t 是不知道a的存在的,t只知道c;c需要和a交互;


sunni 2002-08-11
  • 打赏
  • 举报
回复
我觉得这么小的东西没必要兴师动众的

当然合理的对象模型,对以后的维护大有好处
weya 2002-08-11
  • 打赏
  • 举报
回复
没做过,有兴趣关注一下。
lanying 2002-08-10
  • 打赏
  • 举报
回复
不要一开始就什么设计模式
先搞清楚数据结构再说
毕业论文java俄罗斯方块游戏 摘 要 在现今电子信息高速发展的时代,电子游戏已经深入人们的日常生活,成为老少皆宜的娱乐方式。但是游戏设计结合了日新月异的技术,在一个产品中整合了复杂的设计、艺术、声音和软件,所以并不是人人皆知。直到今天,在中国从事游戏设计的人仍然很少,但是游戏行业的发展之快,远超如家电、汽车等传统行业,也正因为如此,游戏人才的教育、培养远落后于产业的发展。 俄罗斯方块是个老幼皆宜的小游戏,它实现由四块正方形的色块组成,然后存储在一个数组的四个元素中,计算机随机产生不同七种类型的方块,根据计算机时钟控制它在一定的时间不停的产生,用户根据键盘的四个方向键控制翻转、向左、向右和向下操作,(控制键的实现是由键盘的方向键的事件处理实现)。然后程序根据这七种方块堆叠成各种不同的模型。 论文描述了游戏的历史,开发此游戏的环境,游戏开发的意义。遵循软件工程的知识,从软件问题定义开始,接着进行可行性研究、需求分析、概要设计、详细设计,最后对软件进行了测试,整个开发过程贯穿软件工程的知识体系。 此次设计在Microsoft Windows XP系统下,以Java为开发语言,在eclipse开发平台上进行游戏的设计与实践。 关键词:游戏设计;算法;数组;事件 引 言 游戏是人们活动中一项非常重要的内容,有人认为如果哪一天人类对所有的游戏都失去兴趣,恐怕世界的末日就要到了。电脑对游戏的贡献有目共睹,现在摸过电脑的人很少有没玩过电脑游戏的,喜欢游戏的人也很少有不玩电脑的。 俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。这款游戏最初是由苏联的游戏制作人Alex Pajitnov制作的,它看似简单但却变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得茶不思饭不的那个俄罗斯方块时代。究其历史,俄罗斯方块最早还是出现在PC机上,而我国的用户都是通过红白机了解、喜欢上它的。现在联众又将重新掀起这股让人沉迷的俄罗斯方块风潮。对一般用户来说,它的规则简单,容易上手,且游戏过程变化无穷,而在"联众俄罗斯方块"中,更有一些联众网络游戏所独有的魅力――有单机作战与两人在线对战两种模式,用户可任选一种进行游戏。网络模式还增加了积分制,使用户既能感受到游戏中的乐趣,也给用户提供了一个展现自己高超技艺的场所。 俄罗斯方块游戏可以说是随计算机的发展而发展,并不断推陈出新演变出各种类似游戏, 深受广大玩家喜爱。这个游戏有的简单, 有的复杂, 但其根本原理是一样的都是对运动的方块进行组合, 来训练玩家的反应能力。谈到游戏软件, 大多数人都认为其神妙莫测, 高不可及。而一般游戏软件也确实具有很高的技术难度, 随着开发工具及软件开发方法学的不断发展, 动手开发游戏也不是十分困难的。俄罗斯方块游戏是一种古老而又有趣的游戏, 游戏软件不计其数, 网上就有好多关于实现的复杂算法和设计, 其难度让一般初学者望而却步。本文利用数组作为方块的数据结构,提出一种用JAVA语言实现的简易方法, 对初学者可仿此开发类似游戏, 并了解游戏软件的设计与开发过程。

1,268

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧