有關temp變數的作用的問題
-
2012年1月28日 上午 03:28
各位前輩大家好,小弟在研習MSDN邊做邊學的XNA部分的範例(桌球遊戲那個)時遇到了一個問題,先將程式碼片段摘錄如下:
if (ball.Position.X < 0 || ball.Position.X > width - ball.Texture.Width)
{
Vector2 temp = ball.Position;
// 如果球是碰到左邊的邊界,則玩家二的比數增加
if (ball.Position.X < 0)
{
temp.X = 0;
ball.Position = temp;
m.Player2++;
}
// 如果球是碰到右邊的邊界,則玩家一的比數增加
if (temp.X > width - ball.Texture.Width)
{
temp.X = width - ball.Texture.Width;
m.Player1++;
}// 重新發球
ball.Position = new Vector2(width / 2, height / 2);
ball.V = Vector2.Zero;
gameStart();
// 播放音效
sound.play_Sound();
}小弟有以下幾點不太明白:
(1) 變數temp是否必要, 主要起什麼作用?
(2) 為甚麼"if (ball.Position.X < 0)"中:
temp.X = 0;
ball.Position = temp;
而在"if (temp.X > width - ball.Texture.Width)"中:temp.X = width - ball.Texture.Width;
並沒有寫ball.Position = temp;希望各位前輩們不吝賜教,小弟在此感激不盡.
所有回覆
-
2012年1月28日 上午 05:42沒有看到原文的網址?
-
2012年1月28日 上午 07:36
-
2012年1月29日 上午 06:22
1) temp好像只是用來記錄Ball的位置的變數, 因為記錄Ball位置的變數的內容值會改變
2) 以下的程式碼中的ball.Position = temp好像可以省略, 因為重新發球時就會重設ball.Position
if (ball.Position.X < 0)
{
temp.X = 0;
ball.Position = temp;
m.Player2++;
}所以temp變數好像可以不用, 直接判斷ball.Position是否小於0, 或是大於width - ball.Texture.Width即可, 不過我沒有將程式拿來編譯看看, 所以僅止於臆測而已
- 已標示為解答 卓君文 2012年1月31日 下午 01:30
-
2012年1月31日 下午 01:34
感謝您抽出時間來為小弟解惑, 小弟會按照前輩關於省略temp的做法進行實驗並即時在此帖回報具體編譯情況.
再次感謝this前輩的熱心解答, 祝您新年愉快, 萬事如意.

