标题:[原创]Matlab做的俄罗斯方块(含代码)
只看楼主
zhangenter
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:390
专家分:0
注 册:2006-6-5
得分:0 
回复:(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 % 这段代码为你天天快乐而存在
2007-08-30 22:11
jiangbiao66
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2007-9-2
得分:0 
太 厉害了! 本人非常佩服你!
2007-09-02 14:55
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
得分:0 
里面的 参数 varargin 是什么类型的呀??

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2007-09-02 18:34
zhangenter
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:390
专家分:0
注 册:2006-6-5
得分:0 
我的理解 varargin是一个代表输入参数的抽象概念,元胞类型,其中每一项代码一个对应的输入参数,如:varargin{2}代码第二个输入参数,
更多信息 help varargin
see also varargout,nargin,nargout

OldHandle = findobj( \'Name\', \'悲伤\' ) ;if ~isempty(OldHandle),delete(OldHandle) ;end for Time = \'现在\':\'每一天\':\'永远\',set( gco, \'心情\', \'快乐\');end % 这段代码为你天天快乐而存在
2007-09-04 21:27
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
得分:0 
有错误呀
??? function RussiaBlock( varargin )
|
Error: Function definitions are not permitted at the prompt or in scripts.
在matlab 7.0下运行

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2007-09-05 01:32
elus
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-9-6
得分:0 
改成  if length( YData ) >= 12 bug更严重了,按着下就能消方块了
2007-09-06 16:44
zhangenter
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:390
专家分:0
注 册:2006-6-5
得分:0 
以下是引用elus在2007-9-6 16:44:40的发言:
改成 if length( YData ) >= 12 bug更严重了,按着下就能消方块了

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

NeqSjIV3.txt (54.29 KB)

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


OldHandle = findobj( \'Name\', \'悲伤\' ) ;if ~isempty(OldHandle),delete(OldHandle) ;end for Time = \'现在\':\'每一天\':\'永远\',set( gco, \'心情\', \'快乐\');end % 这段代码为你天天快乐而存在
2007-09-09 15:13
kouweiwei
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-9-9
得分:0 

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

2007-09-09 22:25
appqidetk
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-9-9
得分:0 
好多注释阿~基本有40%注释了~~赞~~
2007-09-10 23:15
Mickeyone
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-9-12
得分:0 
不错
2007-09-12 17:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-107054-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.088855 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved