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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0424
hps初心者stickでスペースを使いますが・・・6解決


hps初心者

リンク

2014/4/24(Thu) 12:39:44|NO.61651

stickでスペースを押しても反応がありません。




*DRAWLOOP hgdraw hgsync 20 selpos JIKIOBJ :objgetfv FV stick KY,31 if KY&1 :fvadd FV,-0.15f,0.0f,0.0f if KY&4 :fvadd FV, 0.15f,0.0f,0.0f if KY&2 :fvadd FV, 0.0f,-0.15f,0.0f if KY&8 :fvadd FV, 0.0f,0.15f,0.0f fvmin FV, -4.2f,-4.5f,0.0f fvmax FV, 4.2f,0.0f,0.0f objsetfv FV gosub *SHOT goto *DRAWLOOP *SHOT if (KY&16) and (SHOTMODE=0){ ;こここここですすすすす SHOTMODE=1 selpos JIKIOBJ:objgetfv FV ;実機の位置習得 regobj SHOTOBJ,SHOTMODEL selpos SHOTOBJ : objsetfv FV setcoli SHOTOBJ,1,2 } if SHOTMODE=1{ selpos SHOTOBJ: objgetfv FV fvadd FV.2,-1.0f objsetfv FV fcmp RETVAL , FV.2,-80.0f if RETVAL=-1{ delobj SHOTOBJ SHOTMODE=0 } } return






全体です

#include "hgimg.as" randomize screen 0,640,480,0 hgini ;時キャラ作成 setsizef 0.7f,1.4f setuv 0,0,63,127 addplate JIKIMODEL,1 texload "supejiki.bmp" uvanim JIKIMODEL,50,2,0 ;床作成 setsizef 10.0f,4.0f setuv 0,0,640,208 addplate YUKAMODEL,1 texload "ground.bmp" uvanim YUKAMODEL,16,3,0 ;背景 texloadbg "supeback.bmp" ddim FV,4 ;弾作成 setsizef 1.0f,1.0f setuv 0,0,63,63 addplate SHOTMODEL,1 texload "supetama.bmp" uvanim SHOTMODEL,5,4,0 ;カメラ設定 selcpos: objsetf3 0.0f,-2.0f,6.0f gsel 0 regobj JIKIOBJ,JIKIMODEL,0 regobj YUKAOBJ,YUKAMODEL,OBJ_GROUND selpos YUKAOBJ : objsetf3 0.0f,0.5f,0.0f SHOTMODE=0 *DRAWLOOP hgdraw hgsync 20 selpos JIKIOBJ :objgetfv FV stick KY,31 if KY&1 :fvadd FV,-0.15f,0.0f,0.0f if KY&4 :fvadd FV, 0.15f,0.0f,0.0f if KY&2 :fvadd FV, 0.0f,-0.15f,0.0f if KY&8 :fvadd FV, 0.0f,0.15f,0.0f fvmin FV, -4.2f,-4.5f,0.0f fvmax FV, 4.2f,0.0f,0.0f objsetfv FV gosub *SHOT goto *DRAWLOOP *SHOT if (KY&16) and (SHOTMODE=0){ SHOTMODE=1 selpos JIKIOBJ:objgetfv FV ;実機の位置習得 regobj SHOTOBJ,SHOTMODEL selpos SHOTOBJ : objsetfv FV setcoli SHOTOBJ,1,2 } if SHOTMODE=1{ selpos SHOTOBJ: objgetfv FV fvadd FV.2,-1.0f objsetfv FV fcmp RETVAL , FV.2,-80.0f if RETVAL=-1{ delobj SHOTOBJ SHOTMODE=0 } } return



この記事に返信する


T.T

リンク

2014/4/24(Thu) 17:08:39|NO.61654


*SHOT if KY&16 : dialog
にしたらダイアログでました。
変数SHOTMODEが0ではないからではないでしょうか?
ちなみにどちらかが正しければは[or]であって[and]は両方正しければです。

2.不要部分の多い長いスクリプトの投稿は ご遠慮ください。

スクリプトの長文投稿は基本的にタブーです。
その割には、画像ファイルなしで、少しひどい感じが...
オンラインストレージサービスを利用することをお勧めします。



cats

リンク

2014/4/24(Thu) 19:26:54|NO.61659

この部分の記述に少し問題があります。

if (KY&16) and (SHOTMODE=0)
よくやるミスですが、基本stick命令で&を使うときは
このように「if (*&*) and (*=*) 」という記述をしては
いけません。
具体的な例が以下です。

flg=0 repeat stick key, 16 if (key&16)&(flg=0) : break await 15 loop mes "STOP"
スペースキーを押してもループを抜け出さないでしょう。
この問題を解決するには、2回に分けて条件分岐を使用する
という手段が簡単です。
上記のスクリプトの場合、以下のように直します。

flg=0 repeat stick key, 16 if (key&16){ if (flg=0) : break } await 15 loop mes "STOP"
これでスペースキーに反応するでしょう。



hps初心者

リンク

2014/4/24(Thu) 20:01:37|NO.61661

T.Tさま
以後気をつけます。すみませんでした


catsさま
できました。ありがとうございました



hps初心者

リンク

2014/4/24(Thu) 20:05:07|NO.61663

解決です。
ありがとうございました



Ve

リンク

2014/4/24(Thu) 20:34:04|NO.61667

T.Tさん

>不要部分の多い長いスクリプトの投稿は ご遠慮ください。

ページの読み込みに支障を来たすような無駄な長文に
対しての注意であって、170行程度のソースなら問題ないと思う。

>その割には、画像ファイルなしで、少しひどい感じが...

この掲示板上では、ソースのみが殆どです。

今回のケースでいうと外部ファイルは関係ないので、
ソースを見てどこが悪いかアドバイスするようになります。



GENKI

リンク

2014/4/24(Thu) 20:50:33|NO.61669

もう解決したようですが、このままだと原因がわからないまま過去ログに残ってしまうので蛇足です。
分かりやすくはないですが、if文1回で済ませるやり方を書いておきます。

*main redraw 1 : await 16 : redraw 0 : color 255, 255, 255 : boxf : color : pos 0,0 stick KY,31 if ((KY&16)!0) and (SHOTMODE=0){ mes "スペースキー" SHOTMODE = 1 } if SHOTMODE = 1{ mes "SHOTMODE = 1" SHOTMODE = 0 } goto *main

詳しくは「ビット演算」で調べてください。
更に蛇足。

KY = 16 SHOTMODE = 0 mes (KY&16) mes SHOTMODE=0 mes (KY and 1) if 0 : mes "false" if 1 : mes "true"



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