学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
发新话题
打印

[原创]Matlab做的俄罗斯方块(含代码)

回复:(h_x0)怎么玩一会就不消了啊 ,还是有点问题吧...

今天终于有机会看到有个朋友在我面前重现这个bug了,确实出现了消不掉的情况,检查了下代码问题出在这:

if length( YData ) == 12

这里,我是判断是否某一行有12个方块,因为方块游戏窗口的宽度刚好够放下12个方块,我玩俄罗斯一般都是按空格丢下方块,所以始终没发现bug,但那个朋友是一直按着往下来玩而不是按空格键的,这就造成当方块落下停止到下一个方块落下之间的时间段上,键盘重复响应,我的方块位置向量被重复累加了(这方块被累加了多次)。

当循环到上面提到的那行代码时候 YData 就可能不只12,甚至有可能是3、40了

现在如果把那行改成 if length( YData ) >= 12 ,那么仍然可以保证当某行填满时会被消除,但是这样的处理仍然会有bug的,有兴趣的话朋友可以思考的会有什么bug

OldHandle = findobj( \'Name\', \'悲伤\' ) ;if ~isempty(OldHandle),delete(OldHandle) ;end for Time = \'现在\':\'每一天\':\'永远\',set( gco, \'心情\', \'快乐\');end % 这段代码为你天天快乐而存在

TOP

太 厉害了! 本人非常佩服你!

TOP

里面的 参数 varargin 是什么类型的呀??

TOP

我的理解 varargin是一个代表输入参数的抽象概念,元胞类型,其中每一项代码一个对应的输入参数,如:varargin{2}代码第二个输入参数,
更多信息 help varargin
see also varargout,nargin,nargout
OldHandle = findobj( \'Name\', \'悲伤\' ) ;if ~isempty(OldHandle),delete(OldHandle) ;end for Time = \'现在\':\'每一天\':\'永远\',set( gco, \'心情\', \'快乐\');end % 这段代码为你天天快乐而存在

TOP

有错误呀
??? function RussiaBlock( varargin )
|
Error: Function definitions are not permitted at the prompt or in scripts.
在matlab 7.0下运行

TOP

改成  if length( YData ) >= 12 bug更严重了,按着下就能消方块了

TOP

以下是引用elus在2007-9-6 16:44:40的发言:
改成 if length( YData ) >= 12 bug更严重了,按着下就能消方块了

是的,我说的就是这问题,不过在新改的代码中已经解决了这问题,


[此贴子已经被作者于2007-9-9 15:16:45编辑过]

附件: 您所在的用户组无法下载或查看附件
OldHandle = findobj( \'Name\', \'悲伤\' ) ;if ~isempty(OldHandle),delete(OldHandle) ;end for Time = \'现在\':\'每一天\':\'永远\',set( gco, \'心情\', \'快乐\');end % 这段代码为你天天快乐而存在

TOP

我是才学matlab的 看到你的作品都呆了 好厉害啊 以后有不会的要多多请教你了

TOP

好多注释阿~基本有40%注释了~~赞~~

TOP

不错

TOP

发新话题