자료실

부자는 돈을 써서 시간을 아끼지만 가난한 사람은 시간을 써서 돈을 아낀다

vb6.0/vba

IT HUB를 찾아주셔서 감사합니다.

vba [vba] 가위, 바위, 보 게임

페이지 정보

profile_image
작성자 하나를하더라도최선을
댓글 0건 조회 4,598회 작성일 22-10-16 18:20

본문



지식인 답변하면서 잠깐 만들어 봤습니다.

기획력이 부족해서 ....



0c10c0d0f383c338144a996f6c17a753_1665911905_6336.PNG
 


Option Explicit
 
Private Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
 
Const TIMER_INTERVAL As Long = 100
Const TIMER_ID As Long = 3100
 
Private rndValues As Variant
Private userValue As Integer
Private comIndex As Integer
Private myValue As Integer
 
Private Sub tmMethod()
    'INTERVAL = 100 이므로 10회 당 약 1초
    '// 타이머의 정확도는 INTERVAL과 tmMethod 진입 횟수로 조절
End Sub
 
Private Sub okMethod()
    Stop_Timer
    Dim comValue As Integer
    Dim ckValue As Integer
    comIndex = comIndex + 1
    comValue = rndValues(comIndex)
    Select Case userValue
        Case 1
            Select Case comValue
                Case 1: ckValue = 1
                Case 2: ckValue = 3
                Case 3: ckValue = 2
            End Select
        Case 2
            Select Case comValue
                Case 1: ckValue = 2
                Case 2: ckValue = 1
                Case 3: ckValue = 3
            End Select
        Case 3
            Select Case comValue
                Case 1: ckValue = 3
                Case 2: ckValue = 2
                Case 3: ckValue = 1
            End Select
    End Select
    If ckValue = 2 Then myValue = myValue + 1
    Label1.Caption = Choose(ckValue, "무""승""패")
    Label2.Caption = Choose(comValue, "가위""바위""보")
    Caption = comIndex & "회 승률 " & Format((myValue / comIndex) * 100"0.00""%""")
    cmdEnabled
End Sub
 
Private Sub CommandButton1_Click()
    ReDim rndValues(1 To 45)
    Dim i As Integer, n As Integer, x As Integer
    For i = 1 To 3
        For n = 1 To 15
            x = x + 1
            rndValues(x) = i
        Next
    Next
    rndValues = RandData(rndValues): rndValues = RandData(rndValues)
    comIndex = 0: myValue = 0: cmdEnabled
'    Start_Timer    '// 사용자의 입력을 체크할려면 타이머를 이용
End Sub
 
Private Sub cmdEnabled()
    CommandButton2.Enabled = comIndex < 45
    CommandButton3.Enabled = comIndex < 45
    CommandButton4.Enabled = comIndex < 45
End Sub
 
Function RandData(ByVal dv As Variant) As Variant
    Dim j As Long, t As Variant, i As Long
    For i = UBound(dv) To LBound(dv) Step -1
        j = Application.RandBetween(LBound(dv), UBound(dv))
        t = dv(i): dv(i) = dv(j): dv(j) = t
    Next
    RandData = dv
End Function
 
Private Sub CommandButton2_Click(): userValue = 1: okMethod: End Sub
Private Sub CommandButton3_Click(): userValue = 2: okMethod: End Sub
Private Sub CommandButton4_Click(): userValue = 3: okMethod: End Sub
 
Sub Start_Timer()
    Stop_Timer
    SetTimer Application.hWnd, TIMER_ID, TIMER_INTERVAL, AddressOf tmMethod
End Sub
 
Sub Stop_Timer()
    KillTimer Application.hWnd, TIMER_ID
    Application.StatusBar = False
End Sub

첨부파일

댓글목록

등록된 댓글이 없습니다.