• ベストアンサー

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 ・ ・ ・

質問者が選んだベストアンサー

  • ベストアンサー
  • mac_res
  • ベストアンサー率36% (568/1571)
回答No.3

>1問ごとに1桁ずつ増やしたいのですが、どうすればいいでしょう。 -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- randomize *start cls y=0:c=1:t=0:num=10:adj=1 *h0 a=rnd(num-adj)+adj pos 0,y mes " " pos 0,y mes ""+a+"" wait 100 pos 0,y s="" input s,100,20 pos 100,y button "判定",*h1 stop *h1 pos 100,y if a=s : mes "正解" : t=t+1: else :mes "不正解" y=y+25:c=c+1:num=num*10:adj=adj*10 clrobj if c <= 6 : goto *h0 pos 0,y mes"5問中"+""+t+""+"問正解" button "続ける",*start button "終わる",*finish stop *finish end

その他の回答 (2)

  • mac_res
  • ベストアンサー率36% (568/1571)
回答No.2

HSPを今はじめて触ったのですが面白いですね。 -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- randomize *h0 cls s="" a=rnd(9)+1 mes ""+a+"" wait 100 cls input s,100,20 button "判定",*h1 stop *h1 cls if a=s : mes "正解": else :mes "不正解" : wait 100 goto *h0

adojanaiyo
質問者

お礼

ありがとうございます。 1問ごとに1桁ずつ増やしたいのですが、どうすればいいでしょう。

回答No.1

HSPについては詳しくありませんが、このような場合は、「関数」を使って組んだほうがよいかと思います。

