• ベストアンサー

HSP超初心者の質問。

OMPの回答

  • OMP
  • ベストアンサー率23% (132/553)
回答No.1

実際はどういう動きになるのでしょうか? 私が持ってるやつ(Ver2.61)では、エラーになります。 buttonのあとにgosubは使えません。 今は使えるんでしょうかねぇ。 で、もしgosubが使えたとして、returnで戻るのはその場所なので gosubより上にあるtest1には戻りませんよね。 他の方法を考えるしかないのですが、ちょっと全体像が見えないので どのようにアドバイスしていいのか・・・ 例えば gosub test1 *test1 f=0 cls button gosub "テスト",*test2 if f=1 : return stop *test2 cls mes "クリックして下さい" getkey a,1 if a=1 : f=1 : return stop 私の環境では動作確認ができませんので不安ですが これでどうですか?

nanashi-774
質問者

お礼

ありがとうございます。 実行してみたところクリックしても反応がありませんでした。

関連するQ&A

  • HSPについて

    HSP初心者ですが↓のスクリプトは暗記ゲームなんですが、同じようなことを何度も繰り返しています。省略する方法はないのでしょうか。それとinput命令で最初にある0を消してから入力しなければいけませんが、最初を空白にする方法も教えてください。 randomize cls *q1 cls s=0 q+=1 a1=rnd(9)+1 mes ""+a1+"" wait 100 cls input s,100,20,q button "判定",*h1 a=a1 stop *h1 cls if a=s : wait 100 : else :mes "不正解" : wait 100 : end *q2 cls s=0 q+=1 a1=rnd(9)+1 : a2=rnd(9)+1 mes ""+a1+""+a2+"" wait 100 cls input s,100,20,q a=a1*10+a2 button "判定",*h2 stop *h2 cls if a=s : wait 100 : else :mes "不正解" : wait 100 : end *q3 cls s=0 q+=1 a1=rnd(9)+1 : a2=rnd(9)+1 : a3=rnd(9)+1 mes ""+a1+""+a2+""+a3+"" wait 100 cls input s,100,20,q a=a1*100+a2*10+a3 button "判定",*h3 stop *h3 cls if a=s : wait 100 : else :mes "不正解" : wait 100 : end *q4 ・ ・ ・

  • HSPで作ったやつが動きません

    HSP初心者です。 数当てゲームを作ってみたんですが、動かしてみると大変なことに (数がどんどん増えていきます。) 以下に記すので、どこがおかしいか教えてください。 ct=0 num=100 a=rnd(200)+1 goto *top *top cls print"1~200の次の数を求めよ" print"試した回数:"+ct button"+1",*up_num_1 button"+10",*up_num_10 button"-1",*down_num_1 button"-10",*down_num_10 button"ok!",*ok print num *up_num_1 num+=1:goto *top *up_num_10 num+=10:goto *top *down_num_1 num-=1:goto *top *down_num_10 num-=10:goto *top *ok if num=a :goto *yes if num+11>a :goto *big_10 if num>a+10 :goto *big_11 if num-11<a :goto *small_10 if num<a-10 :goto *small_11 *big_10 mes"大きい。ただし、誤差10以内。" wait 50 goto *top *big_11 mes"大きい。ただし、誤差11以上" wait 50 goto *top *small_10 mes"小さい。ただし、誤差10以内。" wait 50 goto *top *small_11 mes"小さい。ただし、誤差11以上。" wait 50 goto *top *yes mes"正解!" stop

  • プログラミングのHSPなんですが、このソースの文字(敵、自)をチカチカ

    プログラミングのHSPなんですが、このソースの文字(敵、自)をチカチカするのをどうにかしたいです。 redrawをどこにすればいいですか?このソースがおかしいのでしょうか? ソースがおかしければ正しいソースを書いていただけないでしょうか? よろしくお願いします /* よけゲー */ 自機位置x=100 : 自機位置y=100 screen 0,300,300 repeat gosub *自機移動 gosub *敵 gosub *味方 loop *自機移動 stick key,15 if key&1 : 自機位置x-=4 if key&4 : 自機位置x+=4 if key&2 : 自機位置y-=4 if key&8 : 自機位置y+=4 await 10 cls return *敵 mes "敵" return *味方 pos 自機位置x ,自機位置y mes "自" return

  • HSP 素数計算

    最近HSPを始めた私は、repeat-loopを勉強して、ある値までの数字の素数判定が出来るようにプログラムしてみようと以下のように書いてみました。 (1・2は面倒だったので直接表示してしまいました) しかし、repeat 10 と書いているのに、2~3倍近い値まで計算され表示されます。(10と入れると29まで) 何処が問題か指摘してください。 screen 2,200,900,,200,600 mes "1は素数である" mes "2は素数である" a=3 repeat 10 repeat a-2,2 if a\cnt == 0{ mes ""+a+"は素数じゃない" goto *lipi } loop mes ""+a+"は素数である" *lipi a = a+1 loop stop OSは関係ないとは思いますが、一応Win2000です。

  • jQuery 動的にボタンが増えた時

    <html> <head> <title>js sample</title> <script type="text/javascript" src="js/jquery-1.3.2.js"></script> <script type="text/javascript"> jQuery(document).ready( function() { $(".button_cls_1").click(function(){ alert('hello world! button 1'); }); $(".button_cls_2").click(function(){ alert('hello world! button 2'); }); }); </script> </head> <body> <input class="button_cls_1" type="button" value="テスト1" /> <input class="button_cls_2" type="button" value="テスト2" /> </body> </html> 上記のようなスクリプトでbutton_cls_1、button_cls_2が動的に増えた時に どのように書いたらいいかわかりません。 button_cls_1、button_cls_2、button_cls_3、button_cls_4の時もあれば button_cls_1、button_cls_2の時もあります。

  • 「HSP」で左クリック判定がうまく判定されません

    マウスの左クリック判定があいまいに判定されます。 原因が不明なので教えて下さい。(初心者なので。。) /* 初期化 */ screen 0,600,400 cls 4 /* MAIN */ *main xx = mousex : yy = mousey if (xx < 0):xx = 0 if (xx > 600):xx = 600 if (yy < 0):yy = 0 if (yy > 400):yy = 400 if (cc1 == 0){ // cc1 カラー設定のフラグ cc2++ // cc2 カラー設定 if (cc2>254){ cc1=1 } } if (cc1 == 1){ cc2-- if (cc2==0){ cc1=0 } } getkey k1,2 // 右クリック getkey k2,1 // 左クリック wait 1 if ( k1 == 1){ // 右クリック判定 cls 4 } if ( k2 == 1){ // 左クリック判定 flg = flg^0x01 // ビット反転 } if ((xx != xx2)||(yy != yy2)){ // マウス移動確認 xx2 = xx yy2 = yy pos 0,0 color 0,0,0 boxf 0,0,110,20 color 255,255,255 print "xx="+xx+":yy="+yy // マウス位置情報 if (flg == 0):goto *move // 描画ルーチン } goto *main *move color cc2,cc2,cc2 line xx,yy,xx,yy+10 // 四角を描画 line xx,yy,xx+10,yy line xx+10,yy,xx+10,yy+10 line xx,yy+10,xx+10,yy+10 goto *main

  • HSPについて

    screen 0,320,240,1,dispx-320>>1,dispy-240>>1 mes "coin:a" mes "hit:s" mci "open Coin.wav alias abc" mci "open hit.wav alias def" *key onkey *push stop *push if iparam=65 : mci "play abc" if iparam=83 : mci "play def" wait 30 goto *key 文化祭用にプログラムを組んだのですが、実行してもらえれば分かると思いますが、特定のキーを押すと1回目は問題なく再生されるのですが、2回目に同じキーを押すと音がでません。 キーを押すと、特定の音が出るように組みました。 どのようにすればいいでしょうか? よろしくお願いします. 言語はHSPです。

  • HSP 耐久力のある敵

    こんにちは。HSPでSTGを制作しております そこで「耐久力のある敵」を作ったのですが 【敵と敵2のヒットが一緒になってしまうので、敵と敵2が同時に消えてしまいます】 原因は「敵と敵2」を一緒にしていることなんですが、 一緒にしないとこの先ソースが大きくなってしまうため一緒にするしかないと思ってます この場合選択肢がいくつかあると思います 1:敵を一緒にまとめたソース(これ)で解決する 2:敵を一緒にまとめる方法を変えて改善するか 3:当たった時の処理を変えるか 1を選択しなんとかしたいのですが、何かもっとよい方法がありましたら教えてください それではよろしくお願いします  -- ソース -- screen 0,380,450 buffer 1 // picload "自機.bmp" gsel 0,1 buffer 3 // picload "でかい妖精2.bmp" gsel 0 myx = 150 : myy = 350 ;自機座標 mySpd = 4 ;自機スピード ;←自機弾 TMMAX = 100 dim SHOT,100 dim SX,100 : dim SY,100 ;妖精 DKMAX = 2 repeat DKMAX DK_ene(DTK) = 0 DK_enex(DTK) = 0 : DK_eney(DTK) = 0 DTK++ loop ;****************メインループ************************* *メイン redraw 2 : color 20,20,20 : boxf ;****************カウンター************************* color 255,0,0 pos 10,90 : mes "←敵カウンター " + HIT pos 10,110 : mes "→敵カウンター " + HIT2 ;**************************************************** gosub *弾移動 gosub *自機移動 gosub *妖精 gosub *敵VS弾 ;自機 pos myx,myy : gmode 4,29,42,255 : gcopy 1,1,0 ;妖精 DTK = 0 repeat DKMAX if DK_ene(DTK) = 1 : pos DK_enex(DTK),DK_eney(DTK) : gmode 4,58,45,255 : gcopy 3,0,0 DTK++ loop ;自機弾 repeat TMMAX if SHOT(cnt) = 1{ pos SX(cnt),SY(cnt) : gmode 2,9,8,255 : gcopy 1,1,43 }loop redraw : await 15 goto *メイン ;**************自機の移動******************************* *自機移動 stick key,15 if key & 1 : myx = myx - mySpd if key & 2 : myy = myy - mySpd if key & 4 : myx = myx + mySpd if key & 8 : myy = myy + mySpd return ;****************弾の移動****************************** *弾移動 getkey keyZ,90 ;Zキー repeat TMMAX if (keyZ) and SHOT(cnt) = 0 and rensya = 0 { SHOT(cnt) = 1 : SX(cnt) = myx + 10 : SY(cnt) = myy - 10 : rensya = 500 } if SHOT(cnt) = 1 : SY(cnt) -= 10 if SY(cnt) < 0 : SHOT(cnt) = 0 if rensya > 0 : rensya -= 1 loop return ;****************妖精***************************** *妖精 ;敵X座高 DK_ENX(0) = 100 DK_ENX(1) = 200 ;位置 DTK = 0 repeat DKMAX  if DK_ene(DTK) = 0 : DK_ene(DTK) = 1 : DK_enex(DTK) = DK_ENX(DTK) : DK_eney(DTK) = 150 DTK++ loop return

  • VBAの3次方程式にたいする質問

    VBAで3次方程式 AX^3+BX-Cの編集を行っているのですが、130行目から170行目の意味がよくわかりません。大変困っています。どなたかお答えしていただけないでしょうか? 全てがわからずとも、なんらかの知識があれば助言お願いしたいです。 Sub test() 100 A = Range("A1").Value 110 B = Range("A2").Value 120 C = Range("A3").Value 130 CC = 0: AC = 0.1 140 XC = CC: GoSub 170 150 YC = BC: XC = AC + CC: GoSub 170: DC = CC: CC = DC - AC * YC / (BC - YC) 160 If Abs(DC - CC) >= 0.000001 Then GoTo 140 Else GoTo 180 170 BC = A * XC ^ 3 + B * XC - C: Return 180 Range("A7").Value = CC End Sub

  • N88 basicプログラムの質問(ノルム計算)1

    N88 basicプログラムにおいて鉱物のノルム計算ができるようにしたいのですが、プログラムを打ち込んだのですが、うまく動きません。どなたかわかる方がいればご教授頂きたく願います。 かなり長くなりますが、ぜひともお願い致します。 下記、打ち込んだプログラムとなります。 長いので、質問を分けて入力します。 10 ' 20 '***** normative calculation program for clay minerals ***** by T,Igarashi,1983 30 ' 40 OPTION BASE 1 50 CONSOLE 0,25,0,1 60 WIDTH 40,25 70 ' 80 ' 90 DIM A$(22),DMY$(22),AA$(22),B1$(31),M$(8),L$(8) 100 DIM A(8,22),A1(22),A2(22),B(31),B0(8,31),C9(31),TOTAL(2,8) 110 GOSUB *INIT.1 120 ON ERROR GOTO 5000 130 GOSUB *ENTER 140 FOR QQ=1 TO NN 150 GOSUB *INIT.2 160 IF KORF=1 THEN GOSUB *FILE ELSE GOSUB *KEYBOARD 170 GOSUB *STORE 180 GOSUB *CALC 190 GOSUB *OUTPUT 200 NEXT QQ 210 GOSUB *PRINTOUT 220 GOTO 130 230 ' 240 ' 250 ' 260 *INIT.1 270 RESTORE 290 280 FOR I=1 TO 22 : READ AA$(I) : READ A2(I) : NEXT 290 DATA SIO2,60.085,TiO2,79.899,Al2O3,101.961,Fe2O3,159.692,FeO,71.846,MnO,70.937,MgO,40.304,CaO,56.079,Na2O,61.979,K2O,94.195 300 DATA P2O5,141.943,Cl,35.453,SO3,80.57,S,32.6,Cr2O3,151.989,ZrO2,123.218,F,18.99,CO2,44.9,H2O+,18,H2O-,1,Ig.LOSS,1,Others,1 310 RESTORE 330 320 FOR I=1 TO 31 : READ B1$(I) : NEXT 330 DATA Q,C,ad,mi,ab,an,ka,se,ch,gi,mo,pp,dp,al,Z,hl,th,cc,mg,sd,li,mt,he,cm,pr,il,ru,ap,fr,en,ot 340 C9(1)=A2(1) : C9(2)=A2(3) : C9(3)=A2(1)+A2(3) : C9(4)=A2(10)+A2(3)+A2(1)*6 : C9(5)=A2(9)+A2(3)+A2(1)*6 : C9(6)=A2(8)+A2(3)+A2(1)*2 : C9(7)=A2(3)+A2(1)*2+A2(19)*2 350 C9(8)=A2(10)+A2(3)*3+A2(1)*6+A2(19)*2 : C9(9)=A2(7)*5+A2(3)+A2(1)*3+A2(19)*4 : C9(10)=A2(3)+A2(19)*3 : C9(11)=A2(9)*33+A2(3)+A2(7)+A2(1)*4+A2(19)*4 : C9(12)=A2(3)+A2(1)*4+A2(19) 360 C9(13)=A2(3)+A2(19) : C9(14)=A2(10)+A2(3)*3+A2(13)*4+A2(19)*6 : C9(15)=A2(1)+A2(16) : C9(16)=(A2(9)-16)/2+A2(12) : C9(17)=A2(9)+A2(13) : C9(18)=A2(8)+A2(18) : C9(19)=A2(7)+A2(18) : C9(20)=A2(5)+A2(18) 370 C9(21)=A2(4)+A2(19) : C9(22)=A2(4)+A2(5) : C9(23)=A2(4) : C9(24)=A2(5)+A2(15) : C9(25)=A2(5)-16+A2(14)*2 : C9(26)=A2(2)+A2(5) : C9(27)=A2(2) : C9(28)=A2(8)*10+A2(11)*3+A2(19) 380 C9(29)=A2(8)-A2(17)*2 : C9(30)=A2(1)+A2(7) : C9(31)=1 : DD=0 390 FOR I=1 TO 31 : B(I)=0 : NEXT 400 RETURN 410 ' 420 ' 430 ' 440 *ENTER 450 C=0 : KORF=0 : SCREEN 3,3 : CLS 3 : SCREEN 3,0 : LINE(0,0)-(639,199),6,BF : COLOR 2 460 LOCATE 0,5 : PRINT "How many samples (Max 8 samples)";: INPUT NN 470 IF NN>8 THEN CLS 1 : GOTO 460 480 IF NN=0 THEN GOTO *PROEND 490 COLOR 2 : LOCATE 0,8 : PRINT "Input data from Keyboard or File or End : K/F/E" 500 Y$=INKEY$ 510 IF Y$="" THEN 490 520 IF Y$="e" OR Y$="E" THEN GOTO *PROEND 530 IF Y$="k" OR Y$="K" THEN KORF=0 : RETURN 540 IF Y$<>"f" AND Y$<>"F" THEN 490 550 KORF=1 560 RETURN 570 ' 580 ' 590 ' 600 *INIT.2 610 CLS 1 620 FOR I=1 TO 22 : A(QQ,I)=0 : NEXT I 630 FOR I=1 TO 31 : B(I)=0 : B0(QQ,I)=0 : NEXT I 640 RETURN 650 ' 660 ' 670 ' 680 *FILE 690 OPEN "data.1" AS #1 700 FIELD #1,40 AS MINERAL$,40 AS L1$ 710 FOR I=1 TO 22 : FIELD #1,(I-1)*4+80 AS DMY$(I),4 AS A$(I) : NEXT 720 MAX=LOF(1) : IF MAX=0 THEN RETURN 440 730 LOCATE 1,2 : PRINT MAX;"records are filing." 740 IF DD=1 THEN 800 750 LOCATE 2,5 : PRINT "You need list (Y/N)?": Y$=INKEY$ 760 IF Y$"" THEN 750 770 IF Y$="N" OR Y$="n" OR Y$="ミ" THEN 800 780 IF Y$="Y" OR Y$="y" OR Y$="ン" THEN GOSUB *NAME.LIST : GOTO 800 790 GOTO 750 800 LOCATE 2,10 : INPUT "Record No.";N 810 IF N>MAX THEN CLS 1 : GOTO 730 820 GET #1,N 830 M$=MINERAL$ : L$=L1$ 840 FOR I=1 TO 11 : A(QQ,I)=CVS(A$(I)) : A(QQ,I+11)=CVS(A$(I+11)) : NEXT 850 CLOSE #1 : DD=1 860 LOCATE 2,15 : PRINT "Correct data : Y/N"; : Y$=INKEY$ 870 IF Y$="" THEN 860 880 IF Y$="Y" OR Y$="y" THEN C=1 : GOTO 1120 890 IF Y$="N" OR Y$="n" THEN RETURN 180 900 GOTO 860 910 ' 920 ' 930 ' 940 *NAME.LIST 950 LPRINT 960 LPRINT CHR$(27) ; "V0960" ;CHR$(&H8) 970 LPRINT "Sample Name" ; TAB(40); "Locality" 980 LPRINT CHR$(27);"V0960";CHR$(&H8) 990 FOR II=1 TO MAX 1000 GET #1, II 1010 M$=MINERAL$ : L$=L1$ 1020 LPRINT M$; TAB(40); L$ 1030 NEXT 1040 LPRINT CHR$(27) ; "V0960";CHR$(&H8) 1050 LPRINT CHR$(12) 1060 RETURN 1070 ' 1080 ' 1090 ' 1100 *KEYBOARD 1110 M$="" : L$="" : FOR I=1 TO 22 : A(QQ,I)=0 : NEXT I