2013-06-04 49 views
1

所以我有兩個變量。保持兩個變量值在JavaScript中同步的最佳方法

一個是ammo,另一個是ammoAvailable

當用戶左擊,ammo減1,但不能去過去0

當用戶右擊,ammoAvailable由50(或更少,如果不可用)減小,並且ammo是增加了相同的數額。

在Javascript中處理這種變量關係的最優雅的方式是什麼,這樣就不會創建額外的彈藥,並且變量都不會低於0?

例子:

@ammo = 0 
@ammoAvailable = 500 

userClick = => 
    if @ammoAvailable >= 50 
    @ammo += 50 
    @ammoAvailable -= 50 
    else 
    @ammo += @ammoAvailable 
    @ammoAvailable = 0 

我怎麼能做到這一點更雄辯地,越來越短?

+0

@Barmar我試着做兩個變量,一個減少,另一個增加。我完全能夠解決問題,我只是想知道如何做到最好。 – alt

+0

@Barmar增加了我對這個問題的做法。你能改善嗎? – alt

+2

最好的是在旁觀者的眼中,這就是爲什麼這樣的問題通常被認爲是不適合SO的原因。 – Barmar

回答

2

我的看法:

「當用戶左鍵點擊,ammo減1,但不能晃過0」。

leftClick = => 
    @ammo-- if @ammo 

「當用戶右擊,ammoAvailable由50(或更少,如果不可用)和ammo減少增加了相同的量。」

rightClick = => 
    reloadAmmo = Math.min @ammoAvailable, 50 
    @ammo += reloadAmmo 
    @availableAmmo -= reloadAmmo 
+0

是的,這正是我正在尋找的答案。儘管SO社區如何肛門,但我很高興它實現了。如果有人對標題編輯有任何建議,以便有類似問題的人可以找到這個答案,我會立即接受他們的編輯。 – alt

+0

也不知道Math.min,很高興知道! – alt

+1

@JacksonGariety,好吧,這是一個相當具體的問題。以目前的標題,我不認爲許多有類似問題的人會發現它。也許「如何保持兩個變量的值同步」(提出好的標題是很難的)。或者可能是像「如何避免不必要的分支來保持兩個變量同步」......因爲我認爲這是問題的小代碼片段中的主要問題:不必要的分支。這是一個非常普遍的問題,並且可能會使複雜性非常快地失去控制:) – epidemian

相關問題