Hi Leute,
ich habe ein kleines Spiel begonnen zu programmieren. Es ist nicht das erste was ich mit VB mache aber ich bin jetzt auch noch kein Profi.
Da Spiel ist sehr Simple aufgebaut aber darauf will ich jetzt nicht weiter eingehen.
Mein Spiel ist ein Strategie Spiel (Rundenbasierend) ohne Engine sondern mit png's. Das Spiel braucht 2 Spieler vor dem PC (1vs1). Man kann Einheiten bauen und man kann auf einem "Battlefield" kämpfen.
Das Problem:
Bürger (50% Chance) vs Bürger (50% Chance) klappt soweit.
Bürger (1/3 Chance) vs Speerträger (2/3 Chance) passiert folgendes: Anstatt dass eine Meldung erscheint das ein Spieler eine Einheit verloren hat und diese Verschwindet kommt einfach garnichts. Die Random Zahl wird jedoch generiert. Die Random Zahl ist z.b. 1. Der Bürger sollte bei 0-4 Sterben. Dies Passiert aber nicht, weder der Bürger noch der Speer stirbt. Erst nach mehrmaligem wiederholen kommt die Meldung das ein Spieler eine Einheit verloren hat.
Soweit zu Problem 1. Problem 2 ist ebenfalls im Bereich Bürger vs Speer:
Stirbt eine Einheit wird manchmal in der Anzeige die Einheitenzahl um 1 gesenkt und manchmal nicht! Bei Bürger vs Bürger funktioniert dies allerdings immer.
Soweit die Theorie in der Praxis sieht allerdings für mich nach 10-20maligem überarbeiten richtig aus.
Bevor ich zum Code komme muss ich noch erklären das es ein Combat Check System gibt. Es Prüft welche Einheit ausgewählt ist. Die Combat_ID wird beim Bewegen der Einheit automatisch geändert!
Der Code ist aus der Sicht des 2.Spielers!
Battle ID:
1 = Bürger
2 = Speer
Das war das Combat Check System. Nun zum CombatSystem:
Wenn ihr das ganze Problem Live sehen wollt: >Hier gehts zur Homepage des Games<
edit: Beachtet das ich von der Version 0.4.2_11 Alpha rede, welche gerade als patch auf den server gezogen worden ist (16:12Uhr). Der Alpha Key ist 8211.
Ich hoffe ich habe nichts vergessen zu erwähnen. Wenn ihr mir helfen könntet wäre das echt super
- Danke schomal im vorraus.
mfg Tixewi
ich habe ein kleines Spiel begonnen zu programmieren. Es ist nicht das erste was ich mit VB mache aber ich bin jetzt auch noch kein Profi.
Da Spiel ist sehr Simple aufgebaut aber darauf will ich jetzt nicht weiter eingehen.
Mein Spiel ist ein Strategie Spiel (Rundenbasierend) ohne Engine sondern mit png's. Das Spiel braucht 2 Spieler vor dem PC (1vs1). Man kann Einheiten bauen und man kann auf einem "Battlefield" kämpfen.
Das Problem:
Bürger (50% Chance) vs Bürger (50% Chance) klappt soweit.
Bürger (1/3 Chance) vs Speerträger (2/3 Chance) passiert folgendes: Anstatt dass eine Meldung erscheint das ein Spieler eine Einheit verloren hat und diese Verschwindet kommt einfach garnichts. Die Random Zahl wird jedoch generiert. Die Random Zahl ist z.b. 1. Der Bürger sollte bei 0-4 Sterben. Dies Passiert aber nicht, weder der Bürger noch der Speer stirbt. Erst nach mehrmaligem wiederholen kommt die Meldung das ein Spieler eine Einheit verloren hat.
Soweit zu Problem 1. Problem 2 ist ebenfalls im Bereich Bürger vs Speer:
Stirbt eine Einheit wird manchmal in der Anzeige die Einheitenzahl um 1 gesenkt und manchmal nicht! Bei Bürger vs Bürger funktioniert dies allerdings immer.
Soweit die Theorie in der Praxis sieht allerdings für mich nach 10-20maligem überarbeiten richtig aus.
Bevor ich zum Code komme muss ich noch erklären das es ein Combat Check System gibt. Es Prüft welche Einheit ausgewählt ist. Die Combat_ID wird beim Bewegen der Einheit automatisch geändert!
Der Code ist aus der Sicht des 2.Spielers!
Battle ID:
1 = Bürger
2 = Speer
VB.NET-Quellcode
- Private Sub CombatCheck()
- If My.Settings.combat_id_p2 = "Villager" Then
- 'Dorfbewohner vs Dorfbewohner
- If ButtonVillager.Visible = True Then
- If ButtonVillager_p2.Location = ButtonVillager.Location Then
- My.Settings.battle_id_unit = "1"
- My.Settings.battle_id_unit_p2 = "1"
- CombatSystem()
- End If
- End If
- 'Dorfbewohner vs Speer
- If ButtonSpear.Visible = True Then
- If ButtonVillager_p2.Location = ButtonSpear.Location Then
- My.Settings.battle_id_unit = "2"
- My.Settings.battle_id_unit_p2 = "1"
- CombatSystem()
- End If
- End If
- End If
- If My.Settings.combat_id_p2 = "Spear" Then
- 'Speer vs Dorfbewohner
- If ButtonVillager.Visible = True Then
- If ButtonSpear_p2.Location = ButtonVillager.Location Then
- My.Settings.battle_id_unit = "1"
- My.Settings.battle_id_unit_p2 = "2"
- CombatSystem()
- End If
- End If
- 'Speer vs Speer
- If ButtonSpear.Visible = True Then
- If ButtonSpear_p2.Location = ButtonSpear.Location Then
- My.Settings.battle_id_unit = "2"
- My.Settings.battle_id_unit_p2 = "2"
- CombatSystem()
- End If
- End If
- End If
- End Sub
Das war das Combat Check System. Nun zum CombatSystem:
VB.NET-Quellcode
- Private Sub CombatSystem()
- '----------------------------
- ' Combat System Informaition:
- '----------------------------
- '----------------------------
- '----------------------------
- ' Units
- '----------------------------
- ' Battle ID Unit 1 = Dorfbewohner
- ' Battle ID Unit 2 = Speer
- ' Battle ID Unit 3 = Schwert 1
- ' Battle ID Unit 4 = Schwert 2
- '----------------------------
- 'Sound
- '----------------------------
- If My.Settings.setting_sound = "yes" Then My.Computer.Audio.Play(My.Resources.alert, AudioPlayMode.Background)
- '----------------------------
- 'CombatSystem
- '----------------------------
- 'Villager
- If My.Settings.battle_id_unit_p2 = "1" Then
- If My.Settings.battle_id_unit = "1" Then
- 'Unit 1 vs Unit 1
- Dim rnd As New Random()
- Dim result As Integer = rnd.Next(0, 10)
- LabelWin.Text = result
- '0-4 = Ich verliere | 5-9 = Anderer verliert | 1:1
- If LabelWin.Text > "4" Then
- ButtonVillager.Hide()
- player1map2.ButtonVillager.Hide()
- My.Settings.people = My.Settings.people - 1
- My.Settings.unit_villager = My.Settings.unit_villager - 1
- player1map1.ButtonVillager.Show()
- player1map1.LabelPeople.Text = player1map1.LabelPeople.Text - 1
- MsgBox("Player 1 has lost one unit!", MsgBoxStyle.Information, "Combat")
- ElseIf LabelWin.Text < "5" Then
- ButtonVillager_p2.Hide()
- player1map2.ButtonVillager_p2.Hide()
- My.Settings.people_p2 = My.Settings.people_p2 - 1
- My.Settings.unit_villager_p2 = My.Settings.unit_villager_p2 - 1
- player2map1.ButtonVillager.Show()
- player2map1.LabelPeople.Text = player2map1.LabelPeople.Text - 1
- MsgBox("Player 2 has lost one unit!", MsgBoxStyle.Information, "Combat")
- End If
- ElseIf My.Settings.battle_id_unit = "2" Then
- 'Unit 1 vs Unit 2
- Dim rnd2 As New Random()
- Dim result As Integer = rnd2.Next(0, 15)
- LabelWin.Text = result
- '0-9 = Ich verliere | 10-14 = Anderer verliert | 2:1
- If LabelWin.Text > "9" Then
- ButtonSpear.Hide()
- player1map2.ButtonSpear.Hide()
- My.Settings.people = My.Settings.people - 1
- My.Settings.unit_spear = My.Settings.unit_spear - 1
- player1map1.ButtonSpear.Show()
- player1map1.LabelPeople.Text = player1map1.LabelPeople.Text - 1
- MsgBox("Player 1 has lost one unit!", MsgBoxStyle.Information, "Combat")
- ElseIf LabelWin.Text < "10" Then
- ButtonVillager_p2.Hide()
- player1map2.ButtonVillager_p2.Hide()
- My.Settings.people_p2 = My.Settings.people_p2 - 1
- My.Settings.unit_villager_p2 = My.Settings.unit_villager_p2 - 1
- player2map1.ButtonVillager.Show()
- player2map1.LabelPeople.Text = player2map1.LabelPeople.Text - 1
- MsgBox("Player 2 has lost one unit!", MsgBoxStyle.Information, "Combat")
- End If
- End If
- End If
- 'Speer
- If My.Settings.battle_id_unit_p2 = "2" Then
- If My.Settings.battle_id_unit = "1" Then
- 'Unit 2 vs Unit 1
- Dim rnd3 As New Random()
- Dim result As Integer = rnd3.Next(0, 15)
- LabelWin.Text = result
- '0-4 = Ich verliere | 5-14 = Anderer verliert | 1:2
- If LabelWin.Text > "4" Then
- ButtonVillager.Hide()
- player1map2.ButtonVillager.Hide()
- My.Settings.people = My.Settings.people - 1
- My.Settings.unit_villager = My.Settings.unit_villager - 1
- player1map1.ButtonVillager.Show()
- player1map1.LabelPeople.Text = player1map1.LabelPeople.Text - 1
- MsgBox("Player 1 has lost one unit!", MsgBoxStyle.Information, "Combat")
- ElseIf LabelWin.Text < "5" Then
- ButtonSpear_p2.Hide()
- player1map2.ButtonSpear_p2.Hide()
- My.Settings.people_p2 = My.Settings.people_p2 - 1
- My.Settings.unit_spear_p2 = My.Settings.unit_spear_p2 - 1
- player2map1.ButtonSpear.Show()
- player2map1.LabelPeople.Text = player2map1.LabelPeople.Text - 1
- MsgBox("Player 2 has lost one unit!", MsgBoxStyle.Information, "Combat")
- End If
- ElseIf My.Settings.battle_id_unit = "2" Then
- 'Unit 2 vs Unit 2
- Dim rnd4 As New Random()
- Dim result As Integer = rnd4.Next(0, 10)
- LabelWin.Text = result
- '0-4 = Ich verliere | 5-9 = Anderer verliert
- If LabelWin.Text > "4" Then
- ButtonSpear.Hide()
- player1map2.ButtonSpear.Hide()
- My.Settings.people = My.Settings.people - 1
- My.Settings.unit_spear = My.Settings.unit_spear - 1
- player1map1.ButtonSpear.Show()
- player1map1.LabelPeople.Text = player1map1.LabelPeople.Text - 1
- MsgBox("Player 1 has lost one unit!", MsgBoxStyle.Information, "Combat")
- ElseIf LabelWin.Text < "5" Then
- ButtonSpear_p2.Hide()
- player1map2.ButtonSpear_p2.Hide()
- My.Settings.people_p2 = My.Settings.people_p2 - 1
- My.Settings.unit_spear_p2 = My.Settings.unit_spear_p2 - 1
- player2map1.ButtonSpear.Show()
- player2map1.LabelPeople.Text = player2map1.LabelPeople.Text - 1
- MsgBox("Player 2 has lost one unit!", MsgBoxStyle.Information, "Combat")
- End If
- End If
- End If
- End Sub
Wenn ihr das ganze Problem Live sehen wollt: >Hier gehts zur Homepage des Games<
edit: Beachtet das ich von der Version 0.4.2_11 Alpha rede, welche gerade als patch auf den server gezogen worden ist (16:12Uhr). Der Alpha Key ist 8211.
Ich hoffe ich habe nichts vergessen zu erwähnen. Wenn ihr mir helfen könntet wäre das echt super

mfg Tixewi
Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „Tixewi“ ()