⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 module1.bas

📁 简单的猜数字、二十四点游戏
💻 BAS
字号:
Attribute VB_Name = "Module1"
Public MyA(3) As String
Public Pm, Pn, Po As Integer
Public Pi, Pj, Pk, Pl As Integer
Public MaxGameTime As Integer
Public ABSFlag As Boolean
Public FFlag As Boolean
Public Game24Answer As Double
Public Game24Box(10) As String
Public AddNum As Integer
Public FormFlag As Boolean
Public Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long         ' Note that if you declare the lpData parameter as String, you must pass it By Value.
Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Public Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long
Public OldPntX As Integer
Public OldPntY As Integer
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Type POINTAPI
        X As Long
        Y As Long
End Type
Public Pnt As POINTAPI

Public Function PanDuan(NumP() As Integer) As Boolean
On Error Resume Next
Dim AddNum1 As Double
Dim AddNum2 As Double
Dim AddNum3 As Double
PanDuan = False
Pm = 0
Pn = 0
Po = 0
Pi = 0
Pj = 0
Pk = 0
Pl = 0
For Pi = 0 To 3

 For Pj = 0 To 3
  If Pj <> Pi Then
    For Pk = 0 To 3
     If Pk <> Pj And Pk <> Pi Then
        For Pl = 0 To 3
          If Pl <> Pk And Pl <> Pj And Pl <> Pi Then
              For Pm = 0 To 3
                For Pn = 0 To 3
                  For Po = 0 To 3
                    '1((x,y),z),k
                    If Pm = 0 Then AddNum1 = NumP(Pi) + NumP(Pj)
                    If Pm = 1 Then AddNum1 = NumP(Pi) - NumP(Pj)
                    If Pm = 2 Then AddNum1 = NumP(Pi) * NumP(Pj)
                    If Pm = 3 Then AddNum1 = NumP(Pi) / NumP(Pj)
                    
                    If Pn = 0 Then AddNum2 = AddNum1 + NumP(Pk)
                    If Pn = 1 Then AddNum2 = AddNum1 - NumP(Pk)
                    If Pn = 2 Then AddNum2 = AddNum1 * NumP(Pk)
                    If Pn = 3 Then AddNum2 = AddNum1 / NumP(Pk)
                    
                    If Po = 0 Then AddNum3 = AddNum2 + NumP(Pl)
                    If Po = 1 Then AddNum3 = AddNum2 - NumP(Pl)
                    If Po = 2 Then AddNum3 = AddNum2 * NumP(Pl)
                    If Po = 3 Then AddNum3 = AddNum2 / NumP(Pl)
                    If AddNum3 = 24 Then
                       PanDuan = True
                       AddNum = 1
                       Exit Function
                    End If
                    '2(x,y),(z,k)
                    If Pm = 0 Then AddNum1 = NumP(Pi) + NumP(Pj)
                    If Pm = 1 Then AddNum1 = NumP(Pi) - NumP(Pj)
                    If Pm = 2 Then AddNum1 = NumP(Pi) * NumP(Pj)
                    If Pm = 3 Then AddNum1 = NumP(Pi) / NumP(Pj)
                    
                    If Po = 0 Then AddNum2 = NumP(Pk) + NumP(Pl)
                    If Po = 1 Then AddNum2 = NumP(Pk) - NumP(Pl)
                    If Po = 2 Then AddNum2 = NumP(Pk) * NumP(Pl)
                    If Po = 3 Then AddNum2 = NumP(Pk) / NumP(Pl)
                    
                    If Pn = 0 Then AddNum3 = AddNum1 + AddNum2
                    If Pn = 1 Then AddNum3 = AddNum1 - AddNum2
                    If Pn = 2 Then AddNum3 = AddNum1 * AddNum2
                    If Pn = 3 Then AddNum3 = AddNum1 / AddNum2
                    If AddNum3 = 24 Then
                       PanDuan = True
                       AddNum = 2
                       Exit Function
                    End If
                    '3(x,(y,z)),k
                    If Pn = 0 Then AddNum1 = NumP(Pj) + NumP(Pk)
                    If Pn = 1 Then AddNum1 = NumP(Pj) - NumP(Pk)
                    If Pn = 2 Then AddNum1 = NumP(Pj) * NumP(Pk)
                    If Pn = 3 Then AddNum1 = NumP(Pj) / NumP(Pk)
                    
                    If Pm = 0 Then AddNum2 = NumP(Pi) + AddNum1
                    If Pm = 1 Then AddNum2 = NumP(Pi) - AddNum1
                    If Pm = 2 Then AddNum2 = NumP(Pi) * AddNum1
                    If Pm = 3 Then AddNum2 = NumP(Pi) / AddNum1
                    
                    If Po = 0 Then AddNum3 = AddNum2 + NumP(Pl)
                    If Po = 1 Then AddNum3 = AddNum2 - NumP(Pl)
                    If Po = 2 Then AddNum3 = AddNum2 * NumP(Pl)
                    If Po = 3 Then AddNum3 = AddNum2 / NumP(Pl)
                    If AddNum3 = 24 Then
                      PanDuan = True
                      AddNum = 3
                      Exit Function
                    End If
                    '4x,((y,z),k)
                    If Pn = 0 Then AddNum1 = NumP(Pj) + NumP(Pk)
                    If Pn = 1 Then AddNum1 = NumP(Pj) - NumP(Pk)
                    If Pn = 2 Then AddNum1 = NumP(Pj) * NumP(Pk)
                    If Pn = 3 Then AddNum1 = NumP(Pj) / NumP(Pk)
                    
                    If Po = 0 Then AddNum2 = AddNum1 + NumP(Pl)
                    If Po = 1 Then AddNum2 = AddNum1 - NumP(Pl)
                    If Po = 2 Then AddNum2 = AddNum1 * NumP(Pl)
                    If Po = 3 Then AddNum2 = AddNum1 / NumP(Pl)
                    
                    If Pm = 0 Then AddNum3 = NumP(Pi) + AddNum2
                    If Pm = 1 Then AddNum3 = NumP(Pi) - AddNum2
                    If Pm = 2 Then AddNum3 = NumP(Pi) * AddNum2
                    If Pm = 3 Then AddNum3 = NumP(Pi) / AddNum2
                    If AddNum3 = 24 Then
                       PanDuan = True
                       AddNum = 4
                       Exit Function
                    End If
                    '5x,(y,(z,k))
                    
                    If Po = 0 Then AddNum1 = NumP(Pk) + NumP(Pl)
                    If Po = 1 Then AddNum1 = NumP(Pk) - NumP(Pl)
                    If Po = 2 Then AddNum1 = NumP(Pk) * NumP(Pl)
                    If Po = 3 Then AddNum1 = NumP(Pk) / NumP(Pl)
                    
                    If Pn = 0 Then AddNum2 = NumP(Pj) + AddNum1
                    If Pn = 1 Then AddNum2 = NumP(Pj) - AddNum1
                    If Pn = 2 Then AddNum2 = NumP(Pj) * AddNum1
                    If Pn = 3 Then AddNum2 = NumP(Pj) / AddNum1
                    
                    If Pm = 0 Then AddNum3 = NumP(Pi) + AddNum2
                    If Pm = 1 Then AddNum3 = NumP(Pi) - AddNum2
                    If Pm = 2 Then AddNum3 = NumP(Pi) * AddNum2
                    If Pm = 3 Then AddNum3 = NumP(Pi) / AddNum2
                    If AddNum3 = 24 Then
                       PanDuan = True
                       AddNum = 5
                       Exit Function
                    End If
       
                  Next
                  DoEvents
                Next
                DoEvents
              Next
              DoEvents
           End If
         Next
         DoEvents
       End If
     Next
     DoEvents
   End If
 Next
 DoEvents
