HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0115
e-nikustickで5解決


e-niku

リンク

2009/1/15(Thu) 23:18:32|NO.22860

下のスプリクトを実行すると、左を押した時にしか0が表示されません。
おそらくバグだと思います。
そちらの環境でも再現できますか?

repeat
ls=-20:rs=-20 stick pat,13 if (pat&13)&(ls<0):ls=0:mes ls if (pat&13)&(rs<0):rs=0:mes rs wait 1 loop



この記事に返信する


flory

リンク

2009/1/15(Thu) 23:41:37|NO.22862

もちろん再現できますが、それはHSPのバグではないでしょうね。スクリプト上、必然的にそういう結果になります。

とりあえず、以下のようなことがしたいのだと思われますが、いかがでしょうか。

repeat ls=-20:rs=-20 stick pat,5 if ((pat&1)!0)&(ls<0):ls=0:mes ls if ((pat&4)!0)&(rs<0):rs=0:mes rs wait 1 loop

一度、stick命令についてきちんと調べられることをお勧めします。



anonymous

リンク

2009/1/16(Fri) 00:18:41|NO.22865

スレ主は恐らくHSP以外の言語を使われた経験があるのではと思います。

 (pat&13)&(ls<0)

この論理式が

 (pat&13)&&(ls<0)

これであれば、問題ないのですが
HSPには積結合演算子(&&)がないので
&によるビット演算しかできないため、結果として
最下位ビットが残る左入力(1)しか反応しないことになります。
HSPプログラムガイドの「条件判断」の項目を読むと一目瞭然かと思います。

これを回避する方法として、floryさんの書かれている

 ((pat&1)!0)&(ls<0)

という論理式が正しい結果を導くということになります。



Hiroaki Software

リンク

2009/1/16(Fri) 15:38:36|NO.22886

ちなみに

repeat ls=-20:rs=-20 stick pat,5 if ((pat&1)!0)&&(ls<0):ls=0:mes ls if ((pat&4)!0)&&(rs<0):rs=1:mes rs wait 1 loop
でも大丈夫ですよ



SYAM

リンク

2009/1/16(Fri) 16:01:07|NO.22887

>Hiroaki Softwareさん

anonymousさんの説明の内容を理解した上で書いていますか?
到底、そのように見えないのですが。


「ちなみに」の語を使わないようにしてみてはいかがでしょう。
どうも、こう言っては失礼ですが、「ちなみに」の後は蛇足が多いようですから…。



e-niku

リンク

2009/1/16(Fri) 17:57:16|NO.22892

素早い回答をありがとうございます。
&の使い方を誤っておりました。
これからは気をつけるようにします。



ONION software Copyright 1997-2023(c) All rights reserved.