N88BASIC エラー・数あてゲーム

このQ&Aのポイント
  • N88BASICで作成した数あてゲームで文法エラーが発生しています。
  • エラーの原因を特定するために、プログラムの各行を確認しましょう。
  • 可能性としては、行の終わりのコロン(:)が適切に配置されていないことが考えられます。
回答を見る
  • ベストアンサー

以下は、N88BASIC エラー・

>10 ANSWER = INT(RND(1)*10)+1 >20 INPUT "GUESS (1-10)? ", GUESS >30 IF GUESS > ANSWER THEN PRINT "TOO HIGH!" : GOTO 20 >40 IF GUESS < ANSWER THEN PRINT "TOO LOW!" : GOTO 20 >50 IF GUESS = ANSWER THEN PRINT "YOU GOT IT!" : END 以上はN88BASICWINDOWS95互換プログラムで作成した、簡単な数あてゲーム しかし、実行しようとすると「文法エラー」とでる。 どこが問題か?

noname#235477
noname#235477

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

  • ベストアンサー
noname#242220
noname#242220
回答No.1

Select Case文を使います。 IF文は If 条件1 Then 処理1 ElseIf 条件2 Then 処理2 Else 処理3 End If の形で記載します

noname#235477
質問者

お礼

なるほど

その他の回答 (4)

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.5

>どこが問題か? 環境が無いので検証できませんので、考え方を提言します。 何処かにエラーが有るときは実行順序を順次チェックします。 1.開始直後にエラーが出て20行のINPUTまで進まないときは10行のRND(1)が誤りの可能性があります。 2.INPUTの待ちまでエラーが無く、不正解のときエラーが発生するときは:GOTO 20の書き方にエラーがあります。:の代わりにELSEを使う必要ありと判断する。 3.正解のときだけエラーになるときはENDの書き方が違っているのでGOTO 行番号に書き換える。

  • bardfish
  • ベストアンサー率28% (5029/17765)
回答No.4

「文法エラー」って、そのまま出ているわけではないですよね・ Syntax Error in <行番号> となるはずですが・・・ それと、#2さんも指摘していますが「>」も入力しているんですか? だとしたらそれがエラーの原因です。 というか、1行入力してreturnを押した時点でエラーになると思うんですけど・・・ N88BASICはPC-8801mk2、PC-8801mk2 FRなどでさんざんいじりましたw

noname#252332
noname#252332
回答No.3

おまけ 10 ANSWER = INT(RND(1)*10)+1 20 INPUT "GUESS (1-10)? ", GUESS 30 IF GUESS > ANSWER THEN PRINT "TOO HIGH!" : GOTO 20 40 IF GUESS < ANSWER THEN PRINT "TOO LOW!" : GOTO 20 50 IF GUESS = ANSWER THEN PRINT "YOU GOT IT!" : END こうです。

noname#252332
noname#252332
回答No.2

プログラムは間違えていないようですが各行の先頭の引用記号”>”を付けたまま実行しようとしていませんか。各行の先頭は数字(行番号)にしてください。

