JasonHK

Guess the Number

Dec 28th, 2014
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 9.55 KB | None | 0 0
  1. Public Class Main
  2.  
  3.     Dim UnknownNumber, SmallerNumber, LargerNumber, Minute, Second, Attempts, AnswerCode, TryAgain, TotalScore As Integer '數字變數宣告
  4.     Dim RandomNumbers As New Random() '隨機數宣告
  5.  
  6.     Private Sub GenerateNewNumberButton_Click(sender As Object, e As EventArgs) Handles GenerateNewNumberButton.Click
  7.  
  8.         NewGame() '開始新遊戲副程式
  9.  
  10.     End Sub
  11.  
  12.     Private Sub Main_Load(sender As Object, e As EventArgs) Handles Me.Load
  13.  
  14.         '啟用產生新數字按鈕,禁用其他控制項
  15.         GenerateNewNumberButton.Enabled = True
  16.         SubmitAnswerTextBox.Enabled = False
  17.         SubmitAnswerButton.Enabled = False
  18.  
  19.         '改變焦點
  20.         GenerateNewNumberButton.Focus()
  21.  
  22.     End Sub
  23.  
  24.     Private Sub EmergencyRepairLinkLabel_Click(sender As Object, e As EventArgs) Handles EmergencyRepairLinkLabel.Click
  25.  
  26.         '緊急重新啟動
  27.         Application.Restart()
  28.  
  29.     End Sub
  30.  
  31.     Private Sub SubmitAnswerButton_Click(sender As Object, e As EventArgs) Handles SubmitAnswerButton.Click
  32.  
  33.         '提交答案副程式
  34.         SubmitAnswer()
  35.  
  36.     End Sub
  37.  
  38.     Sub CheckAnswer() '驗證答案副程式
  39.  
  40.         '增加嘗試次數
  41.         Attempts = Attempts + 1
  42.         If Attempts <= 9 Then
  43.             AttemptsLabel.Text = "0" & Attempts
  44.         Else
  45.             AttemptsLabel.Text = Attempts
  46.         End If
  47.  
  48.         '驗證答案
  49.         If SubmitAnswerTextBox.Text = UnknownNumber Then
  50.             TimekeepingTimer.Stop() '停止計時器
  51.             CalculateTotalScore() '計算總成績副程式
  52.             WriteResult() '寫入遊戲成績副程式
  53.             SmallerNumberLabel.Text = UnknownNumber : UnknownNumberLabel.Text = UnknownNumber : LargerNumberLabel.Text = UnknownNumber  '將標籤改為答案
  54.             SmallerThanLabel1.Text = "=" : SmallerThanLabel2.Text = "="
  55.             MsgBox("恭喜你,猜中了!" & Chr(13) & "該數字是 " & UnknownNumber & "。", vbOKOnly + vbInformation, "遊戲結束")
  56.             MsgBox("// 本次成績" & Chr(13) & "使用時間:" & OperationTimeLabel.Text & Chr(13) & "嘗試次數:" & AttemptsLabel.Text, vbOKOnly + vbInformation, "遊戲成績")
  57.             TryAgain = MsgBox("遊戲成績已經被記錄。" & Chr(13) & "要再試一次嗎?", vbYesNo + vbQuestion, "遊戲訊息")
  58.             If TryAgain = 6 Then '再試一次
  59.                 NewGame()
  60.             Else
  61.                 SubmitAnswerTextBox.Text = "" '重置輸入框
  62.                 GenerateNewNumberButton.Enabled = True '啟用產生新數字按鈕
  63.                 GenerateNewNumberButton.Focus() '改變焦點
  64.             End If
  65.         Else
  66.             If SubmitAnswerTextBox.Text < UnknownNumber Then '如果比未知數小,更改較小數字
  67.                 SmallerNumber = SubmitAnswerTextBox.Text
  68.                 SmallerNumberLabel.Text = SmallerNumber
  69.             End If
  70.             If SubmitAnswerTextBox.Text > UnknownNumber Then '如果比未知數大,更改較大數字
  71.                 LargerNumber = SubmitAnswerTextBox.Text
  72.                 LargerNumberLabel.Text = LargerNumber
  73.             End If
  74.             SubmitAnswerTextBox.Enabled = True '啟用提交答案輸入控制項
  75.             SubmitAnswerButton.Enabled = True
  76.             SubmitAnswerTextBox.Text = ""
  77.             SubmitAnswerTextBox.Focus() '改變焦點
  78.         End If
  79.  
  80.     End Sub
  81.  
  82.     Sub SubmitAnswer() '提交答案副程式
  83.  
  84.         '禁用提交答案控制項
  85.         SubmitAnswerTextBox.Enabled = False
  86.         SubmitAnswerButton.Enabled = False
  87.  
  88.         '檢查答案
  89.         If SubmitAnswerTextBox.Text = "" Then '檢查內容是否為空白
  90.             MsgBox("輸入框不能為空白!", vbOKOnly + vbCritical, "錯誤警告")
  91.             SubmitAnswerTextBox.Enabled = True '啟用提交答案輸入控制項
  92.             SubmitAnswerButton.Enabled = True
  93.             SubmitAnswerTextBox.Focus() '改變焦點
  94.         Else
  95.             If IsNumeric(SubmitAnswerTextBox.Text) = True Then
  96.                 If SubmitAnswerTextBox.Text > SmallerNumber Then '檢查答案是否過大或過小
  97.                     If SubmitAnswerTextBox.Text < LargerNumber Then
  98.                         CheckAnswer() '驗證答案副程式
  99.                     Else
  100.                         MsgBox("你的數字數值太大了!" & Chr(13) & "數值必須小於 " & LargerNumber & "。", vbOKOnly + vbExclamation, "數值錯誤") '過大警告
  101.                         SubmitAnswerTextBox.Text = ""
  102.                         SubmitAnswerTextBox.Enabled = True '啟用提交答案輸入控制項
  103.                         SubmitAnswerButton.Enabled = True
  104.                         SubmitAnswerTextBox.Focus() '改變焦點
  105.                     End If
  106.                 Else
  107.                     MsgBox("你的數字數值太小了!" & Chr(13) & "數值必須大於 " & SmallerNumber & "。", vbOKOnly + vbExclamation, "數值錯誤") '過小警告
  108.                     SubmitAnswerTextBox.Text = ""
  109.                     SubmitAnswerTextBox.Enabled = True '啟用提交答案輸入控制項
  110.                     SubmitAnswerButton.Enabled = True
  111.                     SubmitAnswerTextBox.Focus() '改變焦點
  112.                 End If
  113.             Else
  114.                 MsgBox("輸入框只可輸入數字!", vbOKOnly + vbCritical, "錯誤警告")
  115.                 SubmitAnswerTextBox.Text = ""
  116.                 SubmitAnswerTextBox.Enabled = True '啟用提交答案輸入控制項
  117.                 SubmitAnswerButton.Enabled = True
  118.                 SubmitAnswerTextBox.Focus() '改變焦點
  119.             End If
  120.         End If
  121.  
  122.     End Sub
  123.  
  124.     Sub NewGame() '開始新遊戲副程式
  125.  
  126.         '禁用所有控制項
  127.         GenerateNewNumberButton.Enabled = False
  128.         SubmitAnswerTextBox.Enabled = False
  129.         SubmitAnswerButton.Enabled = False
  130.  
  131.         '重置輸入框
  132.         SubmitAnswerTextBox.Text = ""
  133.  
  134.         '重置變數
  135.         SmallerNumber = 1 : LargerNumber = 200
  136.         Minute = 0 : Second = 0
  137.         Attempts = 0 : AnswerCode = 0
  138.  
  139.         '重置文字標籤
  140.         SmallerNumberLabel.Text = "1" : UnknownNumberLabel.Text = "?" : LargerNumberLabel.Text = "200"
  141.         SmallerThanLabel1.Text = "<" : SmallerThanLabel2.Text = "<"
  142.         OperationTimeLabel.Text = "00' 00""" : AttemptsLabel.Text = "00" : AnswerCodeLabel.Text = "Answer Code: 0000"
  143.  
  144.         '出題
  145.         UnknownNumber = Int(RandomNumbers.Next(1, 200)) '產生大於「1」小於「200」的數值
  146.  
  147.         '答案代碼
  148.         AnswerCode = UnknownNumber * 5 + 2
  149.         MsgBox("答案代碼:" & AnswerCode, vbOKOnly + vbInformation, "答案代碼") '彈出答案代碼信息
  150.  
  151.         If AnswerCode >= 1000 Then '答案代碼標籤
  152.             AnswerCodeLabel.Text = "Answer Code: " & AnswerCode
  153.         Else
  154.             If AnswerCode >= 100 Then
  155.                 AnswerCodeLabel.Text = "Answer Code: " & "0" & AnswerCode
  156.             Else
  157.                 If AnswerCode >= 10 Then
  158.                     AnswerCodeLabel.Text = "Answer Code: " & "00" & AnswerCode
  159.                 Else
  160.                     AnswerCodeLabel.Text = "Answer Code: " & "000" & AnswerCode
  161.                 End If
  162.             End If
  163.         End If
  164.  
  165.         '啟用提交答案輸入控制項
  166.         SubmitAnswerTextBox.Enabled = True
  167.         SubmitAnswerButton.Enabled = True
  168.  
  169.         '開始計時器
  170.         TimekeepingTimer.Start()
  171.  
  172.         '改變焦點
  173.         SubmitAnswerTextBox.Focus()
  174.  
  175.     End Sub
  176.  
  177.     Private Sub TimekeepingTimer_Tick(sender As Object, e As EventArgs) Handles TimekeepingTimer.Tick
  178.  
  179.         '紀錄時間
  180.         Second = Second + 1 '記錄秒數
  181.         If Second = 60 Then '分鐘進位,秒數清零
  182.             Minute = Minute + 1
  183.             Second = 0
  184.         End If
  185.         If Second <= 9 Then '顯示時間
  186.             If Minute <= 9 Then
  187.                 OperationTimeLabel.Text = "0" & Minute & "' " & "0" & Second & """"
  188.             Else
  189.                 OperationTimeLabel.Text = Minute & "' " & "0" & Second & """"
  190.             End If
  191.         Else
  192.             If Minute <= 9 Then
  193.                 OperationTimeLabel.Text = "0" & Minute & "' " & Second & """"
  194.             Else
  195.                 OperationTimeLabel.Text = Minute & "' " & Second & """"
  196.             End If
  197.         End If
  198.  
  199.     End Sub
  200.  
  201.     Sub WriteResult() '寫入遊戲成績副程式
  202.  
  203.         '寫入遊戲成績
  204.         If My.Computer.FileSystem.FileExists(".\Game Result\Game Result " & Format(Now, "yyyy-MM-dd") & ".csv") Then '檢查檔案是否存在,如果不存在則建立檔案
  205.             My.Computer.FileSystem.WriteAllText(".\Game Result\Game Result " & Format(Now, "yyyy-MM-dd") & ".csv", Format(Now, "yyyy-MM-dd HH:mm:ss") & "," & UnknownNumber & "," & """" & OperationTimeLabel.Text & """""" & "," & Attempts & "," & TotalScore & vbCrLf, True) '寫入成績
  206.         Else
  207.             My.Computer.FileSystem.CreateDirectory(".\Game Result") '建立新目錄
  208.             My.Computer.FileSystem.WriteAllText(".\Game Result\Game Result " & Format(Now, "yyyy-MM-dd") & ".csv", "Time,Answer,Operating Time,Attempts,Total Score" & vbCrLf, True) '建立檔案
  209.             My.Computer.FileSystem.WriteAllText(".\Game Result\Game Result " & Format(Now, "yyyy-MM-dd") & ".csv", Format(Now, "yyyy-MM-dd HH:mm:ss") & "," & UnknownNumber & "," & """" & OperationTimeLabel.Text & """""" & "," & Attempts & "," & TotalScore & vbCrLf, True) '寫入成績
  210.         End If
  211.  
  212.     End Sub
  213.  
  214.     Sub CalculateTotalScore() '計算總成績副程式
  215.  
  216.         '計算總成績
  217.         TotalScore = (Minute * 60 + Second) / Attempts
  218.  
  219.     End Sub
  220. End Class
Advertisement
Add Comment
Please, Sign In to add comment