Topic: 帮人家写的俄罗斯方块游戏的结构.

  Print this page

1.帮人家写的俄罗斯方块游戏的结构. Copy to clipboard
Posted by: 毕竟红尘
Posted on: 2004-11-24 16:30

关键词句:
----------------------------------------------------------------------------
程序控制、问题分割:控制要有比较强的逻辑,消息的调用得时时在意
------------------------------------------------------------------------------------
继承 、多态 :俄罗斯中的boxFactory只生产structrue而不是生产具体的box
---------------------------------------------------------------------------------------
抽象类 :实现多态,可以让程序更有有可扩展性(淡化具体类型的限制,现在的代码可以调用到将来
写的代码)。俄罗斯中的structrue提取了所有box都该具有的特征。
-----------------------------------------------------------------------------------------
内部类 :功能强大,很大程度上是因为它们可以不受限制地访问到其外包类的成员,
包括外包类的私有外包类成员。俄罗斯中用上几个内部匿名类 ,就象外界访问外包类的几扇窗口。
-----------------------------------------------------------------------------------------
接口:用来实现策略模式(主要优势是能实现多重继承 多态比较明显:可以upcast成多种类型,这里没有用上其主要的功能)
-----------------------------------------------------------------------------------------
策略模式 :从变化的东西中分离出不变的东西。。。,俄罗斯中的DownFator ReshapeFactor
LeftFator等分离出不同box所具有的不同的可移动规则
---------------------------------------------------------------------------------------
工厂模式:生产特定需要的对象,俄罗斯中可以随机生产已经构造好的box
(强大的工厂能自动记录生产的状态,并根据需要生产对象,但是这里是游戏自己控制工厂的生产,不是工厂自己控制的)
-----------------------------------------------------------------------------
可扩展:oop特定让软件具有较强的可扩展性,俄罗斯中只构造三种具体类型的box,但是可以自己构造添加任意种四按妞组成的box
------------------------------------------------------------------------------
线程:
俄罗斯在线程中启动,所以在main函数中生成两个game的话,互相不受影响
如果启动了game的setKey方法的话可以让程序有了扩展双人对战的空间。。。。。
Timer本身就是用线程来实现的,可能和程序中的主线程产生事件处理先后顺序的问题
俄罗斯中的Game 的reStartGame方法中的currentBox的destroy方法就是处理一点点这上面的问题
------------------------------------------------------------------------
swing界面及swing事件驱动 事件模型:
任意一种focusable的组件都可以用来监听另外一种组件上发生的事件,但是如果监听组件
本身失去焦点的话,它所监听失效。------------1.4后的swing模型功能强大,研究之。
------------------------------------------------------------------------------
(毕竟红尘04.11.24)

Game.rar (74.74k)

2.Re:帮人家写的俄罗斯方块游戏的结构. [Re: 毕竟红尘] Copy to clipboard
Posted by: 毕竟红尘
Posted on: 2004-12-21 17:24

突然觉得,失败的地方很多:
1.用到1.0时,会造成线程不安全的而被decprecated的线程方法stop()
2.在game类用busy waiting来一直判断生产出来box是否被消耗掉,于是占用了大量的cpu资源.这应该用到wait和notify来提高性能.
3.有人说自己编译过代码,但是却出现无法找到类actionbtn这样的问题,那我是我以前觉得无所谓默认包就可以了,现在觉得应该打包一下package com.zs
4.线程没同步好,conbtn中的方法应该有些要synchronized才行.
一起研究Smile

3.Re:帮人家写的俄罗斯方块游戏的结构. [Re: 毕竟红尘] Copy to clipboard
Posted by: caike
Posted on: 2004-12-21 17:36

多谢分享,下下来研究研究

4.Re:帮人家写的俄罗斯方块游戏的结构. [Re: 毕竟红尘] Copy to clipboard
Posted by: caike
Posted on: 2004-12-22 09:29

大哥,您写的程序太强了,在我XP+SP2上,一运行就死机,比病毒还厉害:)
我就运行一个就这样

5.Re:帮人家写的俄罗斯方块游戏的结构. [Re: 毕竟红尘] Copy to clipboard
Posted by: 毕竟红尘
Posted on: 2004-12-22 10:14

呵,首先要感谢兄弟的尝试..
你试一下这个,上一个占cpu资源听我女朋友她们讲在90%以上...:!
那是因为在线程中出现了忙等待:bad usage of cpu cycle..
呵呵,真丢脸:) 不过我改了,现在应该不会了....
jar可以直接运行,谢..

game.rar (36.93k)

6.Re:帮人家写的俄罗斯方块游戏的结构. [Re: 毕竟红尘] Copy to clipboard
Posted by: caike
Posted on: 2004-12-22 12:11

呵呵,我再试试:)

7.Re:帮人家写的俄罗斯方块游戏的结构. [Re: 毕竟红尘] Copy to clipboard
Posted by: 毕竟红尘
Posted on: 2005-01-26 16:19

看看界面哦,原来border可以让组件漂亮许多....弱化了类关联,修改了结构,有兴趣可以看看哦.

8.Re:帮人家写的俄罗斯方块游戏的结构. [Re: 毕竟红尘] Copy to clipboard
Posted by: 毕竟红尘
Posted on: 2005-01-26 16:22



(缩略图,点击图片链接看原图)

9.Re:帮人家写的俄罗斯方块游戏的结构. [Re: 毕竟红尘] Copy to clipboard
Posted by: OscarLao
Posted on: 2005-01-27 13:48

经典的游戏……下载一份看看。


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923