関連するQ&A

  • 整数でないとき

    10 INPUT X 20 IF X=0 THEN END 30 C=X-2*INT(X/2) 40 IF C=0 THEN PRINT”偶数” ELSE PRINT”奇数” 50 GOTO 10 というプログラムはXが整数でなければ奇数と判定してしまいます。20行と30行の間に命令を追加して、Xが整数でないときは”整数でない”と表示して、次の入力を待つように修正し、整数のときだけ奇数か偶数かを判定するようにするには、 25 IF X^2>INT(X^2) THEN PRINT”整数でない”:GOTO 10 を追加する。 でよいのでしょうか? ぜひ教えてください。 

  • エラー処理について

    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 38 Then PICOCX1.Outp PortB, 7, High PICOCX1.Outp PortB, 4, High End If If KeyCode = 40 Then PICOCX1.Outp PortB, 6, High PICOCX1.Outp PortB, 5, High End If If KeyCode = 37 Then PICOCX1.Outp PortB, 7, High PICOCX1.Outp PortB, 5, High End If If KeyCode = 39 Then PICOCX1.Outp PortB, 6, High PICOCX1.Outp PortB, 4, High End If End Sub Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer) If KeyCode = 38 Then PICOCX1.Outp PortB, 7, Low PICOCX1.Outp PortB, 4, Low End If If KeyCode = 40 Then PICOCX1.Outp PortB, 6, Low PICOCX1.Outp PortB, 5, Low End If If KeyCode = 37 Then PICOCX1.Outp PortB, 7, Low PICOCX1.Outp PortB, 5, Low End If If KeyCode = 39 Then PICOCX1.Outp PortB, 6, Low PICOCX1.Outp PortB, 4, Low End If End Sub というプログラムですがこれがもしPICOCX1.Outp PortB, 4, Lowなどが実行できないとエラーとして返ってきてしまいます。このときエラー箇所をもう一度実行する方法はあるのでしょうか? お願いします。こちらの環境はVB6.0です。

  • syntax error, unexpected '}' というエラーの対処法

    PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33 というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか? ・game.php <html> <head> <title>数当てゲーム</title> </head> <body> <h1 style="background:#cccccc">数当てゲーム</h1> <form method="POST" action="game.php"> 1~100までの数を入力してください <input type="text" name="answer" size="5" maxlength="3" /> <input type="sbumit" value=回答" /> </form> <hr /> <?php session_start(); if(is_null($_SESSION['answer'])){ mt_stand(microtime()*1000000); $_SESSION['answer']=mt_rand(1,100); $_SESSION['game_cnt']=0; } if($_POST['answer']!=""){ $_SESSION['game_cnt']++; if($_session['answer']==$_POST['answer']){ print("おめでとうございます". $_SESSION['game_cnt']."回で正解しました!"); session_destroy(); }else{ if($_SESSION['answer']>$_POST['answer']){ print("もう少し大きいです。"); }else print("もう少し小さいです。"); } } } ?> </body> </html> それとこの間違えたところをなおしたあとはいつもコンピュータを再起動しないと修正したところが適用されないのですがほかに方法はないですか?基本的な質問ですいません。

    • ベストアンサー
    • PHP
  • サブルーチン

    下は身長の平均を求めるプログラムですけど、身長の高い順、低い順に並び替えしたいんですがどうしたらいいかわからないので、よかったら誰か教えていただけませんか                   REM プログラム     10            DIM A(12) 20 PRINT "メニュー” 30 PRINT "身長入力...1" 40 PRINT "身長出力...2" 50 PRINT "終了" 60 PRINT "どれにしますか" 70 INPUT B 80 IF B=1 THEN GOSUB300 ELSE 110 90 GOTO 30 100 IF B=2 THEN GOSUB500 ELSE 130 110 GOTO 30 120 IF B=3 THEN GOSUB700 ELSE 30 130 END 140 A(11)=B 300 FOR I=1 TO 10 310 PRINT i;: PRINT "人目" 315 INPUT C 320 A(I)=C 330 PRINT "これでいいですか?" 340 PRINT "1.YES 2.NO" 345 INPUT D 350 IF D=1 THEN 380 ELSE 370 360 IF D=2 THEN 315 ELSE 340 370 A(11)=A(11)+A(I) 380 NEXT I 390 RETURN 400 IF C=1 THEN 520 500 PRINT "先に入力してください" 510 GOTO 30 515 FOR I=1 TO 12 520 PRINT A(I) 530 NEXT I 540 RETURN 550 PRINT "これで身長の平均を求めるのを終わります"700 RETURN 710  

  • 乱数 IFステートメント

    Debug.Print Int((11 - 8 + 1) * Rnd + 8) 「これって8~11までの乱数を発生させますよ」 という意味であってますか? そして、 Sub a() Dim 文字数 As Long 文字数 = Int((11 - 8 + 1) * Rnd + 8) If 8 >= 文字数 <= 10 Then MsgBox 文字数 & "は、8~10の間です" End If End Sub を実行すると、11でも MsgBox 文字数 & "は、8~10の間です" が表示されてしまいます。 「8~10の間なら」メッセージボックスを表示するには、 If 8 >= 文字数 <= 10 Then の部分をどうすればいいですか?

  • n88basicのプログラムを十進ベーシックに翻訳してください。

    n88basicの次のプログラムを十1進ベーシックではどうなるのか教えてください。 10 cls 20 p=1000 30 for n=1 to 1000:next n 40 p=p-1 50 if p=-1 then end 60 locate 10,10:print p 70 goto 30

  • 十進ベーシックのプログラムの間違いを教えてください。

    誰か次のプログラムの間違いを直してください。入力を間違えても次に進めるようにするにはどこをどう変えたらよいのですか? RESTORE 30 READ a$ 40 INPUT b$ IF a$=b$ THEN IF a$<>b$ THEN GOTO 40 PRINT a$ GOTO 30 DATA i,x,d,k,k,h,end END IF END

  • n88basicでは動いたのに十進ベーシックではだめでした。どうしてですか?

    10 INPUT a,b 20 IF a<b THEN beep 1,FOR n=1 TO 100000,NEXT n,beep 0 22 IF a<b THEN swap a,b 30 PRINT a/b END n88basicではこのままで動いたのに十進ベーシックでは「ここにNは書けません」とメッセージが出ました(20行)。どうしたらいいですか。

  • N88-日本語 BASIC ASCII ファイル

    N88-日本語 BASIC ASCII ファイルにするのにはどうしたら、宜しいのでしょうか。 ・MS-DOS 6.20 に付属されている、「Fileconv」を使ってみました。 MS-DOS → N88BASIC ドライブ名は、「C」ですが、Cと打つと、弾かれてしまって、入力が不可能です。 ・因みに、MS-DOSのファイル形式になっている、現在は、以下の記述名です。 ----- 10 width 80,20                         '10~96行まで初期設定 20 cls:beep 30 print "KEY操作 1 左 2 右 3 ミサイル発射" 40 print "自機 <T> を操り 敵 = を撃つゲーム" 50 for i=0 to 40 60 locate i,5:print "-" 70 next 80 locate 19,5:print "-<T>-" 90 x=19: m=0:mx=0:my=0              'x、y 自機の座標  mx、my ミサイル座標 95 randomize(val(right$(time$,2)))         'ex,ey 敵座標  96 ey=int(rnd(1)*10)+6:ex=5 100 gosub 200                    '100~130 メインルーチン 110 if m=1 then gosub 300  'm=0 ミサイル未発射。この時は300行(ミサイル移動ルーチン                     'にはいかない m=1 ミサイル発射中は300行へ   120 gosub 400 130 goto 100 200 b$=""                       '自機の移動、ミサイル発射 202 a$=inkey$ 205 if a$<>"" then b$=a$:goto 202 210 if b$="1" and x>1 then x=x-1 215 if b$="2" and x<37 then x=x+1 220 if b$="3" and m=0 then mx=x+2:my=5:m=1:beep 230 locate x,5 :print"-<T>-" 240 return 300 locate mx,my:print " "              'ミサイル移動ルーチン 310 my=my+1 320 if mx=ex and my=ey then gosub 600: end   '当たり判定  330 if my>15 then mx=0:my=0:m=0:return     '下までいったらミサイル終了。m=0に戻す 340 locate mx,my:print "V":return 400 locate ex,ey:print " "               '敵移動ルーチン           410 ex=ex+1 420 if ex=mx and ey=my then gosub 600 :end   '当たり判定 430 if ex>39 then ex=0: ey=int(rnd(1)*10)+6    '端までいったら新座標 440 locate ex,ey:print"=" 450 return 600 beep                          '当たりの時の処理 610 locate mx,my:color 4:print "*" 620 print "大当たり THE END": color 7 630 print "HIT ANY KEY" 640 a$=input$(1):return

  • 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