Next
End Function
Public Function JiSuanAnswer(StrNum As String) As Boolean
On Error GoTo LL
FormFlag = False
JiSuanAnswer = False
Dim LofStr As Integer
Dim Li As Integer
Dim Lm As Integer
Dim MidStr As String
Dim GameJi(3) As Integer
LofStr = Len(StrNum)
For Li = 1 To LofStr
  MidStr = Mid(StrNum, Li, 1)
  If Asc(MidStr) > 48 And Asc(MidStr) < 58 Or MidStr = "A" Or MidStr = "B" Or MidStr = "C" Or MidStr = "D" Or Asc(MidStr) = 42 Or Asc(MidStr) = 43 Or Asc(MidStr) = 45 Or Asc(MidStr) = 47 Then
   If MidStr = "A" Then
    Game24Box(Lm) = 10
   Else
    If MidStr = "B" Then
     Game24Box(Lm) = 11
    Else
       If MidStr = "C" Then
        Game24Box(Lm) = 12
       Else
          If MidStr = "D" Then
           Game24Box(Lm) = 13
          Else
           Game24Box(Lm) = MidStr
          End If
       End If
    End If
   End If
  
   Lm = Lm + 1
  End If
  If MidStr = ")" Then
   Select Case Game24Box(Lm - 2)
    Case "+"
     Game24Answer = Val(Game24Box(Lm - 3)) + Val(Game24Box(Lm - 1))
     Game24Box(Lm - 3) = Game24Answer
     Lm = Lm - 2
    Case "-"
     Game24Answer = Val(Game24Box(Lm - 3)) - Val(Game24Box(Lm - 1))
     Game24Box(Lm - 3) = Game24Answer
     Lm = Lm - 2
    Case "*"
     Game24Answer = Val(Game24Box(Lm - 3)) * Val(Game24Box(Lm - 1))
     Game24Box(Lm - 3) = Game24Answer
     Lm = Lm - 2
    Case "/"
     Game24Answer = Val(Game24Box(Lm - 3)) / Val(Game24Box(Lm - 1))
     Game24Box(Lm - 3) = Game24Answer
     Lm = Lm - 2
   End Select
  End If
