Also ich bin zur Zeit ein kleineres Kartenspiel am entwerfen das man gegen einen Computergegner spielt.
Ich werde hier die gekürzten Codes auflisten und sagen was sie bewirken sollen und wo mein Problem liegt und hoffe das mir jemand helfen kann
Also man hat 3 Karten auf der Hand, das ist jetzt der Befehl wenn man die Karte auf Position 1 (die für 2 und 3 sind genau so aufgebaut)
aus der eigenen Hand anklickt / auswählt, für den Computer wird eine zufällige ausgewählt.
Dadurch wird nun der Timer aktiviert der die Ausgewählte Karte ein wenig nach oben verschiebt damit man sehen kann ob sie ausgewählt wurde.
Nun komm ich zu dem Teil an dem ich ein Problem habe wenn ich im vorigen Code "tmr_kampf" an erste Stelle tu fragt er die Werte aus "tmr_kampf_pl2" zu spät ab und umgekehrt.
Es geht um folgende Werte:
pl1_blau_ang
pl1_grün_ang
pl1_gelb_ang
pl1_rot_ang
pl1_kartentyp
Hier nun die Timer die diese Werte festlegen und auch abfragen.
Der Code für pl2_tmr sieht genau so aus nur das überall wo pl1 steht halt pl2 steht und umgekehrt, hier jedoch mal ein kleiner Teil der gut als Beispiel dient...
Nochmal konkret zu meinem Problem:
Wenn ich tmr_kampf zuerst setzte kann er die Werte von pl2_blau_ang nicht abfragen aber tmr_kampf_pl2 schon von pl1_blau_ang,
Wenn ich dann tmr_kampf_pl2 zuerst setzte haben wir das selbe in grün :/.
Das ist das einzige Problem was ich besitzte ansonsten ist das Spiel dann schon fertig und Fehlerfrei
Wäre nett wenn mir jemand dabei behilflich sein könnte !
Ich werde hier die gekürzten Codes auflisten und sagen was sie bewirken sollen und wo mein Problem liegt und hoffe das mir jemand helfen kann
Also man hat 3 Karten auf der Hand, das ist jetzt der Befehl wenn man die Karte auf Position 1 (die für 2 und 3 sind genau so aufgebaut)
aus der eigenen Hand anklickt / auswählt, für den Computer wird eine zufällige ausgewählt.
VB.NET-Quellcode
- Private Sub pl1_karte1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lbl_pl1_karte1.Click
- '----------------------------------------'
- 'Karte ausgewählt'
- '----------------------------------------'
- tmr_karte_klick.Enabled = True
- pl1_handauswahl = 1
- '----------------------------------------'
- '----------------------------------------'
- '----------------------------------------'
- 'Gegnerische Karte auswählen'
- '----------------------------------------'
- Randomize()
- Dim random As Integer = CInt(Int((3 * Rnd()) + 1))
- pl2_handauswahl = random
- '----------------------------------------'
- '----------------------------------------'
- End Sub
Dadurch wird nun der Timer aktiviert der die Ausgewählte Karte ein wenig nach oben verschiebt damit man sehen kann ob sie ausgewählt wurde.
VB.NET-Quellcode
- Private Sub tmr_karte_klick_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmr_karte_klick.Tick
- '----------------------------------------'
- '----------------------------------------'
- If lbl_pl1_karte1.Location.Y <= 393 Or lbl_pl1_karte2.Location.Y <= 393 Or lbl_pl1_karte3.Location.Y <= 393 Then
- tmr_karte_klick.Enabled = False
- tmr_kampf.Enabled = True
- tmr_kampf_pl2.Enabled = True
- Else
- '----------------------------------------'
- 'Bewegung der Eigenen Karte'
- '----------------------------------------'
- If pl1_handauswahl = 1 Then
- lbl_pl1_karte1.Location = New Point(lbl_pl1_karte1.Location.X + 0, lbl_pl1_karte1.Location.Y - 1)
- ElseIf pl1_handauswahl = 2 Then
- lbl_pl1_karte2.Location = New Point(lbl_pl1_karte2.Location.X + 0, lbl_pl1_karte2.Location.Y - 1)
- Else
- lbl_pl1_karte3.Location = New Point(lbl_pl1_karte3.Location.X + 0, lbl_pl1_karte3.Location.Y - 1)
- End If
- '----------------------------------------'
- '----------------------------------------'
- End If
Nun komm ich zu dem Teil an dem ich ein Problem habe wenn ich im vorigen Code "tmr_kampf" an erste Stelle tu fragt er die Werte aus "tmr_kampf_pl2" zu spät ab und umgekehrt.
Es geht um folgende Werte:
pl1_blau_ang
pl1_grün_ang
pl1_gelb_ang
pl1_rot_ang
pl1_kartentyp
Hier nun die Timer die diese Werte festlegen und auch abfragen.
VB.NET-Quellcode
- Private Sub tmr_kampf_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmr_kampf.Tick
- Dim pl1_karte_a As Integer
- If pl1_handauswahl = 1 Then
- pl1_karte_a = pl1_karte1_hand
- ElseIf pl1_handauswahl = 2 Then
- pl1_karte_a = pl1_karte2_hand
- Else
- pl1_karte_a = pl1_karte3_hand
- End If
- Select Case pl1_karte_a
- ''es exestieren auch noch cases davor und danach aber case 17 ist das beste beispiel da es aus pl2 etwas abfragt
- Case 17
- GoTo 17
- End Select
- 17:
- pl1_blau_ang = -1
- pl1_grün_ang = 0
- pl1_gelb_ang = 0
- pl1_rot_ang = 0
- pl1_kartentyp = "grün"
- '----------------------------------------'
- 'Wenn Felder vorhanden
- '----------------------------------------'
- If pl2_blau_ang = 0 Then
- pl1_grün_ang += 2
- End If
- If pl2_grün_ang = 0 Then
- pl1_grün_ang += 2
- End If
- If pl2_gelb_ang = 0 Then
- pl1_grün_ang += 2
- End If
- If pl2_rot_ang = 0 Then
- pl1_grün_ang += 2
- End If
- ''hier nach kommen auch noch einige befehle der karten die jedoch nur auf die pl1_blau,grün,gelb und rot eingehen deshalb habe ich diese jetzt weggelassen zur übersicht
- GoTo Ende
- Ende:
- If pl1_handauswahl = 1 Then
- '174; 443
- lbl_pl1_karte1.BackgroundImage = Nothing
- pl1_karte1_b = False
- lbl_pl1_karte1.Location = New Point(lbl_pl1_karte1.Location.X + 0, lbl_pl1_karte1.Location.Y + 50)
- ElseIf pl1_handauswahl = 2 Then
- '388; 443
- lbl_pl1_karte2.BackgroundImage = Nothing
- pl1_karte2_b = False
- lbl_pl1_karte2.Location = New Point(lbl_pl1_karte2.Location.X + 0, lbl_pl1_karte2.Location.Y + 50)
- Else
- '605; 443
- lbl_pl1_karte3.BackgroundImage = Nothing
- pl1_karte3_b = False
- lbl_pl1_karte3.Location = New Point(lbl_pl1_karte3.Location.X + 0, lbl_pl1_karte3.Location.Y + 50)
- End If
- tmr_kampf.Enabled = False
- End Sub
Der Code für pl2_tmr sieht genau so aus nur das überall wo pl1 steht halt pl2 steht und umgekehrt, hier jedoch mal ein kleiner Teil der gut als Beispiel dient...
VB.NET-Quellcode
- Private Sub tmr_kampf_pl2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmr_kampf_pl2.Tick
- Dim pl2_karte_a As Integer
- If pl2_handauswahl = 1 Then
- pl2_karte_a = pl2_karte1_hand
- ElseIf pl1_handauswahl = 2 Then
- pl2_karte_a = pl2_karte2_hand
- Else
- pl2_karte_a = pl2_karte3_hand
- End If
- Select Case pl2_karte_a
- Case 1
- GoTo 1
- End Select
- 1:
- pl2_blau_ang = -1
- pl2_grün_ang = 0
- pl2_gelb_ang = 0
- pl2_rot_ang = 3
- pl2_kartentyp = "grün"
- GoTo ende
- ''hab ende jetzt einfach mal weggelassen...
Nochmal konkret zu meinem Problem:
Wenn ich tmr_kampf zuerst setzte kann er die Werte von pl2_blau_ang nicht abfragen aber tmr_kampf_pl2 schon von pl1_blau_ang,
Wenn ich dann tmr_kampf_pl2 zuerst setzte haben wir das selbe in grün :/.
Das ist das einzige Problem was ich besitzte ansonsten ist das Spiel dann schon fertig und Fehlerfrei
Wäre nett wenn mir jemand dabei behilflich sein könnte !