- 締切済み
途中でエラーが出てしまい手が止まってしまいました(T_T)
Visual Basicについてなんですが、いいですか? http://azsx00.tripod.co.jp/D001.jpg 初心者じみた質問ですみません。 上記の画像ののようなプログラムが途中までで引っかかってしまって先に進めません。 どなたかご指導下さい。 一応自分で考えた結果です。どこが悪いとか何が分かってないとかいろいろアドバイスもあればお願いします。まだ習い始めたばかりです。 Dim Number As Integer Dim Score As Integer Dim MessageText As String Private Sub Command1_Click() If Number > 7 Then Score = Score + 1 MessageText "あたり" End If If Number < 7 Then Score = Score - 1 MessageText "外れ" End If If Number = 7 Then Score = Score + 0 MessageText "引き分け" End If End Sub Private Sub Command2_Click() If Number > 7 Then Score = Score + 1 MessageText "あたり" End If If Number < 7 Then Score = Score - 1 MessageText "外れ" End If If Number = 7 Then Score = Score + 0 MessageText "引き分け" End If End Sub Private Sub Form_Load() Number = Rnd() * 13 + 1 Score = 0 Label1.Caption = "?" Text1.Text = "Score:" & Score End Sub Private Sub Label1_Click() If Number > 7 Then Label1.Caption = "Score" End If If Number < 7 Then Label1.Caption = "Score" End If End Sub
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- don_cha
- ベストアンサー率34% (139/407)
見本プログラムではありませんが、処理を箇条書きすると以下のような感じですね。 <乱数設定> 1.乱数により1~13の値を設定する。 2.設定値を表示するラベルに「?」を表示する。 <フォーム表示時> 1.乱数設定処理を行う。 <ボタン1(Small)押下時> 1.当たり判定処理を行う。(判定、スコア、ゲームオーバー、設定乱数表示) 2.乱数設定処理を行う。 <ボタン2(Large)押下時> 1.当たり判定処理を行う。(判定、スコア、ゲームオーバー、設定乱数表示) 2.乱数設定処理を行う。 <当たり判定> 1.Small(Large)ボタン押下で設定されている乱数が7より小さい(大きい)場合、 スコアに1点加算し、MessageTextに「当たり」を代入。 2.乱数が7と同値の場合は、MessageTextに「引き分け」を代入。 3.上記1.と2.に該当しない場合は、スコアを0にし、MessageTextに「外れ、 ゲームオーバー」を代入。 4.スコアをテキストボックスに表示、乱数をラベルに表示し、メッセージボックス で、上記1.~3.に代入されたMessageTextを表示。 5.スコアが0の時はプログラムを終了。 上記の<>内が各サブルーチンになりますね。
- itohh
- ベストアンサー率45% (210/459)
こんにちは。itohhといいます。 まずは、フローチャートを書いてみましょう。 あなたが、書いたソースでは仕様(URLにあるjpg)と違う動きになってしまいませんか? 1.「ゲームオーバー」はどこに行ったのでしょうか? 2.他にも仕様と違うところがありますよ。(あんまり、書いてしまうのもなんですから...) まず、フローチャートを書いて動きを把握することから始めてください。 あと、「MessageText」ですが、仕様の文脈からするとMsgBox関数だと思いますよ。 それから、どういうときに、イベント(Form_LoadやCommand2_Clickなど)が動くのかもう一度調べてみてください。 勉強ガンバってくださいね。
- don_cha
- ベストアンサー率34% (139/407)
私が気付いた部分を列挙しますね。 0.既にskogaさんがご指摘されているMessageTextは代入式に直してください。 1.Small(Large)ボタン押下時処理内で、乱数が7と同じ場合の処理でScore = Score + 0は意味がありません。 2.同じくSmall(Large)ボタン押下時処理内で、MessageTextを表示するメッセージボックスが無いので、当たったのか外れたのか判らないですね。 3.Label1_Click()処理は不要です。(この処理では、ラベルをクリックすると「?」マークが「Score」と言う文字に変わりますけど、仕様には無いですね。) 4.Small(Large)ボタン押下処理内で、「2.」の処理(メッセージボックスの表示)の前にLabel1のキャプションに設定されている乱数を表示する必要があります。 5.「2.」のメッセージボックス表示後に再度「?」を表示し、次の乱数を設定する必要があります。 6.各行の処理が何をしているのかを説明(コメント)を入れておいたほうがいいです。
- skoga
- ベストアンサー率14% (1/7)
文法的なミスだけですが... MessageTextは変数ですから, 代入するには MessageText = "あたり" のように = が必要です。 ラベルにスコアを表示するには Label1.Caption = CStr(Score) とします。 "Score" ではこの文字が表示されます。
補足
みなさんレス有り難う御座います。 言われたとおりに修正してみました。一応はエラーがでなくなりました。 しかしラベルの所に10という数字しか出てくれません。 どなたか見本プログラムを見せては頂けないでしょうか。 HTMLのように他人のwebサイトからテクニックを盗み取るみたいに (いい方が汚いですね)、流れも勉強させていただきたいです。