der er uendelige løkker i programmet
jeg har prøvet at lave et program hvor der er 16x16 felter man markerer så nogle felter starter programmet og den vil ud fra bestemte regler markere/slette felter. Hvordan kan jeg fjerne at den laver løkkerKODE: Option Explicit
Dim StartTid As Long
Dim Tid As Long
Dim hvid, sort, blå As Long
Dim Navn(200) As String
Dim AntalNavne As String
Const bredde = 16
Private Sub cmdReset_Click()
Dim lodret, vandret, feltid As Integer
For lodret = 1 To bredde
For vandret = 1 To bredde
feltid = (lodret * bredde) + vandret
lblFelt(feltid).BackColor = sort
lblFelt(feltid).Tag = False
Next
Next
lblTid.Caption = Format$(0, "00")
End Sub
Function CheckOmViErDone()
Dim lodret As Integer, vandret As Integer
Dim cnt As Integer, feltid As Integer
For lodret = 1 To bredde
For vandret = 1 To bredde
feltid = (lodret * bredde) + vandret
If lblFelt(feltid).Tag = True Then
cnt = cnt + 1
End If
Next vandret
Next lodret
If cnt = 0 Then
Timer1.Enabled = False
MsgBox "Desværre - Alt liv blev udslettet!"
Command1.Caption = "Start"
End If
End Function
Private Sub Command1_Click()
Timer1.Enabled = True
StartTid = Timer
If Command1.Caption = "Start" Then
Command1.Caption = "Stop"
Do While Command1.Caption = "Stop"
Generation
CheckOmViErDone
DoEvents
Loop
Else
Command1.Caption = "Start"
End If
End Sub
Private Sub Command2_Click()
MsgBox "LIV - Spil Forklaring: De otte felter omkring et givet felt kaldes feltets naboer - En brik, som har to eller tre nabobrikker overlever til næste generation - En brik som har fire eller flere naboer, dør på grund af overbefolkning og bliver fjernet - En hver brik som kun har én nabo, dør af mangel på støtter - I et hvert tomt felt, som har tre - og kun tre- naboer, sker der en fødsel og der placeres en brik i næste generation"
End Sub
Private Sub Command3_Click()
MsgBox "Man starter med at markere x antal felter, så klikker man på start og spillet går igang, man kan løbende klikke på felter. - Det gælder om at holde liv i spillet så længe som muligt - spillet er slut når alle felte/liv er slettet/døde - Spillet kan midlertidigt stoppes ved at trykke stop."
End Sub
Private Sub Form_Load()
Dim lodret, vandret, feltid As Integer
hvid = RGB(255, 255, 128)
sort = RGB(0, 128, 0)
blå = RGB(0, 0, 128)
For lodret = 1 To bredde
For vandret = 1 To bredde
feltid = (lodret * bredde) + vandret
Load lblFelt(feltid)
lblFelt(feltid).Move lodret * _
lblFelt(feltid).Width, _
vandret * lblFelt(feltid).Height
lblFelt(feltid).BackColor = sort
lblFelt(feltid).Tag = False
lblFelt(feltid).Visible = True
Next
Next
End Sub
Private Sub lblFelt_MouseDown(Index As Integer, Button As Integer, Shift As Integer, x As Single, y As Single)
If Button = 1 Then 'Venstre Knap
lblFelt(Index).BackColor = hvid
lblFelt(Index).Tag = True
End If
If Button = 2 Then 'Højre knap
lblFelt(Index).BackColor = sort
lblFelt(Index).Tag = False
End If
End Sub
Function FeltOverlever(lblID As Integer) 'Funktion header
Dim AntalLevendeNaboer As Integer
Dim ILiveNu As Integer
ILiveNu = lblFelt(lblID).Tag = True
AntalLevendeNaboer = 0
' Test de felter ovenover
If lblFelt(lblID - (bredde + 1)).Tag = True Then _
AntalLevendeNaboer = AntalLevendeNaboer + 1
If lblFelt(lblID - bredde).Tag = True Then _
AntalLevendeNaboer = AntalLevendeNaboer + 1
If lblFelt(lblID - (bredde - 1)).Tag = True Then _
AntalLevendeNaboer = AntalLevendeNaboer + 1
' Test de to felter på hver sin side af det aktuelle felt
If lblFelt(lblID - 1).Tag = True Then _
AntalLevendeNaboer = AntalLevendeNaboer + 1
If lblFelt(lblID + 1).Tag = True Then _
AntalLevendeNaboer = AntalLevendeNaboer + 1
' Test de tre felter nedenunder
If lblFelt(lblID + (bredde - 1)).Tag = True Then _
AntalLevendeNaboer = AntalLevendeNaboer + 1
If lblFelt(lblID + bredde).Tag = True Then _
AntalLevendeNaboer = AntalLevendeNaboer + 1
If lblFelt(lblID + (bredde + 1)).Tag = True Then _
AntalLevendeNaboer = AntalLevendeNaboer + 1
'Funktion Retunerer True eller False
FeltOverlever = (ILiveNu And ((AntalLevendeNaboer = 2) _
Or (AntalLevendeNaboer = 3))) _
Or ((Not ILiveNu) And (AntalLevendeNaboer = 3))
If AntalLevendeNaboer = 0 Then
lblTid = Timer - StartTid
End If
End Function
Private Sub Generation()
Dim lodret, vandret, feltid As Integer
'Tegn overlevende felter
For lodret = 2 To (bredde - 1)
For vandret = 2 To (bredde - 1)
feltid = (lodret * bredde) + vandret
lblFelt(feltid).BackColor = _
IIf(FeltOverlever(feltid), hvid, sort)
Next
Next
'opdater True-properties
For lodret = 2 To (bredde - 1)
For vandret = 2 To (bredde - 1)
feltid = (lodret * bredde) + vandret
lblFelt(feltid).Tag = _
IIf(lblFelt(feltid).BackColor = hvid, True, False)
Next
Next
End Sub
Private Sub Timer1_Timer()
Timer1.Enabled = False
Tid = StartTid - Timer1
End Sub
