Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.66 KB | None | 0 0
  1. Option Explicit
  2.  
  3. 'ENUMERATED TYPES
  4.  
  5. Public Enum GamePieceColor
  6. rgbRed = 255
  7. rgbGreen = 65280
  8. rgbBlue = 16711680
  9. rgbYellow = 65535
  10. rgbBlack = 0
  11. rgbWhite = 16777215
  12. rgbGrey = 12632256
  13. rgbLightGrey = -2147483633
  14. rgbNone = -1
  15. End Enum
  16.  
  17. 'STRUCTS
  18.  
  19. Public Type GuessArray
  20. ColorOne As GamePieceColor
  21. ColorTwo As GamePieceColor
  22. ColorThree As GamePieceColor
  23. ColorFour As GamePieceColor
  24. End Type
  25.  
  26. Private Type GameOver
  27. TrueFalse As Boolean
  28. Reason As String
  29. End Type
  30.  
  31. Private Type GuessValid
  32. TrueFalse As Boolean
  33. Reason As String
  34. End Type
  35.  
  36. Public Type ResponsePegs
  37. MatchesComplete As Long
  38. MatchesColor As Long
  39. End Type
  40.  
  41. Public Type RequestNextColor
  42. Row As Long
  43. CurrentColor As GamePieceColor
  44. End Type
  45.  
  46. Public Type RequestCheckGuess
  47. GuessArray As GuessArray
  48. End Type
  49.  
  50. Public Type ResponseNextColor
  51. GuessNumber As Long
  52. NextColor As GamePieceColor
  53. End Type
  54.  
  55. Public Type ResponseCheckGuess
  56. GuessValid As GuessValid
  57. GuessNumber As Long
  58. ResponsePegs As ResponsePegs
  59. GameOver As GameOver
  60. End Type
  61.  
  62. 'GLOBAL VARIABLES
  63.  
  64. Private GameOver As Boolean
  65. Private CurrentGuessNumber As Long
  66. Private MasterGuessArray As GuessArray
  67. Private MasterGuessArrayVisible As Boolean
  68. Private Const MaxGuesses = 9
  69.  
  70. 'GAME LOOP
  71.  
  72. Public Sub Main()
  73. Dim GameSpace As GameSpace
  74. Set GameSpace = New GameSpace
  75. GameSpace.Show
  76. End Sub
  77.  
  78. Public Sub GameLoop(ByRef GameSpace As GameSpace)
  79. GameOver = False
  80. CurrentGuessNumber = 0
  81. MasterGuessArray = GenerateMasterGuessArray
  82. MasterGuessArrayVisible = False
  83.  
  84. Do While GameOver = False
  85. DoEvents
  86. On Error GoTo UserFormUnloaded:
  87. If GameSpace.Visible = False Then
  88. Exit Do
  89. End If
  90. GameSpace.Resize
  91. Loop
  92.  
  93. Unload GameSpace
  94. UserFormUnloaded:
  95. End Sub
  96.  
  97. Private Function GenerateMasterGuessArray() As GuessArray
  98. GenerateMasterGuessArray.ColorOne = RandomColor
  99. GenerateMasterGuessArray.ColorTwo = RandomColor
  100. GenerateMasterGuessArray.ColorThree = RandomColor
  101. GenerateMasterGuessArray.ColorFour = RandomColor
  102. End Function
  103.  
  104. Private Function RandomColor() As GamePieceColor
  105. Dim RandomNumber As Long
  106. RandomNumber = Application.WorksheetFunction.RandBetween(0, 5)
  107. Select Case RandomNumber
  108. Case 0
  109. RandomColor = rgbBlack
  110. Case 1
  111. RandomColor = rgbBlue
  112. Case 2
  113. RandomColor = rgbGreen
  114. Case 3
  115. RandomColor = rgbRed
  116. Case 4
  117. RandomColor = rgbWhite
  118. Case 5
  119. RandomColor = rgbYellow
  120. End Select
  121. End Function
  122.  
  123. 'GAME FUNCTIONS
  124.  
  125. Public Function GetCheckGuess(ByRef RequestCheckGuess As RequestCheckGuess) As ResponseCheckGuess
  126. If CheckMaxGuessesExceeded = True Then
  127. GameOver = True
  128. GetCheckGuess.GameOver.TrueFalse = True
  129. GetCheckGuess.GameOver.Reason = "YOU LOSE! BETTER LUCK NEXT TIME!"
  130. Exit Function
  131. End If
  132.  
  133. If CheckGuessValid(RequestCheckGuess.GuessArray) = False Then
  134. GetCheckGuess.GuessValid.TrueFalse = False
  135. GetCheckGuess.GuessValid.Reason = "PLEASE DO NOT INCLUDE ANY GREY SQUARES IN YOUR GUESS"
  136. Exit Function
  137. End If
  138.  
  139. GetCheckGuess = GuessValidResponseAssemble(RequestCheckGuess.GuessArray)
  140. CurrentGuessNumber = CurrentGuessNumber + 1
  141.  
  142. If CheckGameWon(GetCheckGuess.ResponsePegs) = True Then
  143. GameOver = True
  144. GetCheckGuess.GameOver.TrueFalse = True
  145. GetCheckGuess.GameOver.Reason = "CONGRAGULATIONS, YOU WIN!"
  146. Exit Function
  147. End If
  148. End Function
  149.  
  150. Private Function CheckMaxGuessesExceeded() As Boolean
  151. If CurrentGuessNumber > MaxGuesses Then
  152. CheckMaxGuessesExceeded = True
  153. Else
  154. CheckMaxGuessesExceeded = False
  155. End If
  156. End Function
  157.  
  158. Private Function CheckGuessValid(ByRef GuessArray As GuessArray) As Boolean
  159. If (GuessArray.ColorOne = rgbGrey) Or _
  160. (GuessArray.ColorTwo = rgbGrey) Or _
  161. (GuessArray.ColorThree = rgbGrey) Or _
  162. (GuessArray.ColorFour = rgbGrey) Then
  163. CheckGuessValid = False
  164. Else
  165. CheckGuessValid = True
  166. End If
  167. End Function
  168.  
  169. Private Function GuessValidResponseAssemble(ByRef GuessArray As GuessArray) As ResponseCheckGuess
  170. GuessValidResponseAssemble.GuessValid.TrueFalse = True
  171. GuessValidResponseAssemble.GuessNumber = CurrentGuessNumber
  172. GuessValidResponseAssemble.ResponsePegs = DetermineMatches(GuessArray)
  173. End Function
  174.  
  175. Private Function CheckGameWon(ByRef ResponsePegs As ResponsePegs) As Boolean
  176. If ResponsePegs.MatchesComplete = 4 Then
  177. CheckGameWon = True
  178. Else
  179. CheckGameWon = False
  180. End If
  181. End Function
  182.  
  183. Private Function DetermineMatches(ByRef GuessArray As GuessArray) As ResponsePegs
  184. Dim TempMasterGuessArray As GuessArray
  185. TempMasterGuessArray = MasterGuessArray
  186.  
  187. If GuessArray.ColorOne = TempMasterGuessArray.ColorOne Then
  188. GuessArray.ColorOne = rgbNone
  189. TempMasterGuessArray.ColorOne = rgbNone
  190. DetermineMatches.MatchesComplete = DetermineMatches.MatchesComplete + 1
  191. End If
  192.  
  193. If GuessArray.ColorTwo = TempMasterGuessArray.ColorTwo Then
  194. GuessArray.ColorTwo = rgbNone
  195. TempMasterGuessArray.ColorTwo = rgbNone
  196. DetermineMatches.MatchesComplete = DetermineMatches.MatchesComplete + 1
  197. End If
  198.  
  199. If GuessArray.ColorThree = TempMasterGuessArray.ColorThree Then
  200. GuessArray.ColorThree = rgbNone
  201. TempMasterGuessArray.ColorThree = rgbNone
  202. DetermineMatches.MatchesComplete = DetermineMatches.MatchesComplete + 1
  203. End If
  204.  
  205. If GuessArray.ColorFour = TempMasterGuessArray.ColorFour Then
  206. GuessArray.ColorFour = rgbNone
  207. TempMasterGuessArray.ColorFour = rgbNone
  208. DetermineMatches.MatchesComplete = DetermineMatches.MatchesComplete + 1
  209. End If
  210.  
  211. If TempMasterGuessArray.ColorOne <> rgbNone Then
  212. If GuessArray.ColorTwo = TempMasterGuessArray.ColorOne Then
  213. GuessArray.ColorTwo = rgbNone
  214. TempMasterGuessArray.ColorOne = rgbNone
  215. DetermineMatches.MatchesColor = DetermineMatches.MatchesColor + 1
  216. ElseIf GuessArray.ColorThree = TempMasterGuessArray.ColorOne Then
  217. GuessArray.ColorThree = rgbNone
  218. TempMasterGuessArray.ColorOne = rgbNone
  219. DetermineMatches.MatchesColor = DetermineMatches.MatchesColor + 1
  220. ElseIf GuessArray.ColorFour = TempMasterGuessArray.ColorOne Then
  221. GuessArray.ColorFour = rgbNone
  222. TempMasterGuessArray.ColorOne = rgbNone
  223. DetermineMatches.MatchesColor = DetermineMatches.MatchesColor + 1
  224. End If
  225. End If
  226.  
  227. If TempMasterGuessArray.ColorTwo <> rgbNone Then
  228. If GuessArray.ColorOne = TempMasterGuessArray.ColorTwo Then
  229. GuessArray.ColorOne = rgbNone
  230. TempMasterGuessArray.ColorOne = rgbNone
  231. DetermineMatches.MatchesColor = DetermineMatches.MatchesColor + 1
  232. ElseIf GuessArray.ColorThree = TempMasterGuessArray.ColorTwo Then
  233. GuessArray.ColorThree = rgbNone
  234. TempMasterGuessArray.ColorOne = rgbNone
  235. DetermineMatches.MatchesColor = DetermineMatches.MatchesColor + 1
  236. ElseIf GuessArray.ColorFour = TempMasterGuessArray.ColorTwo Then
  237. GuessArray.ColorFour = rgbNone
  238. TempMasterGuessArray.ColorOne = rgbNone
  239. DetermineMatches.MatchesColor = DetermineMatches.MatchesColor + 1
  240. End If
  241. End If
  242.  
  243. If TempMasterGuessArray.ColorThree <> rgbNone Then
  244. If GuessArray.ColorOne = TempMasterGuessArray.ColorThree Then
  245. GuessArray.ColorOne = rgbNone
  246. TempMasterGuessArray.ColorOne = rgbNone
  247. DetermineMatches.MatchesColor = DetermineMatches.MatchesColor + 1
  248. ElseIf GuessArray.ColorTwo = TempMasterGuessArray.ColorThree Then
  249. GuessArray.ColorTwo = rgbNone
  250. TempMasterGuessArray.ColorOne = rgbNone
  251. DetermineMatches.MatchesColor = DetermineMatches.MatchesColor + 1
  252. ElseIf GuessArray.ColorFour = TempMasterGuessArray.ColorThree Then
  253. GuessArray.ColorFour = rgbNone
  254. TempMasterGuessArray.ColorOne = rgbNone
  255. DetermineMatches.MatchesColor = DetermineMatches.MatchesColor + 1
  256. End If
  257. End If
  258.  
  259. If TempMasterGuessArray.ColorFour <> rgbNone Then
  260. If GuessArray.ColorOne = TempMasterGuessArray.ColorFour Then
  261. GuessArray.ColorOne = rgbNone
  262. TempMasterGuessArray.ColorOne = rgbNone
  263. DetermineMatches.MatchesColor = DetermineMatches.MatchesColor + 1
  264. ElseIf GuessArray.ColorTwo = TempMasterGuessArray.ColorFour Then
  265. GuessArray.ColorTwo = rgbNone
  266. TempMasterGuessArray.ColorOne = rgbNone
  267. DetermineMatches.MatchesColor = DetermineMatches.MatchesColor + 1
  268. ElseIf GuessArray.ColorThree = TempMasterGuessArray.ColorFour Then
  269. GuessArray.ColorThree = rgbNone
  270. TempMasterGuessArray.ColorOne = rgbNone
  271. DetermineMatches.MatchesColor = DetermineMatches.MatchesColor + 1
  272. End If
  273. End If
  274. End Function
  275.  
  276. Public Function GetNextColor(ByRef RequestNextColor As RequestNextColor) As ResponseNextColor
  277. GetNextColor.GuessNumber = CurrentGuessNumber
  278. Select Case RequestNextColor.CurrentColor
  279. Case rgbGrey
  280. GetNextColor.NextColor = rgbBlack
  281. Case rgbBlack
  282. GetNextColor.NextColor = rgbBlue
  283. Case rgbBlue
  284. GetNextColor.NextColor = rgbGreen
  285. Case rgbGreen
  286. GetNextColor.NextColor = rgbRed
  287. Case rgbRed
  288. GetNextColor.NextColor = rgbWhite
  289. Case rgbWhite
  290. GetNextColor.NextColor = rgbYellow
  291. Case rgbYellow
  292. GetNextColor.NextColor = rgbBlack
  293. End Select
  294. End Function
  295.  
  296. Public Function GetCurrentGuessNumber() As Long
  297. GetCurrentGuessNumber = CurrentGuessNumber
  298. End Function
  299.  
  300. Public Function GetMasterRow() As GuessArray
  301. GetMasterRow.ColorOne = MasterGuessArray.ColorOne
  302. GetMasterRow.ColorTwo = MasterGuessArray.ColorTwo
  303. GetMasterRow.ColorThree = MasterGuessArray.ColorThree
  304. GetMasterRow.ColorFour = MasterGuessArray.ColorFour
  305. End Function
  306.  
  307. Public Sub ToggleMasterGuessArrayVisible()
  308. MasterGuessArrayVisible = Not MasterGuessArrayVisible
  309. End Sub
  310.  
  311. Public Function GetMasterGuessArrayVisible() As Boolean
  312. GetMasterGuessArrayVisible = MasterGuessArrayVisible
  313. End Function
  314.  
  315. Option Explicit
  316.  
  317. 'API DECLARATIONS
  318.  
  319. Private Declare PtrSafe Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  320. Private Declare PtrSafe Function MonitorFromWindow Lib "user32.dll" (ByVal hwnd As LongPtr, ByVal DWORD As LongPtr) As LongPtr
  321. Private Declare PtrSafe Function GetMonitorInfoA Lib "user32.dll" (ByVal hMonitor As LongPtr, ByRef lpmi As MONITORINFOEX) As Boolean
  322.  
  323. 'STRUCTS
  324.  
  325. Private Type RECT
  326. X1 As Long
  327. Y1 As Long
  328. X2 As Long
  329. Y2 As Long
  330. End Type
  331.  
  332. Private Type MONITORINFOEX
  333. cbSize As Long
  334. rcMonitor As RECT
  335. rcWork As RECT
  336. dwFlags As Long
  337. End Type
  338.  
  339. Private Type MONITORRESOLUTION
  340. x As Long
  341. Y As Long
  342. End Type
  343.  
  344. 'GLOBALS
  345.  
  346. Private Const MONITOR_DEFAULTTONEAREST = 2
  347.  
  348. 'GAME LOOP INITIATE
  349.  
  350. Private Sub UserForm_Activate()
  351. MasterMind.GameLoop Me
  352. End Sub
  353.  
  354. 'RESIZE
  355.  
  356. Public Sub Resize()
  357. Dim hwnd As LongPtr
  358. Dim monitorHwnd As LongPtr
  359. Dim returnValue As Boolean
  360. Dim monitorInfo As MONITORINFOEX
  361. Dim rcMonitorRec As RECT
  362. Dim monitorRes As MONITORRESOLUTION
  363.  
  364. hwnd = FindWindow("ThunderDFrame", Me.Caption)
  365. monitorHwnd = MonitorFromWindow(hwnd, MONITOR_DEFAULTTONEAREST)
  366.  
  367. monitorInfo.cbSize = LenB(monitorInfo)
  368. returnValue = GetMonitorInfoA(monitorHwnd, monitorInfo)
  369. rcMonitorRec = monitorInfo.rcMonitor
  370.  
  371. monitorRes.x = rcMonitorRec.X2 - rcMonitorRec.X1
  372. monitorRes.Y = rcMonitorRec.Y2 - rcMonitorRec.Y1
  373.  
  374. Me.Height = (monitorRes.Y - (monitorRes.Y * 0.3955))
  375. End Sub
  376.  
  377. 'GUESS
  378.  
  379. Private Sub GuessButton_Click()
  380. Guess
  381. End Sub
  382.  
  383. Private Sub Guess()
  384. Dim Request As RequestCheckGuess
  385. Dim Response As ResponseCheckGuess
  386.  
  387. Request = AssembleRequest
  388. Response = MasterMind.GetCheckGuess(Request)
  389. MatchControlsFill Response.GuessNumber, Response.ResponsePegs.MatchesComplete, Response.ResponsePegs.MatchesColor
  390. HandleResponseGameOver Response
  391. End Sub
  392.  
  393. Private Function AssembleRequest() As RequestCheckGuess
  394. AssembleRequest.GuessArray.ColorOne = Me.Controls.Item("A" & MasterMind.GetCurrentGuessNumber).BackColor
  395. AssembleRequest.GuessArray.ColorTwo = Me.Controls.Item("B" & MasterMind.GetCurrentGuessNumber).BackColor
  396. AssembleRequest.GuessArray.ColorThree = Me.Controls.Item("C" & MasterMind.GetCurrentGuessNumber).BackColor
  397. AssembleRequest.GuessArray.ColorFour = Me.Controls.Item("D" & MasterMind.GetCurrentGuessNumber).BackColor
  398. End Function
  399.  
  400. Private Sub MatchControlsFill(ByRef Row As Long, ByRef MatchesComplete As Long, ByRef MatchesColor As Long)
  401. If MatchesComplete > 0 Then
  402. MatchesComplete = MatchesComplete - 1
  403. Me.Controls("Match_A" & Row).BackColor = 0
  404. ElseIf MatchesColor > 0 Then
  405. MatchesColor = MatchesColor - 1
  406. Me.Controls("Match_A" & Row).BackColor = 16777215
  407. End If
  408.  
  409. If MatchesComplete > 0 Then
  410. MatchesComplete = MatchesComplete - 1
  411. Me.Controls("Match_B" & Row).BackColor = 0
  412. ElseIf MatchesColor > 0 Then
  413. MatchesColor = MatchesColor - 1
  414. Me.Controls("Match_B" & Row).BackColor = 16777215
  415. End If
  416.  
  417. If MatchesComplete > 0 Then
  418. MatchesComplete = MatchesComplete - 1
  419. Me.Controls("Match_C" & Row).BackColor = 0
  420. ElseIf MatchesColor > 0 Then
  421. MatchesColor = MatchesColor - 1
  422. Me.Controls("Match_C" & Row).BackColor = 16777215
  423. End If
  424.  
  425. If MatchesComplete > 0 Then
  426. MatchesComplete = MatchesComplete - 1
  427. Me.Controls("Match_D" & Row).BackColor = 0
  428. ElseIf MatchesColor > 0 Then
  429. MatchesColor = MatchesColor - 1
  430. Me.Controls("Match_D" & Row).BackColor = 16777215
  431. End If
  432. End Sub
  433.  
  434. Private Sub HandleResponseGameOver(ByRef Response As ResponseCheckGuess)
  435. If Response.GameOver.TrueFalse = True Then
  436. UnhideMasterGuessArray
  437. MsgBox Response.GameOver.Reason
  438. Me.Hide
  439. Exit Sub
  440. ElseIf Response.GuessValid.TrueFalse = False Then
  441. MsgBox Response.GuessValid.Reason
  442. Exit Sub
  443. End If
  444. End Sub
  445.  
  446. 'BUTTON COLOR ROTATION
  447.  
  448. Private Sub A0_Click()
  449. RotateColor "A", 0, Me.A0.BackColor
  450. End Sub
  451.  
  452. Private Sub B0_Click()
  453. RotateColor "B", 0, Me.B0.BackColor
  454. End Sub
  455.  
  456. Private Sub C0_Click()
  457. RotateColor "C", 0, Me.C0.BackColor
  458. End Sub
  459.  
  460. Private Sub D0_Click()
  461. RotateColor "D", 0, Me.D0.BackColor
  462. End Sub
  463.  
  464. Private Sub A1_Click()
  465. RotateColor "A", 1, Me.A1.BackColor
  466. End Sub
  467.  
  468. Private Sub B1_Click()
  469. RotateColor "B", 1, Me.B1.BackColor
  470. End Sub
  471.  
  472. Private Sub C1_Click()
  473. RotateColor "C", 1, Me.C1.BackColor
  474. End Sub
  475.  
  476. Private Sub D1_Click()
  477. RotateColor "D", 1, Me.D1.BackColor
  478. End Sub
  479.  
  480. Private Sub A2_Click()
  481. RotateColor "A", 2, Me.A2.BackColor
  482. End Sub
  483.  
  484. Private Sub B2_Click()
  485. RotateColor "B", 2, Me.B2.BackColor
  486. End Sub
  487.  
  488. Private Sub C2_Click()
  489. RotateColor "C", 2, Me.C2.BackColor
  490. End Sub
  491.  
  492. Private Sub D2_Click()
  493. RotateColor "D", 2, Me.D2.BackColor
  494. End Sub
  495.  
  496. Private Sub A3_Click()
  497. RotateColor "A", 3, Me.A3.BackColor
  498. End Sub
  499.  
  500. Private Sub B3_Click()
  501. RotateColor "B", 3, Me.B3.BackColor
  502. End Sub
  503.  
  504. Private Sub C3_Click()
  505. RotateColor "C", 3, Me.C3.BackColor
  506. End Sub
  507.  
  508. Private Sub D3_Click()
  509. RotateColor "D", 3, Me.D3.BackColor
  510. End Sub
  511.  
  512. Private Sub A4_Click()
  513. RotateColor "A", 4, Me.A4.BackColor
  514. End Sub
  515.  
  516. Private Sub B4_Click()
  517. RotateColor "B", 4, Me.B4.BackColor
  518. End Sub
  519.  
  520. Private Sub C4_Click()
  521. RotateColor "C", 4, Me.C4.BackColor
  522. End Sub
  523.  
  524. Private Sub D4_Click()
  525. RotateColor "D", 4, Me.D4.BackColor
  526. End Sub
  527.  
  528. Private Sub A5_Click()
  529. RotateColor "A", 5, Me.A5.BackColor
  530. End Sub
  531.  
  532. Private Sub B5_Click()
  533. RotateColor "B", 5, Me.B5.BackColor
  534. End Sub
  535.  
  536. Private Sub C5_Click()
  537. RotateColor "C", 5, Me.C5.BackColor
  538. End Sub
  539.  
  540. Private Sub D5_Click()
  541. RotateColor "D", 5, Me.D5.BackColor
  542. End Sub
  543.  
  544. Private Sub A6_Click()
  545. RotateColor "A", 6, Me.A6.BackColor
  546. End Sub
  547.  
  548. Private Sub B6_Click()
  549. RotateColor "B", 6, Me.B6.BackColor
  550. End Sub
  551.  
  552. Private Sub C6_Click()
  553. RotateColor "C", 6, Me.C6.BackColor
  554. End Sub
  555.  
  556. Private Sub D6_Click()
  557. RotateColor "D", 6, Me.D6.BackColor
  558. End Sub
  559.  
  560. Private Sub A7_Click()
  561. RotateColor "A", 7, Me.A7.BackColor
  562. End Sub
  563.  
  564. Private Sub B7_Click()
  565. RotateColor "B", 7, Me.B7.BackColor
  566. End Sub
  567.  
  568. Private Sub C7_Click()
  569. RotateColor "C", 7, Me.C7.BackColor
  570. End Sub
  571.  
  572. Private Sub D7_Click()
  573. RotateColor "D", 7, Me.D7.BackColor
  574. End Sub
  575.  
  576. Private Sub A8_Click()
  577. RotateColor "A", 8, Me.A8.BackColor
  578. End Sub
  579.  
  580. Private Sub B8_Click()
  581. RotateColor "B", 8, Me.B8.BackColor
  582. End Sub
  583.  
  584. Private Sub C8_Click()
  585. RotateColor "C", 8, Me.C8.BackColor
  586. End Sub
  587.  
  588. Private Sub D8_Click()
  589. RotateColor "D", 8, Me.D8.BackColor
  590. End Sub
  591.  
  592. Private Sub A9_Click()
  593. RotateColor "A", 9, Me.A9.BackColor
  594. End Sub
  595.  
  596. Private Sub B9_Click()
  597. RotateColor "B", 9, Me.B9.BackColor
  598. End Sub
  599.  
  600. Private Sub C9_Click()
  601. RotateColor "C", 9, Me.C9.BackColor
  602. End Sub
  603.  
  604. Private Sub D9_Click()
  605. RotateColor "D", 9, Me.D9.BackColor
  606. End Sub
  607.  
  608. Private Sub RotateColor(ByRef Letter As String, ByRef Row As Long, ByRef color As GamePieceColor)
  609. Dim Request As RequestNextColor
  610. Dim Response As ResponseNextColor
  611.  
  612. Request.CurrentColor = color
  613. Response = MasterMind.GetNextColor(Request)
  614.  
  615. If Response.GuessNumber = Row Then
  616. Me.Controls(Letter & Row).BackColor = Response.NextColor
  617. Me.Controls(Letter & Row).Caption = ButtonCaption(Response.NextColor)
  618. Me.Controls(Letter & Row).ForeColor = ButtonFontColor(Response.NextColor)
  619. End If
  620. End Sub
  621.  
  622. Private Function ButtonCaption(ByRef color As GamePieceColor) As String
  623. Select Case color
  624. Case rgbBlack
  625. ButtonCaption = "Black"
  626. Case rgbBlue
  627. ButtonCaption = "Blue"
  628. Case rgbGreen
  629. ButtonCaption = "Green"
  630. Case rgbRed
  631. ButtonCaption = "Red"
  632. Case rgbWhite
  633. ButtonCaption = "White"
  634. Case rgbYellow
  635. ButtonCaption = "Yellow"
  636. End Select
  637. End Function
  638.  
  639. Private Function ButtonFontColor(ByRef color As GamePieceColor) As GamePieceColor
  640. Select Case color
  641. Case rgbBlack
  642. ButtonFontColor = rgbWhite
  643. Case rgbBlue
  644. ButtonFontColor = rgbWhite
  645. Case rgbGreen
  646. ButtonFontColor = rgbBlack
  647. Case rgbRed
  648. ButtonFontColor = rgbBlack
  649. Case rgbWhite
  650. ButtonFontColor = rgbBlack
  651. Case rgbYellow
  652. ButtonFontColor = rgbBlack
  653. End Select
  654. End Function
  655.  
  656. 'SHOW ANSWER
  657.  
  658. Private Sub UnhideButton_Click()
  659. If MasterMind.GetMasterGuessArrayVisible = True Then
  660. HideMasterGuessArray
  661. Me.UnhideButton.Caption = "UNHIDE"
  662. MasterMind.ToggleMasterGuessArrayVisible
  663. Else
  664. UnhideMasterGuessArray
  665. Me.UnhideButton.Caption = "HIDE"
  666. MasterMind.ToggleMasterGuessArrayVisible
  667. End If
  668. End Sub
  669.  
  670. Private Sub UnhideMasterGuessArray()
  671. Dim MasterGuessArray As GuessArray
  672. MasterGuessArray = MasterMind.GetMasterRow
  673.  
  674. Me.Master1.BackColor = MasterGuessArray.ColorOne
  675. Me.Master1.Caption = MasterButtonCaption(MasterGuessArray.ColorOne)
  676. Me.Master1.ForeColor = MasterButtonFontColor(MasterGuessArray.ColorOne)
  677.  
  678. Me.Master2.BackColor = MasterGuessArray.ColorTwo
  679. Me.Master2.Caption = MasterButtonCaption(MasterGuessArray.ColorTwo)
  680. Me.Master2.ForeColor = MasterButtonFontColor(MasterGuessArray.ColorTwo)
  681.  
  682. Me.Master3.BackColor = MasterGuessArray.ColorThree
  683. Me.Master3.Caption = MasterButtonCaption(MasterGuessArray.ColorThree)
  684. Me.Master3.ForeColor = MasterButtonFontColor(MasterGuessArray.ColorThree)
  685.  
  686. Me.Master4.BackColor = MasterGuessArray.ColorFour
  687. Me.Master4.Caption = MasterButtonCaption(MasterGuessArray.ColorFour)
  688. Me.Master4.ForeColor = MasterButtonFontColor(MasterGuessArray.ColorFour)
  689. End Sub
  690.  
  691. Private Function MasterButtonCaption(ByRef color As GamePieceColor) As String
  692. Select Case color
  693. Case rgbBlack
  694. MasterButtonCaption = "Black"
  695. Case rgbBlue
  696. MasterButtonCaption = "Blue"
  697. Case rgbGreen
  698. MasterButtonCaption = "Green"
  699. Case rgbRed
  700. MasterButtonCaption = "Red"
  701. Case rgbWhite
  702. MasterButtonCaption = "White"
  703. Case rgbYellow
  704. MasterButtonCaption = "Yellow"
  705. End Select
  706. End Function
  707.  
  708. Private Function MasterButtonFontColor(ByRef color As GamePieceColor) As GamePieceColor
  709. Select Case color
  710. Case rgbBlack
  711. MasterButtonFontColor = rgbWhite
  712. Case rgbBlue
  713. MasterButtonFontColor = rgbWhite
  714. Case rgbGreen
  715. MasterButtonFontColor = rgbBlack
  716. Case rgbRed
  717. MasterButtonFontColor = rgbBlack
  718. Case rgbWhite
  719. MasterButtonFontColor = rgbBlack
  720. Case rgbYellow
  721. MasterButtonFontColor = rgbBlack
  722. End Select
  723. End Function
  724.  
  725. Private Sub HideMasterGuessArray()
  726. Dim MasterGuessArray As GuessArray
  727. MasterGuessArray = MasterMind.GetMasterRow
  728.  
  729. Me.Master1.BackColor = GamePieceColor.rgbLightGrey
  730. Me.Master2.BackColor = GamePieceColor.rgbLightGrey
  731. Me.Master3.BackColor = GamePieceColor.rgbLightGrey
  732. Me.Master4.BackColor = GamePieceColor.rgbLightGrey
  733.  
  734. Me.Master1.ForeColor = rgbBlack
  735. Me.Master2.ForeColor = rgbBlack
  736. Me.Master3.ForeColor = rgbBlack
  737. Me.Master4.ForeColor = rgbBlack
  738.  
  739. Me.Master1.Caption = "??"
  740. Me.Master2.Caption = "??"
  741. Me.Master3.Caption = "??"
  742. Me.Master4.Caption = "??"
  743. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement