>>飯島ちゃんさん
先ほどの文はわかりにくかったようですいませんでした。
このレスはできる限りわかりやすいように考えながら書くようにしますね。
それから飯島ちゃんさんのレスを見て少し思いました。私はちょっとずれたところを指摘したかな?
しかし関係ない・反応したくないところは貴方は読み飛ばすんですね。
ハンドルネームのことについて三人から言われても、飯島ちゃんさん全く反応してない…
>質問するときは、具体的にどう困っているのか、何が分からないのか、
>どんなプラグインを使っているのかを書き、
>そしてなるべく少なく削った、その症状が出る、またはこのスクリプトに
>ある機能を足したい、というスクリプトを貼ることをお勧めする。
これについても読み飛ばしましたね。
それはともかく、ですね。
>前進と旋回の同時押しが処理できていないのかもしれません。
同時押しとは、"キーボードのキーを"二つ以上同時に押すこと、と勝手ながら仮定させていただきます。
また、前進は「↑」キー、右への旋回は「→」キー、左への旋回は「←」キーで実現させると仮定させていただきます。
どのキーがそれらに当たるのかは、申し訳ありませんがどうか感じていただきたいと思います。
また、それらのキーが押されているかの判定についてはHSP3標準機能の"stick"命令、もしくは"getkey"命令を使っていると仮定します。
まずはstick命令をご使用の場合。
stick命令の第一引数には判定結果格納用変数名が来るわけですが、そこにくるのは1,2,4,8などだけではありません。
たとえば3や6などが来ることもあります。
3の場合は3=1|2なのでstick内での1と2に対応しているキー、
すなわち「カーソルキー左(←)」と「カーソルキー上(↑)」が同時に押されているということになります。
そしてif等で押されているかどうかを判定する場合、ビット論理和演算子である&を使うのが望ましいです。
"変数名&1"で左キーが押されているかどうかを判定することができますし、
"変数名&2"で上キーが押されているかどうかを判定することが可能です。
それらをifにして並べれば、できます。
具体的にいうならば、
repeat
stick key, 1&2&4
if key&1 : dialog "左が。"
if key&2 : dialog "上です。"
if key&4 : dialog "右が押されてます。"
wait 10
loop
みたいな感じでしょうか。
dialogのところにそれぞれ前進・旋回の処理を入れてください。
と、HDLの内容を詳しく解説したつもりです。
getkey命令をご使用していらしゃった場合。
こちらはそれぞれのキーを一つずつ取得していくしかありません。
HDLの説明に
「
37 : カーソルキー[←]
38 : カーソルキー[↑]
39 : カーソルキー[→]
40 : カーソルキー[↓]
」
とありますから、
repeat
getkey left, 37
getkey up, 38
getkey right, 39
if left=1 : dialog "←"
if up=1 : dialog "上"
if right=1: dialog "みぎ"
wait 10
loop
みたいなかんじです。
やはりdialogの箇所に、それぞれのキーが押されたときに実行したい処理を入れてください。
なかなかこの説明は仮定が多すぎ、本当にあなたのご希望に添えるかどうかはわかりません。
なんせ使ってる命令すらも書かれていないもので…
途中のスクリプトでも乗せていただければ速いんでしょうけども。
それから、キー取得箇所以外での失敗もあるかもしれません。
たとえば、旋回の処理とか。
そればっかりは、スクリプトを見てみないと。。。