Ai til et spil
Jeg er igang med et projekt i vb, det handler om at man skal tage nogle tændstikker, og så den der tager den sidste har vundet!Mit projekt skal også indholde en ai så man kan spillet mod en computer, den skal også lære når man spiller mod den.
Til at gøre dette har jeg lavet 2 arrays
'De 4 er spiller antallet i spillet
'47 er antallet af tændstikker der er tilbage
'1 to 3 er det tal der blev trukker
'Dette vil så retunere hvormange gange spillet er blevet vundet med det træk
Dim ai(4, 47, 1 To 3) As Integer
'4 er spiller id'et ellers er resten det samme som ai()
Dim ai_temp(4, 47) As Integer
Så hvær gang en bruge slutter sin tur bliver denne kørt
taget = 3 - i
//man kan max tage 3 tændstikker pr. tur og i er det total antal tændstikker man kunne tage mere i den tur
ai_temp(spillerid, tilbage - 1 + taget) = taget
//spillerid = spillerns id
//tilbage er hvormange total tændstikker der er tilbage når turen er slut! derfor lægger den hvormang man tog til dog -1 da arrayet køre fra 0 til 47 men tilbage køre fra 1 til 48
//Dette over virker fint! det er når den skal gemme det i ai() at det ikke virker som det skal! for der kommer nemlig ikke al informationene ned i den.
//Så når hele spillet er slut gemmer den det hele i ai arrayet
Private Sub save_ai()
Dim c As Integer
Dim q As Integer
For c = 0 To (spillerantal - 1)
Dim won As Integer
'Spillerid er id'et på den tabne spiller
If spillerid = c Then
won = 0
Else
won = 1
End If
For q = 0 To antal
If (ai_temp(c, q) > 0) Then
ai(spillerantal - 1, q, ai_temp(c, q)) = won
End If
Next q
Next c
End Sub
Er der en der kan hjælpe mig med dette?
//MIN HELE KODE
Option Explicit
Dim i As Integer
Dim antal As Integer
Dim spillerid As Integer
Dim spillerantal As Integer
Dim spiller(4) As String
Dim temp As Integer
Dim spil_run As Integer
Dim u As Integer
Dim tilbage As Integer
Dim taget As Integer
'De 4 er spiller antallet i spillet
'47 er antallet af tendstikker der er tilbage
'1 to 3 er det tal der blev trukker
'Dette vil så retunere hvormange gange spillet er blevet vundet med det træk
Dim ai(4, 47, 1 To 3) As Integer
'5 er spiller id'et ellers er resten det samme som ai()
Dim ai_temp(4, 47) As Integer
Private Sub Command1_Click()
save_ai
array2clip3d ai
End Sub
Private Sub Form_Load()
spillerantal = 2
antal = 47
Label1.Caption = antal
'Skjuler alle tændstikker
For u = 0 To 47
match(u).Visible = False
match(u).Enabled = False
Next u
'Starter et nyt spil
nyt_spil
End Sub
Private Sub nyt_spil()
'Viser alle tændstikker
For u = 0 To antal
match(u).Visible = True
match(u).Enabled = True
Next u
'Sætter start variabler
spil_run = 1
tilbage = antal + 1
i = 3
lblpinde.Caption = i
spiller(0) = "Spiller 1"
spiller(1) = "Spiller 2"
spiller(2) = "Spiller 3"
spiller(3) = "Spiller 4"
spiller(4) = "Spiller 5"
spillerid = 0
lblSpiller.Caption = spiller(spillerid)
'Deaktiverer næste tur knappen
cmdNaestetur.Enabled = False
End Sub
Private Sub match_Click(Index As Integer)
'kører pind
pind (Index)
End Sub
Private Sub pind(Index)
'Deaktivere billedet med (Index = Index)
match(Index).Visible = False
match(Index).Enabled = False
'Trækker en fra det resterende antal pinde
tilbage = tilbage - 1
Label1.Caption = tilbage
'Trækker en fra hvor mange tændstikker man mere kan trække
i = i - 1
lblpinde.Caption = i
If (i = 0) Then
sluttur
ElseIf (i > 0 And i < 3) Then
'Aktiverer næste tur knappen
cmdNaestetur.Enabled = True
End If
If (tilbage = 1) Then
'Deaktiverer næste tur knappen
cmdNaestetur.Enabled = False
slutspil
End If
End Sub
Private Sub slutspil()
spil_run = 0
'Viser besked boksen
'Da der kun er en der kan tage den sidste tændstik kan der kun være en taber, uafhængig af spiller antal
naeste_bruger
MsgBox ("Spillet er slut! " & spiller(spillerid) & " har tabt!")
'Skjuler alle tændstikker
For u = 0 To antal
match(u).Visible = False
match(u).Enabled = False
Next u
'Deaktiverer næste tur knappen
cmdNaestetur.Enabled = False
End Sub
Private Sub cmdNaestetur_Click()
sluttur
End Sub
Private Sub sluttur()
'Ai stuff
taget = 3 - i
Clipboard.Clear
Clipboard.SetText "[" & spillerid & "] " & tilbage & " --> " & taget
ai_temp(spillerid, tilbage - 1 + taget) = taget
'Gælder kun hvis hvis antallet af resterende pinde er over 1
If (tilbage > 1) Then
naeste_bruger
lblSpiller.Caption = spiller(spillerid)
'Sætter i til 3 og viser "i" i labelen
i = 3
lblpinde.Caption = i
'Deaktiverer næste tur knappen
cmdNaestetur.Enabled = False
End If
End Sub
Private Sub menu_afslut_Click()
'Afslutter spillet og lukker
If MsgBox("Er du sikker på at du vil afslutte spillet?", vbYesNo) = vbYes Then
sluttur
End
End If
End Sub
Private Sub menu_nyt_spil_Click()
'Viser kun besked boksen hvis der er et spil igang
If (spil_run = 1) Then
If MsgBox("Er du sikker på at du vil starte et nyt spil?", vbYesNo) = vbYes Then
'Starter et nyt spil
nyt_spil
End If
Else
'Starter et nyt spil
nyt_spil
End If
End Sub
'Denne sub finder den næste bruger
Private Sub naeste_bruger()
spillerid = spillerid + 1
'Hvis spiller id er lig spiller antal sæt spiller id til 0
If (spillerid = spillerantal) Then
spillerid = 0
End If
End Sub
Private Sub save_ai()
Dim c As Integer
Dim q As Integer
For c = 0 To (spillerantal - 1)
Dim won As Integer
If spillerid = c Then
won = 1
Else
won = 0
End If
For q = 0 To antal
If (ai_temp(c, q) > 0) Then
ai(spillerantal - 1, q, ai_temp(c, q)) = won
End If
Next q
Next c
End Sub
Private Sub array2clip(arr() As Integer)
Dim s As String
Dim ix As Integer
Dim iy As Integer
For ix = 0 To 4
For iy = 0 To 47
s$ = s$ & "[" & ix & "," & iy & "] " & arr(ix, iy) & vbCrLf$
Next iy
Next ix
If (Len(s$) > 0) Then
Clipboard.Clear
Clipboard.SetText s$
End If
End Sub
Private Sub array2clip3d(arr() As Integer)
Dim s As String
Dim ix As Integer
Dim iy As Integer
Dim iz As Integer
For ix = 0 To 4
For iy = 0 To 47
For iz = 1 To 3
s$ = s$ & "[" & ix & "," & iy & "] " & arr(ix, iy, iz) & vbCrLf$
Next iz
Next iy
Next ix
If (Len(s$) > 0) Then
Clipboard.Clear
Clipboard.SetText s$
End If
End Sub
