Mastermind - hjælp til sort/hvid afmærkning
Hej. Jeg er i gang med et mastermind spil, men er gået i stå hvor man i de små felter, skal markere hvis farven er rigtigt placeret (sort) eller farven er rigtig, men placeret forkert (hvid).Indtil videre burde den gerne udskrive de rigtige antal 'sorte' og 'hvide' man har i en msgbox, men de skal som sagt farves ude i de små felter.
Kan lige komme med et eksempel, til dem der ikke er helt sikre med hvordan det skal gøres:
Computeren har valgt farverne grøn-grøn-sort-gul som skal gættes. Jeg gætter nu på grøn-sort-hvid-blå -> Jeg har altså en rigtigt placeret (grøn) og en rigtig farve som er forkert placeret (sort). Altså skal et af de små fire felter farves sort, og et andet skal farves hvidt.
Min kode ser således ud:
Option Explicit
Dim i, j, n, round, nowrand
Dim Udfyldt(3) As Boolean
Dim hvid As Integer
Dim Sort As Integer
Dim guessflag(3) As Boolean
Dim løsningflag(3) As Boolean
Public Function AntalSorte() As Integer
Dim sorte As Integer
For i = 0 To 3
If løsning(i).BackColor = imgGuess(round * 4 + i).BackColor Then
sorte = sorte + 1
løsningflag(i) = True
guessflag(i) = True
End If
Next i
AntalSorte = sorte
End Function
Public Function AntalHvide() As Integer
Dim hvid As Integer
For i = 0 To 3
For j = 0 To 3
If løsning(i).BackColor = imgGuess(round * 4 + j).BackColor And løsningflag(i) = False And guessflag(i) = False Then
hvid = hvid + 1
løsningflag(i) = True
guessflag(j) = True
End If
Next j
Next i
AntalHvide = hvid
End Function
Private Sub form1_load()
For i = 0 To 3
løsningflag(i) = False
guessflag(i) = False
Next i
End Sub
Private Sub cmdStart_click()
løsning(0).Visible = True
For i = 1 To 3
Load løsning(i)
løsning(i).Visible = True
løsning(i).Left = løsning(i - 1).Left + løsning(0).Width
Next i
'Løsning dannes
For i = 0 To 3
Randomize: nowrand = Int(Rnd * 6)
Select Case nowrand
Case 0: løsning(i).BackColor = RGB(0, 200, 0)
Case 1: løsning(i).BackColor = RGB(200, 0, 0)
Case 2: løsning(i).BackColor = RGB(0, 0, 200)
Case 3: løsning(i).BackColor = RGB(255, 255, 0)
Case 4: løsning(i).BackColor = RGB(255, 255, 255)
Case 5: løsning(i).BackColor = RGB(0, 0, 0)
End Select
Next i
'start spil gøres usynlig
cmdStart.Visible = False
'imgguess dannes
For i = 1 To 39
Load imgGuess(i)
imgGuess(i).Visible = True
If i Mod 4 <> 0 Then
imgGuess(i).Top = imgGuess(i - 1).Top
imgGuess(i).Left = imgGuess(i - 1).Left + imgGuess(i - 1).Width + 135
Else
imgGuess(i).Top = imgGuess(i - 1).Top - imgGuess(0).Height - 135
imgGuess(i).Left = imgGuess(0).Left
End If
Next i
'imganswer dannes
For n = 1 To 39
Load imgAnswer(n)
imgAnswer(n).Visible = True
If n Mod 2 Then
imgAnswer(n).Top = imgAnswer(n - 1).Top
imgAnswer(n).Left = imgAnswer(n - 1).Left + imgAnswer(n - 1).Width + 119
Else
imgAnswer(n).Top = imgAnswer(n - 1).Top - imgAnswer(0).Height - 119
imgAnswer(n).Left = imgAnswer(0).Left
End If
Next n
'imgguess(0) og imganswer(0) gøres synlig
imgGuess(0).Visible = True
imgAnswer(0).Visible = True
'første runde
round = 0
'Udfyldt nulstilles
For i = 0 To 3
Udfyldt(i) = False
Next i
End Sub
Private Sub imgGuess_Click(Index As Integer)
Dim flag As Boolean
'farver sættes
If 0 + 4 * round <= Index And Index <= 4 * round + 3 Then
If optFar(0) Then imgGuess(Index).BackColor = RGB(0, 200, 0)
If optFar(1) Then imgGuess(Index).BackColor = RGB(200, 0, 0)
If optFar(2) Then imgGuess(Index).BackColor = RGB(0, 0, 200)
If optFar(3) Then imgGuess(Index).BackColor = RGB(255, 255, 0)
If optFar(4) Then imgGuess(Index).BackColor = RGB(255, 255, 255)
If optFar(5) Then imgGuess(Index).BackColor = RGB(0, 0, 0)
Udfyldt(Index Mod 4) = True
End If
'Undersøger om alle 4 på rækken er udfyldt
flag = True
For i = 0 To 3
If Udfyldt(i) = False Then flag = False
Next i
'gør gæt knappen synlig
If flag = True Then
cmdGuess.Visible = True
End If
End Sub
Private Sub cmdGuess_click()
'ny runde
'fjerner gæt knappen
For i = 0 To 3
Udfyldt(i) = False
Next i
cmdGuess.Visible = False
Sort = AntalSorte
MsgBox Sort
hvid = AntalHvide
MsgBox hvid
round = round + 1
End Sub