2013-03-04 48 views
0

我不是一個熟練的程序員,但每個人都必須從某個地方開始。 我一直在嘗試在紅寶石中製作一個(非常)基本的迷宮類型,但是我在while循環不退出時遇到了困難。條件滿足時循環不會退出(紅寶石)

房間佈置上下顛倒的T:

 
5 
2 
103 
4 

從中央北上兩次@loc應更改爲5,說 「結束」,並退出循環:

elsif @loc == 2 
@loc = 5 
puts "End" 

但它返回到while循環的開始,擱淺玩家。

編輯:有關於代碼的一些混亂,所以我取出塊,指着你 http://pastebin.com/EFWVBAhn

+0

我們需要查看更多的代碼。你的課程是什麼?最有可能在你的'cmd.go_north'中訪問'cmd'的'@ loc'字段,而不是你的迷宮類。但是直到我們看到代碼時才能說出來。 – iamnotmaynard 2013-03-04 23:35:14

+0

當@ loc的值沒有改變時,你如何期待while語句退出?嘗試使用'puts'或其他東西檢查語句開始時該變量的值。 – nicooga 2013-03-04 23:37:24

+0

請縮進,特別是排除故障循環時!它永遠不會退出,因爲'@ loc'永遠不會是'5'。但是你還沒有發佈'@ loc'改變的代碼,所以很難說出問題所在。 – 2013-03-04 23:38:14

回答

1

while @loc != 5 

正在訪問一個未被改變的變量。變化發生在cmd.loc,這不是同一個變量。該行需要是

while cmd.loc != 5 

爲了訪問變量。

此外,您還需要引用您的字符串(例如if command == west應該是if command == "west");否則你要告訴Ruby比較一個名爲west的變量,該變量不存在,而不是字符串「west」。

+0

我確實犯了這個錯誤,但它被糾正了。我忘了重新複製它。 – flashgamer001 2013-03-05 00:01:10

+0

而另一個改變? – iamnotmaynard 2013-03-05 00:02:50

+0

puts @loc爲預期的空間返回5,這樣就不應該出現問題。 – flashgamer001 2013-03-05 00:05:05