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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0805
kkkkk自機を動かす方法を教えてください4未解決


kkkkk

リンク

2017/8/5(Sat) 14:01:24|NO.80834

HSPでの自機の動かし方について質問です
自機を動かすのをコントロールキーでやりたいのですが調べてみてもよくわかりません
出来ればサンプルコード付きで書いてもらえると嬉しいです
まだまだ初心者なのでお願いします



この記事に返信する


科学太郎

リンク

2017/8/5(Sat) 15:40:21|NO.80836

> 自機を動かすのをコントロールキーでやりたいのですが調べてみてもよくわかりません
これが良く分かりません。

つまり、
[CTRL]+[E]で上移動
[CTRL]+[S]で左移動
[CTRL]+[D]で右移動
[CTRL]+[X]で下移動
という意味でしょうか?



沢渡

リンク

2017/8/5(Sat) 16:49:02|NO.80839

初心者であることと、文脈から考えて、カーソルキーのことを言ってるのではないかと。
(ダイヤモンドカーソルなんか知ってる初心者がいたら怖いです)

キー状態の検出にはstick文を使うとよいでしょう。

stick key,15
これでキーの状態が変数keyの中に入るのですが、第2引数の15というのは、
「上下左右のカーソルキーについては、押しっぱなしでも検出する」という意味です。
(ヘルプのstick文の説明にある、カーソルキーをあらわす4つの数値を足したものです)

そのあとのキー入力の判定の仕方ですが、これには&を使った判定式を使います。

if key&1 { //(左キーが押された時に実行するコード) }
こうすると、左キーが押されているかどうかを判定し、押されている場合は
括弧内のコードを実行します。
&1の部分を2や4や8に変えれば他のキーも判定できます。

これらを踏まえた上で。

screen 0,400,300,0 font msgothic,16 x=100 y=100 flag=1 repeat stick key,15 if key&1 { //左 flag=1 x=limit(x-1,0,400) } if key&2 { //上 flag=1 y=limit(y-1,0,300) } if key&4 { //右 flag=1 x=limit(x+1,0,400) } if key&8 { //下 flag=1 y=limit(y+1,0,300) } if flag { redraw 0 color 255,255,255 : boxf color 0,0,0 pos x,y : mes "●" redraw 1 } flag=0 await 30 loop



kkkkk

リンク

2017/8/9(Wed) 21:50:48|NO.80877

返信遅れましたサンプルコードまでありがとうございます!



kkkkk

リンク

2017/8/9(Wed) 21:51:22|NO.80878

急いでいたので文章がおかしくなっていました



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