関連するQ&A

  • 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超初心者の質問。

    ↓のスクリプトで、テストを押した後画面をクリックしても*test1に戻りません。 どうすればいいでしょうか。 複数のラベルから呼び出したいので、goto命令は使わない方法でお願いします。 *test1 cls button gosub "テスト",*test2 stop *test2 cls mes "クリックして下さい" getkey a,1 if a=1 : return stop

  • 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を始めた私は、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です。

  • javascript クイズ

    こちらの http://okwave.jp/qa/q4105194.html 回答のNo.4の回答者様のソースコードなのですが <html> <head><style>.hid{display:none} .disp{display:block}</style></head> <body> <div id="s0">Start!!<input type="button" value="click" onClick="view();$('s0').className='hid';"></div> <div id="mn"></div> <div id="s1" class="hid"> Q1.どれを選ぶ? <input type="button" value="A" onClick="seikai()"> <input type="button" value="B" onClick="hazure()"> <input type="button" value="C" onClick="hazure()"> </div> <div id="s2" class="hid"> Q2.どれを選ぶ? <input type="button" value="A" onClick="seikai()"> <input type="button" value="B" onClick="hazure()"> <input type="button" value="C" onClick="hazure()"> </div> <div id="s3" class="hid"> Q3.どれを選ぶ? <input type="button" value="A" onClick="seikai()"> <input type="button" value="B" onClick="hazure()"> <input type="button" value="C" onClick="hazure()"> </div> <div id="s4" class="hid"> Q4.どれを選ぶ? <input type="button" value="A" onClick="seikai()"> <input type="button" value="B" onClick="hazure()"> <input type="button" value="C" onClick="hazure()"> </div> <div id="s5" class="hid"> Q5.どれを選ぶ? <input type="button" value="A" onClick="seikai()"> <input type="button" value="B" onClick="hazure()"> <input type="button" value="C" onClick="hazure()"> </div> <div id="hz" class="hid"> はずれでした! <input type="button" value="次に進む" onClick="nextq()"> </div> <div id="sk" class="hid"> 正解です! <input type="button" value="次に進む" onClick="nextq()"> </div> <script> var n=3; var q=5; var f=[]; var l=[]; var c=0; var cntc=0; window.onload=function(){ for(var i=0;i<n;i++){ do x=Math.floor(Math.random()*q)+1; while(f[x]) f[x]=true;l[i]=x; } } function view(){$('s'+l[c]).className='disp';$('mn').innerHTML=c+1+"問目";} function $(o){ return document.getElementById(o); } function hazure(){ $('hz').className='disp';} function seikai(){ $('sk').className='disp'; cntc++;} function nextq(){ $('sk').className='hid'; $('hz').className='hid'; $('s'+l[c]).className='hid'; if(++c>=n) owari(); else view(); } function owari(){ $('mn').innerHTML='正解数は、'+cntc; } </script> このままですと正解と不正解のボタンがそれぞれ一回ずつ押せてしまいます これを正解、不正解のどちらか一回しか押せないようにするにはどうすればよろしいでしょうか? よろしくお願いします。

  • Tiny Basicのプログラムです。。

    Tiny Basicのプログラムで 試験の成績を入力し、30点未満なら青点、30点以上50点未満なら赤点、50点以上なら合格と表示するプログラムを作成せよ。青点、赤点、合格を判定する部分は副プログラムとして作成せよ。 という問題があったんです。 それで僕は Cls input A Call Q Sub Q END Select Case A=A Case A=<29 print"青点" Case A=>50 print"合格" Case else print"赤点" End Select End sub というプログラムをつくったんですがどんな点数を入れても青点って結果がでてしまうんです。 どうしたらいいんでしょうか?

  • WINAPIでのキー入力した文字列の比較について

    以前ここで教えていただいた wsprintf( input, "%s%c", input, (int)wp ); を使って文字列の比較判定を行ないたいのですが WM_CHAR内で wsprintf( input, "%s%c", input, (int)wp ); wsprintf( ans, "%s", input); check= strcmp(que ,input); //queはファイルからのアルファベット文字列 if(check == 0){ //正解した時の処理 } else{ 不正解だった時の処理 } としているのですが一文字入力するごとにelseに引っかかって上手くいきません,どうすればいいでしょうか? よろしくお願いします。

  • N88相互Basic for Windows95でのプログラム

    初めて質問いたします。 ただいまN88相互Basic for Windows95というソフトを使用して「1~45の数字をランダムに並べて表示する」というプログラムを作成してみたのですが、どうしても数字が重複してしまうのです。どこが間違っているのか教えてください。 下記に自分の作成したプログラムを記入します。又、より効率のいい書き方があれば教えてください。よろしくお願いしますm(_ _)m 10 cls 20 input "今日は何月";tuki 30 input "何日";niti 40 for a=0 to tuki 50 for b=0 to niti 60 seki=rnd 70 next b 80 next a 90 cls 100 dim x(50) 110 x(0)=0 120 for s=1 to 45 130 x(s)=int(rnd*45) 140 for c=0 to s-1 150 if x(s)=x(c) or x(s)<1 then x(s)=int(rnd*45):goto 150 160 next c 170 if s=10+e then e=e+10:q=q+1 180 locate q*3,s-e:print x(s) 190 next s 一応流れとしましては、 「月と日を入力してランダムさを出す」 ↓ 「1~50のデータ数があるのを定義する」 ↓ 「今決めているデータの数字と今まで決めたデータの数字を比較して一緒か1未満なら決めなおす」 ↓     ↑ 「今までのと比較して、一緒じゃないなら数字を表示して次のデータへ」 という流れにしている予定ですが、どうやっても数字が重なってしまうので改善点があれば教えてください。お願いしますm(_ _)m

  • javascript 乱数が取得できない

    はじめまして。 一月ほど前から「パズルネット ソフィア」 http://www.pori2.net/js/number/4.html というサイトでjavascriptの基礎を学んでいるのですが、乱数 を扱う段階になって自分の作成したプログラム(以下) <html> <head> </head> <body onload="Mondai()"> <form name="quiz"> <input type="text" value="" > <input type="button" value="赤" onclick="Push(0)"> <input type="button" value="青" onclick="Push(1)"> <input type="button" value="黄" onclick="Push(2)"> <input type="button" value="緑" onclick="Push(3)"> <input type="button" value="白" onclick="Push(4)"> </form> <script type="text/javascript"> <!-- var col=new Array("red","bleu","yellow","green","white"); var Rnd; function Mondai(){ Rnd=Math.floor(Math.random() * 5 ); document.quiz.element[0].value=col[Rnd]; } function Push(num){ var n=parseInt(num); if( n==Rnd ){ Mondai(); }else{ alert("違います。"); } } // --></script> </body> </html> を実行してもテキストボックス内に何の値も表示されず 、ボタンを押しても「違います。」とだけしか出てきません。 ブラウザはfirefoxを使用しており、javascriptの設定もonに なっています。 カンマや鍵括弧などの記号にも打ち間違いがないかサンプル プログラムを参考にしながら確認してみたのですが、どこにも おかしな点はありませんでした。 サンプルプログラムは下記のとおりで、こちらは正常に実行されます。 <body onload="Mondai()"> <form name="quiz"> <input type="text" value=""> <input type="button" value="赤" onclick="Push(0)"> <input type="button" value="青" onclick="Push(1)"> <input type="button" value="黄" onclick="Push(2)"> <input type="button" value="緑" onclick="Push(3)"> <input type="button" value="白" onclick="Push(4)"> </form> <script type="text/javascript"> <!-- //色名の英単語を配列に入れる var col=new Array("red","blue","yellow","green","white"); //乱数を入れる変数 var Rnd; //テキストボックスに問題文(色名)を表示する関数 function Mondai(){ //0~4までの乱数を発生させる Rnd=Math.floor( Math.random() * 5 ); document.quiz.elements[0].value=col[Rnd]; } //正誤判定関数 function Push(num){ //引数を数字に変換 var n=parseInt(num); //正解なら次の問題を表示、間違っていたらアラートを表示する if ( n == Rnd ){ Mondai(); }else{ alert("違います!"); } } // --> </script> どなたかアドバイスをいただけないでしょうか? よろしくお願いします。

  • verilog で「*」を使って2の補数形式の乗算って・・・

    加算器、減算器 どうやらうまくいったようでやっと乗算器を作っています。それで早速質問ですが、2の補数形式を「*」をつかって作りたいのですが、次のようにやると文法エラーになってしまいます。 ****************************** module mul(a,b,q); input [15:0] a,b; output [32:0] q; reg [32:0] q; always@(a or b) begin if((a == 16'h8000) || (b == 16'h8000)) $monitor("error"); else if((a[15] == 0) && (b[15] == 0)) q = a * b; else if((a[15] == 0) && (b[15] == 1)) begin q =a * (~b+1); q = ~q+1; end else if((a[15] == 1) && (b[15] == 0)) begin q =(~a+1) * b; q = ~q+1; end elseif((a[15] == 1) && (b[15] == 1)) q = (~a + 1) * (~b + 1); else q = a * b; end endmodule ******************************** 内容は q = (~a + 1) * (~b + 1); (mul.v,28|16): expecting a semicolon(';') けれどどこが間違っているのか… ちなみにalways@(a[15] or b[15])のように書き換えるとシミュレーションできるのですが、結果があっていません。 どなたか教えてくださいm(_ _)m

専門家に質問してみよう