星期五, 7月 09, 2010

var_export,var_dump(),print_r()
2009-03-18 10:01
var_export ( mixed expression [, bool return] )
此函數返回關於傳遞給該函數的變量的結構信息,它和var_dump()類似,
不同的是其返回的表示是合法的 PHP 代碼。
您可以通過將函數的第二個參數設置為 TRUE,從而返回變量的表示

$a = array (12, array ("a""b""c"));
var_export($a);

輸出:
array (
   0 => 1,
   1 => 2,
   2 => 
   array (
     0 => 'a',
     1 => 'b',
     2 => 'c',
   ),
)
var_dump ( mixed expression [, mixed expression [, ...]] )
此函數顯示關於一個或多個表達式的結構信息,包括表達式的類型與值。
數組將遞歸展開值,通過縮進顯示其結構。


$a 
= array (12, array ("a""b""c"
));
var_dump ($a);

輸出:
array(3) {
   [0]=>
   int(1)
   [1]=>
   int(2)
   [2]=>
   array(3) {
     [0]=>
     string(1) "a"
     [1]=>
     string(1) "b"
     [2]=>
     string(1) "c"
   }
}


$b 3.1
;$c TRUE;
var_dump($b,$c);

輸出:
float(3.1)
bool(true)





print_r()類似var_dump



轉自: 瀟瀟雨

星期五, 7月 02, 2010

XNA 按鍵偵測

KeyboardState kbs;

kbs = Keyboard.GetState();
if (kbs.IsKeyDown(Keys.A) == true)
    move.X -= 1;
if (kbs.IsKeyDown(Keys.D) == true)
    move.X += 1;
if (kbs.IsKeyDown(Keys.S) == true)
    move.Y += 1;
if (kbs.IsKeyDown(Keys.W) == true)
    move.Y -= 1;

XNA 碰撞偵測、反彈

延續上一篇

if (squRect.Intersects(boardRectTop))
{
    move.Y *= -1; ;
}
if (squRect.Intersects(boardRectBottom))
{
    move.Y *= -1;
}
if (squRect.Intersects(boardRectLeft))
{
    move.X *= -1;
}
if (squRect.Intersects(boardRectRight))
{
    move.X *= -1;
}

可以做個class比較方便

XNA 滑鼠拉動投擲

UPDATA:

MouseState preMouseState, mouseState;
bool flag = false;
Vector2 move;

mouseState = Mouse.GetState();
Rectangle squRect = new Rectangle((int)position.X, (int)position.Y, square.Width, square.Height);
Rectangle mouseRect = new Rectangle(mouseState.X, mouseState.Y, 0, 0);
if (squRect.Intersects(mouseRect) && mouseState.LeftButton == ButtonState.Pressed && flag == false) //squRect.Intersects(mouseRect) : //滑鼠點擊的地方是否在方框內
{
    preMouseState = mouseState;
    flag = true;
}
if (mouseState.LeftButton == ButtonState.Released && flag == true) //已放開且上個狀態是按下
{
    move.X = (mouseState.X - preMouseState.X) * 0.3F;
    move.Y = (mouseState.Y - preMouseState.Y) * 0.3F;
    flag = false;
}
//move是加速度, position是square的座標
position.X += move.X;
position.Y += move.Y;

//漸變阻尼
if (position.Y >= height - square.Height)
    moveX *= 0.95;
else
    moveX *= 0.995; //碰到地板阻尼較大
moveY *= 0.98;