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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0804
YFH-555getkeyでスペースキーを押したときに動作がおかしくなる4解決


YFH-555

リンク

2015/8/4(Tue) 01:47:18|NO.70450

現在シューティングゲームのようなものを作っていて,
自機の移動と, 弾発射の部分を作っているのですが,
弾を発射しているときはなぜか斜めに移動することができません。
(右上にだけは移動できるようですが)

getkeyで使用している変数に重複はありません。
また, 自機の移動と弾の発射の処理は完全に独立しています。
問題の解決をよろしくお願いします。

以下スクリプトです。
どこがおかしいのか検討がつかないので,
かなり長くなっております。すみません。

screen 0,800,640 mx = 270.0 : my = 600.0 dim mb,64,4 //0=x, 1=y, 2=exist mb_cnt = 0 repeat 64 mb(cnt,0) = 0 mb(cnt,1) = 0 mb(cnt,2) = 0 loop repeat //描画部分 redraw 0 color 0,0,0 : boxf 0,0,539,639 color 0,255,0 : circle mx-10, my-10, mx+10, my+10 repeat 64 if mb(cnt,2) = 1 { color 128,128,0 circle mb(cnt,0)-3,mb(cnt,1)-3,mb(cnt,0)+3,mb(cnt,1)+3 } loop redraw 1 //自機操作部分 ue = 0 : getkey ue,38 si = 0 : getkey si,40 hi = 0 : getkey hi,37 mi = 0 : getkey mi,39 if (ue = 1)&(hi = 1) : mx = mx - 2.84 : my = my - 2.84 : ue = 0 : hi = 0 if (ue = 1)&(mi = 1) : mx = mx + 2.84 : my = my - 2.84 : ue = 0 : mi = 0 if (si = 1)&(hi = 1) : mx = mx - 2.84 : my = my + 2.84 : si = 0 : hi = 0 if (si = 1)&(mi = 1) : mx = mx + 2.84 : my = my + 2.84 : si = 0 : mi = 0 if (hi = 1)&(mi = 0) : mx = mx - 4.0 : hi = 0 if (hi = 0)&(mi = 1) : mx = mx + 4.0 : mi = 0 if (ue = 1)&(si = 0) : my = my - 4.0 : ue = 0 if (ue = 0)&(si = 1) : my = my + 4.0 : si = 0 shoot = 0 : getkey shoot,32 if shoot = 1 { if mb_cnt = 63 : mb_cnt = 0 mb(mb_cnt,2) = 1 mb(mb_cnt,0) = int(mx) mb(mb_cnt,1) = int(my) mb_cnt = mb_cnt + 1 shoot = 0 } wait 1 loop



この記事に返信する


YFH-555

リンク

2015/8/4(Tue) 01:53:37|NO.70451

【変数説明】
mx, my --- 自機x, y座標 (実数型)
ue --- getkey「↑」検出用
si --- getkey「↓」検出用
hi --- getkey「←」検出用
mi --- getkey「→」検出用
shoot --- getkey 「スペース」検出用
mb --- 自機弾管理用

mb (a,b)
a --- 弾番号 (最大64)
b --- 0 → 弾のx座標
1 → 弾のy座標
2 → 弾が存在するかどうか (0なら存在しない/1なら存在する)



Moz

リンク

2015/8/4(Tue) 04:50:06|NO.70452

おそらく「Nキーロールオーバー」でしょう。
キーボードの種類によっては同時押しを認識できる数に限界があるということです。
試しにshootをCtrlキーやZキーに設定してみると正常に動作するはずです。

あと、今回の質問とは関係ありませんが、getkeyの直前で変数に0を代入している部分は不要です。
getkey命令を実行すると、キーを押されていなくても変数には0が代入されます。



窓月らら

リンク

2015/8/5(Wed) 02:58:24|NO.70488

これはHSPの問題ではなくて、ハードウェア側の制限です。
どんな言語で書いても同じ問題にぶちあたるので、ソフト側ではどうしようもありません。
別のUSBキーボードなどを繋いで試してみればわかりますよ。



YFH-555

リンク

2015/8/5(Wed) 20:21:03|NO.70510

回答ありがとうございます。
Nキーロールオーバーでしたか。
Ctrlキーを割り当てると見事ちゃんと動作しました。

ただ, Ctrlキーじゃ操作しにくいかも知れないので
ジョイパッドとかに対応させてみようと思います。



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