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

📄 main.bas

📁 机器人程序
💻 BAS
字号:
Attribute VB_Name = "MainCode"
'MainCode.bas
'主程序

'- - - - - - - - - - - - - - - - - - - - - - - - - -

Option Explicit

'程序入口
'Entrance of GoRobotVB
Sub Main()
  Have_Init_All = False
  Initialize_All
  GRVBMain.Show
  DrawBoard
End Sub

'开始新游戏
Public Sub StartNewGame()
  Dim i, j As Integer
  'Initialize Rndomize Number
  Randomize
  
  'Get Rndomize Number
  optRndNumber = Int(Rnd(1) * 10000)
  
  'Start A New Game by GNUGOEngAPI
  Call GNUGO_StartNewGame(BSize, optRndNumber, optKomi)
  
  For i = 0 To 12
    For j = 0 To 12
      LastBoard.b(i, j) = NONE
      State(i + 1, j + 1) = NONE
    Next
  Next
    
  'Clear ListBox
  GRVBMain.List.Clear

  GRSpeak "游戏开始了"
    
  DrawBoard
End Sub

'机器人VS机器人
Public Sub Play_RvsR()
  Dim X, Y As Long
  Dim sx, sy As Integer
  
  nowColour = BLACK
  
  Call StartNewGame
  
  Call GNUGO_GenMove(X, Y, nowColour)
  
  Call IsLegal(X, Y, nowColour)
  
  Call PlayMove(X + 1, Y + 1, nowColour)
  
  Call DrawBoard
  
  RCXStoneNum = 0
  
  'Long -> Integer
  sx = X + 1: sy = Y + 1
  
  Call SendPosToRCX(sx, sy, nowColour)
  
  nowColour = 3 - nowColour
End Sub

'人VS机器人
Public Sub Play_MvsR()
  Dim X, Y As Long
  Dim sx, sy As Integer
    
  Call StartNewGame
  
  RCXStoneNum = 0
  
  nowPlayer = ROBOT_PLAY
  nowColour = BLACK
    
  If (optBlackPlayer = PLAYER_ROBOT) Then
  
    Call GNUGO_GenMove(X, Y, nowColour)
  
    Call IsLegal(X, Y, nowColour)
    
    Call PlayMove(X + 1, Y + 1, nowColour)
    
    Call DrawBoard
    
    'Long -> Integer
    sx = X + 1: sy = Y + 1
  
    'to debug
    Call SendPosToRCX(sx, sy, nowColour)
    'to debug
    
    nowColour = 3 - nowColour
  End If
  
End Sub

'询问是否保存
Public Sub AskForSave()
'TODO
End Sub

'询问是否点目
Public Sub AskForCalc()
'TODO
End Sub

'某一位置是否合法
Public Sub IsLegal(ByVal ggx As Long, ByVal ggy As Long, ByVal isColor)
  If GNUGO_IsLegal(ggx, ggy, isColor) = 0 Then
    GRSpeak "ERROR in " & str$(ggx) & " " & str$(ggy)
    Over
  End If
End Sub

'Sub Over, End 的替代函数,可以做一些手脚.
Public Sub Over()
  If (MsgBox("确实要退出吗?", vbOKCancel, "退出!") = vbOK) Then
    RobbyBye
    
    'Close Camera
    If CamClosed = True Then
      GRVBMain.VideoBOX.Stop
      GRVBMain.VideoBOX.Close
    End If
    
    End
  Else
    Exit Sub
  End If
End Sub

'- - - - - - - - - - - - - - - - - - - - - - - - - -

⌨️ 快捷键说明

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