iT邦幫忙

0

各位大大好,最近正在學習JS....
碰到邏輯的問題有點難解..想請教各位大大是否有比較好的方式?
需求:
x=1000
x座標持續遞減10,x座標到500時,再遞增5

我的寫法:

<script>
var x=1000;
    x-=10;
if(x<500)
{
   x+=5;
}
</script>

但是這串錯誤的程式碼會卡在500那邊(廢話)
一直想不出來該如何修改才更好,還請各位大大指點,謝謝。

看更多先前的討論...收起先前的討論...
code iT邦新手 5 級 ‧ 2018-09-25 15:40:45 檢舉
應該是說 每次都-10 直到<500才會多一個+5吧?

那這樣怎麼不直接判斷x1的值,如果<500 就變成-5這樣呢??
請先學習for迴圈或是while迴圈
weiclin iT邦高手 4 級 ‧ 2018-09-25 16:30:29 檢舉
你可以說明清楚一點想做的是什麼功能, 總覺的你弄錯方法了
柯柯 iT邦新手 5 級 ‧ 2018-09-25 16:36:54 檢舉
你 X=1000 只有減一次 就跑完了 沒有持續的動作 所以X只會變990 而已
就結束程式了
ccutmis iT邦研究生 5 級 ‧ 2018-09-25 16:39:41 檢舉
<?php
for($x=1000;$x>500;$x-=10); echo $x+5;
?>
謝謝各位大大的回覆....我是打算做座標折返的功能
人物會自動從 座標:1000 的位置開始減10到指定的地點(假設500)以後
再以5的間距折返回去。

程式其他的部分就沒打上來了,我是讓他用setInterval一直刷新x值,
最原始的寫法x-=10 是有辦法執行出來的(990 980 970 960... 這樣,但是後來想改成折返才會有文章上的寫法)
柯柯 iT邦新手 5 級 ‧ 2018-09-25 17:00:22 檢舉
<script>
var x = 1000;
var direction = true;
setInterval(function(){
if(direction) x-=10;
else x+=5;

if(x<500) direction = false;
if(x>=1000) direction = true;

console.log(x);
}, 100);

</script>
遇到這種問題就在關鍵點自己在腦中一圈一圈模擬跑看看就知道了
每圈都 -10 , 小於 500 的時候 +5 ,從每圈 -10 變成每圈都 -5
永遠不會往回加阿…
謝謝回覆
yoching iT邦高手 1 級 ‧ 2018-09-27 14:04:35 檢舉
@toymonster

這樣的回答方式不是很好。真正要說的話,你的問題其實比較偏向數學的問題,而非程式問題。
人家是在教你數學相關的邏輯處理方式。

再來,用程式沒po完全當理由,也是很不負責任的做法。大家都不是神,沒辦法通神了解你的程式碼所在。只能用你目前po上來的程式碼來回答你。

回主題:
像這種可能反彈式運做的。其實我會多一個參數名為step

預設值就是 step=-10
x就都只有一直+step x += step

所以其運行的程式碼就會是如下的寫法
var step = -10;
var x=1000;
setInterval(function(){
if(x<500) {step=5;}
if(x>1000) {step=-10;}
x += step
console.log(x);
}, 100);
@浩瀚星空
謝謝你的回覆~只是你在評論裡幫助我,沒辦法選為最佳回答@@,看要不要重留一下~~謝謝你

1 個回答

0

回不去了…

我要發表回答

立即登入回答