Next
For Li = Lm To 5 Step -2
 If FuHao(Game24Box(Li - 2), Game24Box(Li - 4)) = True Then
  Select Case Game24Box(Li - 2)
   Case "+"
    Game24Answer = Val(Game24Box(Li - 3)) + Val(Game24Box(Li - 1))
    Game24Box(Li - 3) = Game24Answer
    Lm = Lm - 2
   Case "-"
    Game24Answer = Val(Game24Box(Li - 3)) - Val(Game24Box(Li - 1))
    Game24Box(Li - 3) = Game24Answer
    Lm = Lm - 2
   Case "*"
    Game24Answer = Val(Game24Box(Li - 3)) * Val(Game24Box(Li - 1))
    Game24Box(Li - 3) = Game24Answer
    Lm = Lm - 2
   Case "/"
    Game24Answer = Val(Game24Box(Li - 3)) / Val(Game24Box(Li - 1))
    Game24Box(Li - 3) = Game24Answer
    Lm = Lm - 2
  End Select
 Else
  Select Case Game24Box(Li - 4)
   Case "+"
    Game24Answer = Val(Game24Box(Li - 5)) + Val(Game24Box(Li - 3))
    Game24Box(Li - 5) = Game24Answer
    Lm = Lm - 2
   Case "-"
    Game24Answer = Val(Game24Box(Li - 5)) - Val(Game24Box(Li - 3))
    Game24Box(Li - 5) = Game24Answer
    Lm = Lm - 2
   Case "*"
    Game24Answer = Val(Game24Box(Li - 5)) * Val(Game24Box(Li - 3))
    Game24Box(Li - 5) = Game24Answer
    Lm = Lm - 2
   Case "/"
    Game24Answer = Val(Game24Box(Li - 5)) / Val(Game24Box(Li - 3))
    Game24Box(Li - 5) = Game24Answer
    Lm = Lm - 2
  End Select
  For ss = Li - 4 To Li - 2
   Game24Box(ss) = Game24Box(ss + 2)
  Next
 End If
Next
Select Case Game24Box(1)
 Case "+"
    Game24Answer = Val(Game24Box(0)) + Val(Game24Box(2))
    Game24Box(0) = Game24Answer
    Lm = 0
 Case "-"
    Game24Answer = Val(Game24Box(0)) - Val(Game24Box(2))
    Game24Box(0) = Game24Answer
    Lm = 0
 Case "*"
    Game24Answer = Val(Game24Box(0)) * Val(Game24Box(2))
    Game24Box(0) = Game24Answer
    Lm = 0
 Case "/"
    Game24Answer = Val(Game24Box(0)) / Val(Game24Box(2))
    Game24Box(0) = Game24Answer
    Lm = 0
End Select
If Game24Answer = 24 Then JiSuanAnswer = True
Exit Function
LL:
 MsgBox "算式错误,请检查后继续!", , "挑战24点V3.10版"
 FormFlag = True
End Function
Public Function FuHao(X As String, Y As String) As Boolean
FuHao = False
If X = "-" And Y = "+" Or X = "+" And Y = "+" Or X = "-" And Y = "-" Then
 FuHao = True
 Exit Function
 
Else
 If X = "/" And Y = "*" Then
  FuHao = True
  Exit Function
 End If
End If
If Y = "+" Or Y = "-" Then
 FuHao = True
End If
End Function

























⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -