作者help0430 (@@)
看板C_Sharp
标题Re: [问题] 用XNA+C#写俄罗斯方块
时间Thu Jun 12 16:47:27 2008
xna里的update是让你做游戏的逻辑控制的
如果你在你面用SLEEP(1000)
那你游戏的所有东西都要一秒才能改变一次了
而且这会牵扯到FPS的问题~
因为你拖延了UPDATE的时间~让DRAW函式来不及保持60fps
他会想办法追上~这应该是你当机的原因
要想一秒下降一次方块
你要在你的方块物件加入一个时间变数
记录出现在画面上的时间
超过要移动的时间才自行改变位置
而时间可以由UPDATE传入的参数gameTime取得
像是这样
class square{
public double time;
public int x,y;
public void MoveDown(GameTime gameTime){
time += gameTime.ElapsedGameTime.TotalMilliseconds;
if(time > 1000){
x += 30; //看你要顺移多少像素
time -= 1000;
}
}
}
update(GameTime gameTime){
square.MoveDown(gameTime);
...做其他事情
}
大概是这样~希望你了解
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.128.202.174
1F:推 gamecubemomo:gameTime.ElapsedGameTime.TotalMilliseconds是? 06/13 19:58