visual basic.netでフラッシュ暗算のプログラムを作成しようと思っていますが、上手くいきません。
まずランダム関数によって101~999の3桁で試そうとしてます。
これを10個表示して結果を出したいのですが、
本来はlabelbox2に答えを入力し答えを確認しようと思いましたが、表示される数が1津市かでなかったため、
たとえばrが乱数だとした場合試しで乱数をlabel1に結果をlabel2に表示してみたく以下のようなループ文にしました。
for i=1 to 10 step 1
labelbox1.text=r
s=s+r
labelbox2.text=s
next i
のようにしています。
しかしlabelbox2には10個たせれた数が表示し、labelbox1には最後の乱数しかでません。
ですのでこのままではフラッシュ暗算にはならないので空き時間を入れたいのですが、for~next文を途中に追加し空ループで時間を稼ごうとしてもできません。
なにか待ち時間を上手くする方法ありませんか?
まだまだ初心者なのでいまいちよくわかりません。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
Option Explicit On
Option Strict On
Option Compare Binary
' Option Infer Off
Class Q4090807A
Inherits System.Windows.Forms.Form
Private QuestionLabel As System.Windows.Forms.Label
Private AnswerTextBox As System.Windows.Forms.TextBox
Private CheckButton As System.Windows.Forms.Button
Private RetryButton As System.Windows.Forms.Button
Private Timer As System.Windows.Forms.Timer
Private Dice As System.Random
Private Const Count As Integer = 10
Private Const Min As Integer = 101
Private Const Max As Integer = 999
Private Current As Integer = 0
Private Numbers As Integer()
Sub New()
Dice = New System.Random()
Me.Size = New System.Drawing.Size(800,600)
QuestionLabel = New System.Windows.Forms.Label
QuestionLabel.Left = 350
QuestionLabel.Top = 100
QuestionLabel.Size = New System.Drawing.Size(100,50)
QuestionLabel.Text = "問題"
AnswerTextBox = New System.Windows.Forms.TextBox
AnswerTextBox.Left = 350
AnswerTextBox.Top = 200
AnswerTextBox.Size = New System.Drawing.Size(100,50)
AnswerTextBox.Enabled = false
CheckButton = New System.Windows.Forms.Button
CheckButton.Left = 350
CheckButton.Top = 300
CheckButton.Size = New System.Drawing.Size(100,50)
CheckButton.Enabled = False
CheckButton.Text = "チェック"
RetryButton = New System.Windows.Forms.Button
RetryButton.Left = 200
RetryButton.Top = 300
RetryButton.Size = New System.Drawing.Size(100,50)
RetryButton.Enabled = True
RetryButton.Text = "再挑戦"
Me.Controls.AddRange(New System.Windows.Forms.Control(){QuestionLabel,AnswerTextBox,CheckButton,RetryButton})
Timer = New System.Windows.Forms.Timer()
Timer.Interval = 1000
AddHandler Timer.Tick,AddressOf Timer_Tick
AddHandler CheckButton.Click,AddressOf CheckButton_Click
AddHandler RetryButton.Click,AddressOf RetryButton_Click
Prepare()
Timer.Enabled = true
End Sub
Private Sub Timer_Tick(Sender As Object,e As System.EventArgs)
If Current < Count Then
QuestionLabel.Text = Numbers(Current).ToString()
Current = Current + 1
Else
Timer.Enabled = False
QuestionLabel.Text = ""
AnswerTextBox.Enabled = True
CheckButton.Enabled = True
End If
End Sub
Private Sub CheckButton_Click(Sender As Object,e As System.EventArgs)
CheckButton.Enabled = False
Dim Answer As Integer = 0
For i As Integer = 0 To Numbers.Length - 1
Answer = Answer + Numbers(i)
Next
Try
If Answer = Integer.Parse(AnswerTextBox.Text) Then
Me.BackColor = System.Drawing.Color.Blue
Else
Me.BackColor = System.Drawing.Color.Red
End If
Catch err As System.FormatException
System.Console.WriteLine(err.ToString()) 'コンソールアプリとして作成したのでこの辺でエラー出るかも
System.Console.ReadKey(true) 'コンソールアプリとして作成したのでこの辺でエラー出るかも
Finally
End Try
End Sub
Sub RetryButton_Click(Sender As Object,e As System.EventArgs)
Timer.Enabled = False
Prepare()
Timer.Enabled = True
End Sub
Sub Prepare()
AnswerTextBox.Enabled = False
AnswerTextBox.Text = ""
CheckButton.Enabled = False
Me.BackColor = System.Drawing.SystemColors.Control
For i As Integer = 0 To Count - 1
ReDim Preserve Numbers(i)
Numbers(i) = (Dice.Next Mod (Max + 1 - Min)) + Min
Next
Current = 0
End Sub
Shared Sub Main()
Dim Form1 As Q4090807A = New Q4090807A
Form1.ShowDialog()
End Sub
End Class
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- C言語・C++・C# C言語 3 2022/10/04 15:07
- Visual Basic(VBA) visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ 1 2023/02/08 00:18
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- Visual Basic(VBA) VBAで時間(00:00形式)を積算(足し算)したい 1 2022/11/15 17:04
- Excel(エクセル) エクセルのSUM関数について 4 2023/04/18 10:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループを途中で抜けたいのですが。
-
break文でループを一気に抜ける...
-
For文の終了値を関数にしても問...
-
do-while文が禁止される理由
-
エクセルVBAで Do While (1)って?
-
C言語、whileループを抜け出す...
-
C言語forループが完結した場合...
-
UWSCにてある一定の動作を無限...
-
入力した数値を倍々するプログラム
-
Cプログラムが終了しない
-
ループが回らない
-
if文の中にfor文なのか、for文...
-
プログラムで関数は使わない方...
-
while doについて
-
万年カレンダーのプログラム(C...
-
あなたのC言語コーディング規約
-
なぜCSQとCIP形式ではコ...
-
連立方程式の問題です 去年の新...
-
Enterキーを押されたら次の処理...
-
2÷3などの余りについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
break文でループを一気に抜ける...
-
do-while文が禁止される理由
-
ループを途中で抜けたいのですが。
-
入力した数値を倍々するプログラム
-
入力した文字列から母音だけを...
-
if文の中にfor文なのか、for文...
-
C言語forループが完結した場合...
-
エクセルでC言語のfor文と同じ...
-
Excel VBAで年度をまたぐ期間の...
-
For文の終了値を関数にしても問...
-
エクセルVBAで Do While (1)って?
-
C言語、whileループを抜け出す...
-
PAD図の書き方
-
Cプログラムが終了しない
-
PIC のプログラムについて ど...
-
他言語で言うcontinue文
-
C言語のプログラムみてください...
-
ループの特定入力終了
-
COBOLのEVALUATE文
-
for文while文の無限ループの違...
おすすめ情報