코딩하는 해달이

[VB] 비주얼베이직 중간평가 실습 과제 2 본문

학교 공부/비주얼 베이직 실습

[VB] 비주얼베이직 중간평가 실습 과제 2

코딩하는 해달 2022. 11. 4. 18:33

오늘은 학교 수업시간에 배운것을 토대로 중간평가 실습과제를 풀어보았습니다.

 

문제 2. Click Me 게임

 

2-1 폼

2-2 코드

Imports System.Threading

Public Class Form1
	Private trd As Thread

	Private MeButton As New Button()
	Dim GameTime As Integer = 10
	Dim GameScore As Integer = 0
	Dim rd As New Random

	'' 폼로드
	Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
		lblScore.Hide()
		lblTime.Hide()
		btnStart.Text = "시작"


		'' 동적 버튼 생성
		With Me.MeButton
			.Text = "Click Me"
			.Location = New System.Drawing.Point(rd.Next(0, 750), rd.Next(0, 400))
			.Size() = New System.Drawing.Size(100, 50)
			.Visible = False
		End With

		AddHandler Me.MeButton.Click, AddressOf MeButton_Click
		Me.Controls.Add(MeButton)
	End Sub

	Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click

		'' 크로스 스레드 해결
		CheckForIllegalCrossThreadCalls = False

		trd = New Thread(AddressOf ThreadTask)
		trd.IsBackground = True
		btnStart.Hide()
		tmGame.Start()
		trd.Start()
		lblTime.Show()
		lblScore.Show()
		MeButton.Show()
	End Sub

	'' 1초마다 버튼 위치 변화 (타이머)
	Private Sub tmGame_Tick(sender As Object, e As EventArgs) Handles tmGame.Tick
		'' 10초 경과
		If GameTime = 1 Then
			GameTime = 10
			GameScore = 0
			btnStart.Show()
			lblScore.Hide()
			lblTime.Hide()
			MeButton.Hide()

			tmGame.Stop()
		Else
			Me.MeButton.Location = New System.Drawing.Point(rd.Next(0, 750), rd.Next(0, 400))

			GameTime -= 1
		End If
	End Sub

	'' 버튼 클릭시 점수 증가
	Private Sub MeButton_Click(sender As Object, e As EventArgs)
		GameScore += 1
	End Sub

	'' 남은 시간 계산 및 표시
	Private Sub ThreadTask()
		Do
			'' 루프탈출
			If GameTime = 0 Then
				Exit Do
			End If

			lblTime.Text = "남은시간: " & CStr(GameTime)
			lblScore.Text = "점수: " & CStr(GameScore)
		Loop
	End Sub
End Class
반응형
Comments