Textadventure Spiel - Quellcode einmal schreiben und mehrmals abfragen

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Textadventure Spiel - Quellcode einmal schreiben und mehrmals abfragen

    Hallo liebe VB- Community,

    ich bin absoluter Einsteiger im Bereich VB und wollte nun ein kleines Textadventure programmieren. Leider bin ich dabei auf ein paar Hindernisse gestoßen. Das meiste konnte ich mit Google glücklicherweise lösen, jedoch stoße ich nun an meine Grenzen, da ich nicht weiß, nach welchem Begriff ich suchen muss.

    Ich habe die Buttons "Gehe nach...." und dann eben Norden, Süden, Westen und Osten. Bei all den Buttons soll das gleiche passieren: Entweder stößt man auf einen Dungeon, auf ein Waldstück, eine Lichtung oder See. Hier wiederrum sollen je nach Gebiet unterschiedliche Gegner auftauchen. Momentan habe ich einen riesigen Quellcode für nur einen Button, den ich natürlich kopieren kann. Allerdings falls ich später mal was änderen möchte, wird es knifflig. Meine Frage daher: Kann ich einen Teil abkürzen, in dem ich es einmal irgendwo definiere und dann abfrage?

    Hier mein Code:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub btnNorden_Click(sender As Object, e As EventArgs) Handles btnNorden.Click
    2. vGebiet = vZufallswürfel.Next(1, 11)
    3. vGegner = vZufallswürfel.Next(1, 11)
    4. btnNorden.Enabled = False
    5. btnSüden.Enabled = False
    6. btnWesten.Enabled = False
    7. btnOsten.Enabled = False
    8. btnAngriff.Enabled = True
    9. Select Case vGebiet
    10. Case 1 To 3
    11. lstStory.Items.Add("Du siehst in eine Höhle")
    12. Select Case vGegner
    13. Case 1 To 3
    14. btnNorden.Enabled = True
    15. btnSüden.Enabled = True
    16. btnWesten.Enabled = True
    17. btnOsten.Enabled = True
    18. btnAngriff.Enabled = False
    19. Case 4 To 6
    20. lstStory.Items.Add(vRattetext)
    21. vGegnername = "Ratte"
    22. vGegnerHP = 10
    23. vGegnerstärke = vZufallswürfel.Next(1, 5)
    24. vXPZuwachs = 5
    25. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    26. lstStory.Items.Add("")
    27. vLebenaktuell -= vGegnerstärke
    28. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    29. pbLeben.Value -= vGegnerstärke
    30. Case 7 To 8
    31. lstStory.Items.Add(vFledermaustext)
    32. vGegnername = "Fledermaus"
    33. vGegnerHP = 15
    34. vXPZuwachs = 15
    35. vGegnerstärke = vZufallswürfel.Next(1, 5)
    36. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    37. lstStory.Items.Add("")
    38. vLebenaktuell -= vGegnerstärke
    39. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    40. pbLeben.Value -= vGegnerstärke
    41. Case 9 To 10
    42. lstStory.Items.Add(vGeisttext)
    43. vGegnername = "Geist"
    44. vGegnerHP = 20
    45. vXPZuwachs = 15
    46. vGegnerstärke = vZufallswürfel.Next(1, 5)
    47. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    48. lstStory.Items.Add("")
    49. vLebenaktuell -= vGegnerstärke
    50. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    51. pbLeben.Value -= vGegnerstärke
    52. End Select
    53. Case 4, 5
    54. lstStory.Items.Add("Du kommst in einen Wald")
    55. Select Case vGegner
    56. Case 1 To 3
    57. btnNorden.Enabled = True
    58. btnSüden.Enabled = True
    59. btnWesten.Enabled = True
    60. btnOsten.Enabled = True
    61. btnAngriff.Enabled = False
    62. Case 4 To 5
    63. lstStory.Items.Add(vFledermaustext)
    64. vGegnername = "Fledermaus"
    65. vGegnerHP = 15
    66. vXPZuwachs = 15
    67. vGegnerstärke = vZufallswürfel.Next(1, 5)
    68. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    69. lstStory.Items.Add("")
    70. vLebenaktuell -= vGegnerstärke
    71. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    72. pbLeben.Value -= vGegnerstärke
    73. Case 6 To 7
    74. lstStory.Items.Add(vWolftext)
    75. vGegnername = "Wolf"
    76. vGegnerHP = 20
    77. vXPZuwachs = 20
    78. vGegnerstärke = vZufallswürfel.Next(1, 5)
    79. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    80. lstStory.Items.Add("")
    81. vLebenaktuell -= vGegnerstärke
    82. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    83. pbLeben.Value -= vGegnerstärke
    84. Case 8 To 9
    85. lstStory.Items.Add(vLuchstext)
    86. vGegnername = "Luchs"
    87. vGegnerHP = 15
    88. vXPZuwachs = 15
    89. vGegnerstärke = vZufallswürfel.Next(1, 5)
    90. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    91. lstStory.Items.Add("")
    92. vLebenaktuell -= vGegnerstärke
    93. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    94. pbLeben.Value -= vGegnerstärke
    95. Case 10
    96. lstStory.Items.Add(vBärtext)
    97. vGegnername = "Bär"
    98. vGegnerHP = 40
    99. vXPZuwachs = 40
    100. vGegnerstärke = vZufallswürfel.Next(1, 5)
    101. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    102. lstStory.Items.Add("")
    103. vLebenaktuell -= vGegnerstärke
    104. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    105. pbLeben.Value -= vGegnerstärke
    106. End Select
    107. Case 6
    108. lstStory.Items.Add("Du kommst auf eine Lichtung")
    109. Select Case vGegner
    110. Case 1 To 3
    111. btnNorden.Enabled = True
    112. btnSüden.Enabled = True
    113. btnWesten.Enabled = True
    114. btnOsten.Enabled = True
    115. btnAngriff.Enabled = False
    116. Case 4 To 6
    117. lstStory.Items.Add(vSchlange)
    118. vGegnername = "Schlange"
    119. vGegnerHP = 15
    120. vXPZuwachs = 15
    121. vGegnerstärke = vZufallswürfel.Next(1, 5)
    122. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    123. lstStory.Items.Add("")
    124. vLebenaktuell -= vGegnerstärke
    125. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    126. pbLeben.Value -= vGegnerstärke
    127. Case 7 To 8
    128. lstStory.Items.Add(vAdlertext)
    129. vGegnername = "Adler"
    130. vGegnerHP = 15
    131. vXPZuwachs = 15
    132. vGegnerstärke = vZufallswürfel.Next(1, 5)
    133. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    134. lstStory.Items.Add("")
    135. vLebenaktuell -= vGegnerstärke
    136. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    137. pbLeben.Value -= vGegnerstärke
    138. Case 9
    139. lstStory.Items.Add(vGreiftext)
    140. vGegnername = "Greif"
    141. vGegnerHP = 20
    142. vXPZuwachs = 20
    143. vGegnerstärke = vZufallswürfel.Next(1, 5)
    144. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    145. lstStory.Items.Add("")
    146. vLebenaktuell -= vGegnerstärke
    147. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    148. pbLeben.Value -= vGegnerstärke
    149. Case 10
    150. lstStory.Items.Add(vDrachetext)
    151. vGegnername = "Drache"
    152. vGegnerHP = 80
    153. vXPZuwachs = 80
    154. vGegnerstärke = vZufallswürfel.Next(1, 5)
    155. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    156. lstStory.Items.Add("")
    157. vLebenaktuell -= vGegnerstärke
    158. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    159. pbLeben.Value -= vGegnerstärke
    160. End Select
    161. Case 7 To 10
    162. lstStory.Items.Add("Du gehst auf einen See zu")
    163. Select Case vGegner
    164. Case 1 To 3
    165. btnNorden.Enabled = True
    166. btnSüden.Enabled = True
    167. btnWesten.Enabled = True
    168. btnOsten.Enabled = True
    169. btnAngriff.Enabled = False
    170. Case 4 To 5
    171. lstStory.Items.Add(vFuchstext)
    172. vGegnername = "Fuchs"
    173. vGegnerHP = 10
    174. vXPZuwachs = 10
    175. vGegnerstärke = vZufallswürfel.Next(1, 5)
    176. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    177. lstStory.Items.Add("")
    178. vLebenaktuell -= vGegnerstärke
    179. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    180. pbLeben.Value -= vGegnerstärke
    181. Case 6 To 7
    182. lstStory.Items.Add(vHirschtext)
    183. vGegnername = "Hirsch"
    184. vGegnerHP = 20
    185. vXPZuwachs = 20
    186. vGegnerstärke = vZufallswürfel.Next(1, 5)
    187. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    188. lstStory.Items.Add("")
    189. vLebenaktuell -= vGegnerstärke
    190. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    191. pbLeben.Value -= vGegnerstärke
    192. Case 8 To 9
    193. lstStory.Items.Add(vKampffisch)
    194. vGegnername = "Kampffisch"
    195. vGegnerHP = 10
    196. vXPZuwachs = 10
    197. vGegnerstärke = vZufallswürfel.Next(1, 5)
    198. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    199. lstStory.Items.Add("")
    200. vLebenaktuell -= vGegnerstärke
    201. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    202. pbLeben.Value -= vGegnerstärke
    203. Case 10
    204. lstStory.Items.Add(vHydra)
    205. vGegnername = "Hydra"
    206. vGegnerHP = 35
    207. vXPZuwachs = 35
    208. vGegnerstärke = vZufallswürfel.Next(1, 5)
    209. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    210. lstStory.Items.Add("")
    211. vLebenaktuell -= vGegnerstärke
    212. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    213. pbLeben.Value -= vGegnerstärke
    214. End Select
    215. End Select


    Hier meine Variablen:

    VB.NET-Quellcode

    1. Dim vGegnername As String
    2. Dim vGegnerHP As Double
    3. Dim vRattetext As String = "Eine riesige Ratte greift dich an"
    4. Dim vFledermaustext As String = "Mehrere Fledermäuse attackieren dich."
    5. Dim vGeisttext As String = "Ein Geist erscheint. Du erstarrst vor Angst!"
    6. Dim vWolftext As String = "Ein Wolf springt auf dich zu"
    7. Dim vLuchstext As String = "Ein Luchs greift dich an."
    8. Dim vBärtext As String = "Ein Bär greift dich an."
    9. Dim vSchlange As String = "Ein Schlange greift dich an."
    10. Dim vAdlertext As String = "Ein Adler greift dich an."
    11. Dim vGreiftext As String = "Ein Greif greift dich an."
    12. Dim vDrachetext As String = "Ein Drache greift dich an."
    13. Dim vFuchstext As String = "Ein Fuchs greift dich an."
    14. Dim vHirschtext As String = "Ein Hirsch greift dich an."
    15. Dim vKampffisch As String = "Ein Kampffisch greift dich an."
    16. Dim vHydra As String = "Ein Hydra greift dich an."


    Ich hoffe, ihr könnt mir helfen. Vielen Dank schon mal im Voraus

    Viele Grüße und ein frohes Fest an alle

    Corai :)

    p.s.: oh und bitte zerfleischt mich nicht, ich weiß, daß ich Anfänger bin XD

    Sehr langen Codeausschnitt in Spoiler-Tags versteckt. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Hi,

    nun sicher kann man das eleganter und viel kürzer schreiben. So ein "Textadventure" ist eine recht gute Gelegenheit, sich mit der Objektorientierung zu befassen.

    Hast Du folgende Begrifflichkeiten schon mal gehört oder bist Du damit vertraut?

    Klassen, Vererbung, Schnittstellen (Interfaces).....

    Jedenfalls kann ich Dir sagen, dass Du Dir ohne dieses Konzept wohl die Finger wund schreiben wirst und spätestens nach der 5000. Zeile kannst Du Dein eigenes Programm nicht mehr verstehen.

    Vor allem als Anfänger solltest Du Dir gleich die richtigen Konzepte aneignen. Beantworte kurz die Fragen, dann kann man sehen, wo man ansetzen muss.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    @Corai Willkommen im Forum. :thumbup:
    Unbedingte Voraussetzung: Option Strict On.
    Dann machst Du Dir ein Enum:

    VB.NET-Quellcode

    1. Enum Direction
    2. Up,
    3. Down,
    4. Left,
    5. Right
    6. End Enum
    und in die 4 Button-Routinen scheibst Du einfach:

    VB.NET-Quellcode

    1. MoveTo(Direction.Up) ' Down, Left, Right
    Den ganzen Code packst Du in die Routine MoveTo(dir As Direction).
    Dort wetest Du an den betreffenden Stellen den Direction-Parameter aus und feddich. :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo zusammen

    @SpaceyX
    meine Freundin macht eine Ausbildung zur IT- Kauffrau und ich lerne da mit. Die haben so etwas noch nicht gehabt, ich somit auch noch nicht :) . Aktuell haben die nur die Kontrollstrukturen durchgenommen. Privat haben wir halt mit google etwas weiter gemacht ;)

    @RodFromGermany
    Ganz oben hab ich Option Strict on natürlich.

    Könntest Du mir das mit dem Enum und dem MoveTo mit einem Beispiel erklären? Also Sprich ich habe Button btnNord, btnSüd, btnWest und btnOst und überall soll folgendes rein:

    VB.NET-Quellcode

    1. lstStory.Items.Add(vRattetext)
    2. vGegnername = "Ratte"
    3. vGegnerHP = 10
    4. vGegnerstärke = vZufallswürfel.Next(1, 5)
    5. vXPZuwachs = 5
    6. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    7. lstStory.Items.Add("")
    8. vLebenaktuell -= vGegnerstärke
    9. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    10. pbLeben.Value -= vGegnerstärke

    Könntest Du das mal aufführen? :)

    Ach noch eine andere Frage. Kann ich eine Listbox so einstellen, daß automatisch wenn was neues dazugeschrieben wird, diese nach ganz unten scrollt? Ich kenne folgenden Befehl:

    lstStory.SelectedIndex = lstStory.Items.Count - 1

    Wenn ich das mit einem Timer alle 0,5 sek abfrage, kann der User nicht mehr hoch scrollen. Wenn ich es aber unter jedem lstStory.Items.Add darunter setze, habe ich wieder sehr viele Zeilen. Kann man das nicht einmal wo definieren, daß es bei jedem add- Befehl passiert?

    Meine Freundin hat folgenden Lehrplan:
    ludwig-erhard-schule.de/filead…ente/UPlan_IKI_AWP_10.pdf

    Aktuell sind sie bei Punkt 6.

    Ich hoffe, das hilft euch, mir zu helfen :D

    Vollzitat entfernt. ~Thunderbolt

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Thunderbolt“ ()

    Corai schrieb:

    Könntest Du das mal aufführen?
    Wahrscheinlich reden wir aneinander vorbei.
    Ich meinte, das in jedem dieser Button lediglich eine Zeile Code steht, nämlich der Aufruf der eigentlichen Bewegungs-Auswerte-Routine.
    Wenn Du diesen 10-Zeiler überall aufrufen willst, lagere diese 10 Zeilen in eine Prozedur aus und ruf von überall die Prozedur auf.
    Was Du an Parametern mitgeben musst, siehst Du, wenn der Compiler einzelne Variablen als unbekannt anmeckert.
    Ich kann Dir das nur so pauschal sagen, da ich nicht weiß, welche dieser Variablen in der Klasse, welche in der Prozedur deklariert wurden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Corai schrieb:

    meine Freundin macht eine Ausbildung zur IT- Kauffrau und ich lerne da mit. Die haben so etwas noch nicht gehabt
    vermutlich eine Ausbildung, wo man schwerpunktmässig nicht programmieren lernt - und dann kriegt man inkompetente Lehrer, und dann lernt man ühaupt nicht programmieren.
    Muss ja auch nicht.

    jdfs. wenn du programmieren lernen willst, vergiss die Ausbildung deiner Freundin und lad dir gutes Buch herunter: Entwickler-Ressourcen und Tools, Bücher und WebCasts

    Für dein TextAdventure musst du ein Datenmodell erstellen können - das setzt alles von meinen Vorrednern gesagte vorraus und ist noch mehr.
    Hier habich mal einen "Lehrplan" zusammengestellt für sowas:
    Datenverarbeitungs-Vorraussetzungen

    Der hat eine sinnvolle Reihenfolge, und vereinigt verschiedene Dimensionen, weil jedes allein ist immer unzureichend: Buch, Tutorials, Praxis, ...

    RodFromGermany schrieb:

    Corai schrieb:

    Könntest Du das mal aufführen?
    Wahrscheinlich reden wir aneinander vorbei.
    Ich meinte, das in jedem dieser Button lediglich eine Zeile Code steht, nämlich der Aufruf der eigentlichen Bewegungs-Auswerte-Routine.
    Wenn Du diesen 10-Zeiler überall aufrufen willst, lagere diese 10 Zeilen in eine Prozedur aus und ruf von überall die Prozedur auf.
    Was Du an Parametern mitgeben musst, siehst Du, wenn der Compiler einzelne Variablen als unbekannt anmeckert.
    Ich kann Dir das nur so pauschal sagen, da ich nicht weiß, welche dieser Variablen in der Klasse, welche in der Prozedur deklariert wurden.





    Ok ich glaub ich steh echt aufm Schlauch. Heißt das, ich kann eine Zeile aufrufen, indem ich eine Zeile schreibe? Oder kann ich 10 Zeilen gleichzeitig nun aufrufen mit nur einer Zeile? Ich habe jetzt mal den kompletten Text eingefügt:


    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class frmHauptfenster
    3. 'Listbox autoscrollen (mit Timer alle 0,5 sek abfragen):
    4. 'lstStory.SelectedIndex = lstStory.Items.Count - 1
    5. Dim vStufe As Double = 1
    6. Dim vHeiltrankAnzahl As Double = 3
    7. Dim vLebenMax As Int32 = 100
    8. Dim vLebenaktuell As Int32 = 100
    9. Dim vXPaktuell As Int32 = 0
    10. Dim vXPMax As Int32 = 100
    11. Dim vXPZuwachs As Int32
    12. Dim vStärke As Double = 10
    13. Dim vGebiet As Int32
    14. Dim vGegner As Int32
    15. Dim vGegnerstärke As Int32
    16. Dim vZufallswürfel As New Random
    17. 'Gegnertexte:
    18. Dim vGegnername As String
    19. Dim vGegnerHP As Double
    20. Dim vRattetext As String = "Eine riesige Ratte greift dich an"
    21. Dim vFledermaustext As String = "Mehrere Fledermäuse attackieren dich."
    22. Dim vGeisttext As String = "Ein Geist erscheint. Du erstarrst vor Angst!"
    23. Dim vWolftext As String = "Ein Wolf springt auf dich zu"
    24. Dim vLuchstext As String = "Ein Luchs greift dich an."
    25. Dim vBärtext As String = "Ein Bär greift dich an."
    26. Dim vSchlange As String = "Ein Schlange greift dich an."
    27. Dim vAdlertext As String = "Ein Adler greift dich an."
    28. Dim vGreiftext As String = "Ein Greif greift dich an."
    29. Dim vDrachetext As String = "Ein Drache greift dich an."
    30. Dim vFuchstext As String = "Ein Fuchs greift dich an."
    31. Dim vHirschtext As String = "Ein Hirsch greift dich an."
    32. Dim vKampffisch As String = "Ein Kampffisch greift dich an."
    33. Dim vHydra As String = "Ein Hydra greift dich an."
    34. Private Sub frmHauptfenster_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    35. lstStory.Items.Add("Herzlich Willkommen zu meinem Dungeon-Spiel!")
    36. lstStory.Items.Add("")
    37. lstStory.Items.Add("Wie geht es dir?")
    38. btnHeiltrank.Text = "Benutze Heiltrank (" & vHeiltrankAnzahl & ")"
    39. End Sub
    40. Private Sub btnHeiltrank_Click(sender As Object, e As EventArgs) Handles btnHeiltrank.Click
    41. End Sub
    42. Private Sub lstStory_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lstStory.SelectedIndexChanged
    43. End Sub
    44. Private Sub btnMenü_Click(sender As Object, e As EventArgs) Handles btnMenü.Click
    45. frmOverlayMenü.Show()
    46. End Sub
    47. Private Sub btnNorden_Click(sender As Object, e As EventArgs) Handles btnNorden.Click
    48. vGebiet = vZufallswürfel.Next(1, 11)
    49. vGegner = vZufallswürfel.Next(1, 11)
    50. btnNorden.Enabled = False
    51. btnSüden.Enabled = False
    52. btnWesten.Enabled = False
    53. btnOsten.Enabled = False
    54. btnAngriff.Enabled = True
    55. Select Case vGebiet
    56. Case 1 To 3
    57. lstStory.Items.Add("Du siehst in eine Höhle")
    58. Select Case vGegner
    59. Case 1 To 3
    60. btnNorden.Enabled = True
    61. btnSüden.Enabled = True
    62. btnWesten.Enabled = True
    63. btnOsten.Enabled = True
    64. btnAngriff.Enabled = False
    65. Case 4 To 6
    66. lstStory.Items.Add(vRattetext)
    67. vGegnername = "Ratte"
    68. vGegnerHP = 10
    69. vGegnerstärke = vZufallswürfel.Next(1, 5)
    70. vXPZuwachs = 5
    71. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    72. lstStory.Items.Add("")
    73. vLebenaktuell -= vGegnerstärke
    74. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    75. pbLeben.Value -= vGegnerstärke
    76. Case 7 To 8
    77. lstStory.Items.Add(vFledermaustext)
    78. vGegnername = "Fledermaus"
    79. vGegnerHP = 15
    80. vXPZuwachs = 15
    81. vGegnerstärke = vZufallswürfel.Next(1, 5)
    82. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    83. lstStory.Items.Add("")
    84. vLebenaktuell -= vGegnerstärke
    85. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    86. pbLeben.Value -= vGegnerstärke
    87. Case 9 To 10
    88. lstStory.Items.Add(vGeisttext)
    89. vGegnername = "Geist"
    90. vGegnerHP = 20
    91. vXPZuwachs = 15
    92. vGegnerstärke = vZufallswürfel.Next(1, 5)
    93. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    94. lstStory.Items.Add("")
    95. vLebenaktuell -= vGegnerstärke
    96. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    97. pbLeben.Value -= vGegnerstärke
    98. End Select
    99. Case 4, 5
    100. lstStory.Items.Add("Du kommst in einen Wald")
    101. Select Case vGegner
    102. Case 1 To 3
    103. btnNorden.Enabled = True
    104. btnSüden.Enabled = True
    105. btnWesten.Enabled = True
    106. btnOsten.Enabled = True
    107. btnAngriff.Enabled = False
    108. Case 4 To 5
    109. lstStory.Items.Add(vFledermaustext)
    110. vGegnername = "Fledermaus"
    111. vGegnerHP = 15
    112. vXPZuwachs = 15
    113. vGegnerstärke = vZufallswürfel.Next(1, 5)
    114. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    115. lstStory.Items.Add("")
    116. vLebenaktuell -= vGegnerstärke
    117. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    118. pbLeben.Value -= vGegnerstärke
    119. Case 6 To 7
    120. lstStory.Items.Add(vWolftext)
    121. vGegnername = "Wolf"
    122. vGegnerHP = 20
    123. vXPZuwachs = 20
    124. vGegnerstärke = vZufallswürfel.Next(1, 5)
    125. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    126. lstStory.Items.Add("")
    127. vLebenaktuell -= vGegnerstärke
    128. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    129. pbLeben.Value -= vGegnerstärke
    130. Case 8 To 9
    131. lstStory.Items.Add(vLuchstext)
    132. vGegnername = "Luchs"
    133. vGegnerHP = 15
    134. vXPZuwachs = 15
    135. vGegnerstärke = vZufallswürfel.Next(1, 5)
    136. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    137. lstStory.Items.Add("")
    138. vLebenaktuell -= vGegnerstärke
    139. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    140. pbLeben.Value -= vGegnerstärke
    141. Case 10
    142. lstStory.Items.Add(vBärtext)
    143. vGegnername = "Bär"
    144. vGegnerHP = 40
    145. vXPZuwachs = 40
    146. vGegnerstärke = vZufallswürfel.Next(1, 5)
    147. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    148. lstStory.Items.Add("")
    149. vLebenaktuell -= vGegnerstärke
    150. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    151. pbLeben.Value -= vGegnerstärke
    152. End Select
    153. Case 6
    154. lstStory.Items.Add("Du kommst auf eine Lichtung")
    155. Select Case vGegner
    156. Case 1 To 3
    157. btnNorden.Enabled = True
    158. btnSüden.Enabled = True
    159. btnWesten.Enabled = True
    160. btnOsten.Enabled = True
    161. btnAngriff.Enabled = False
    162. Case 4 To 6
    163. lstStory.Items.Add(vSchlange)
    164. vGegnername = "Schlange"
    165. vGegnerHP = 15
    166. vXPZuwachs = 15
    167. vGegnerstärke = vZufallswürfel.Next(1, 5)
    168. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    169. lstStory.Items.Add("")
    170. vLebenaktuell -= vGegnerstärke
    171. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    172. pbLeben.Value -= vGegnerstärke
    173. Case 7 To 8
    174. lstStory.Items.Add(vAdlertext)
    175. vGegnername = "Adler"
    176. vGegnerHP = 15
    177. vXPZuwachs = 15
    178. vGegnerstärke = vZufallswürfel.Next(1, 5)
    179. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    180. lstStory.Items.Add("")
    181. vLebenaktuell -= vGegnerstärke
    182. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    183. pbLeben.Value -= vGegnerstärke
    184. Case 9
    185. lstStory.Items.Add(vGreiftext)
    186. vGegnername = "Greif"
    187. vGegnerHP = 20
    188. vXPZuwachs = 20
    189. vGegnerstärke = vZufallswürfel.Next(1, 5)
    190. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    191. lstStory.Items.Add("")
    192. vLebenaktuell -= vGegnerstärke
    193. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    194. pbLeben.Value -= vGegnerstärke
    195. Case 10
    196. lstStory.Items.Add(vDrachetext)
    197. vGegnername = "Drache"
    198. vGegnerHP = 80
    199. vXPZuwachs = 80
    200. vGegnerstärke = vZufallswürfel.Next(1, 5)
    201. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    202. lstStory.Items.Add("")
    203. vLebenaktuell -= vGegnerstärke
    204. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    205. pbLeben.Value -= vGegnerstärke
    206. End Select
    207. Case 7 To 10
    208. lstStory.Items.Add("Du gehst auf einen See zu")
    209. Select Case vGegner
    210. Case 1 To 3
    211. btnNorden.Enabled = True
    212. btnSüden.Enabled = True
    213. btnWesten.Enabled = True
    214. btnOsten.Enabled = True
    215. btnAngriff.Enabled = False
    216. Case 4 To 5
    217. lstStory.Items.Add(vFuchstext)
    218. vGegnername = "Fuchs"
    219. vGegnerHP = 10
    220. vXPZuwachs = 10
    221. vGegnerstärke = vZufallswürfel.Next(1, 5)
    222. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    223. lstStory.Items.Add("")
    224. vLebenaktuell -= vGegnerstärke
    225. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    226. pbLeben.Value -= vGegnerstärke
    227. Case 6 To 7
    228. lstStory.Items.Add(vHirschtext)
    229. vGegnername = "Hirsch"
    230. vGegnerHP = 20
    231. vXPZuwachs = 20
    232. vGegnerstärke = vZufallswürfel.Next(1, 5)
    233. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    234. lstStory.Items.Add("")
    235. vLebenaktuell -= vGegnerstärke
    236. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    237. pbLeben.Value -= vGegnerstärke
    238. Case 8 To 9
    239. lstStory.Items.Add(vKampffisch)
    240. vGegnername = "Kampffisch"
    241. vGegnerHP = 10
    242. vXPZuwachs = 10
    243. vGegnerstärke = vZufallswürfel.Next(1, 5)
    244. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    245. lstStory.Items.Add("")
    246. vLebenaktuell -= vGegnerstärke
    247. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    248. pbLeben.Value -= vGegnerstärke
    249. Case 10
    250. lstStory.Items.Add(vHydra)
    251. vGegnername = "Hydra"
    252. vGegnerHP = 35
    253. vXPZuwachs = 35
    254. vGegnerstärke = vZufallswürfel.Next(1, 5)
    255. lstStory.Items.Add("Du erleidest" & vGegnerstärke & " Schaden")
    256. lstStory.Items.Add("")
    257. vLebenaktuell -= vGegnerstärke
    258. lblLebenszahl.Text = vLebenaktuell.ToString & " / " & vLebenMax.ToString
    259. pbLeben.Value -= vGegnerstärke
    260. End Select
    261. End Select
    262. End Sub
    263. Private Sub btnSüden_Click(sender As Object, e As EventArgs) Handles btnSüden.Click
    264. End Sub
    265. Private Sub btnWesten_Click(sender As Object, e As EventArgs) Handles btnWesten.Click
    266. End Sub
    267. Private Sub btnOsten_Click(sender As Object, e As EventArgs) Handles btnOsten.Click
    268. End Sub
    269. Private Sub btnAngriff_Click(sender As Object, e As EventArgs) Handles btnAngriff.Click
    270. lstStory.Items.Add("Du triffst" & vGegnername & " mit " & vStärke)
    271. vGegnerHP -= vStärke
    272. If vGegnerHP < 1 Then
    273. lstStory.Items.Add("Du hast " & vGegnername & " besiegt. Du erhälst " & vXPZuwachs & " Erfahrungspunkte.")
    274. vXPaktuell += vXPZuwachs
    275. If vXPaktuell >= vXPMax Then
    276. vStufe += 1
    277. lblStufe.Text = "Stufe: " & vStufe
    278. vXPZuwachs = vXPaktuell - vXPMax
    279. vXPaktuell = vXPZuwachs
    280. lstStory.Items.Add("Gratulation! Du hast Stufe" & vStufe & " erreicht.")
    281. pbXP.Value = vXPZuwachs
    282. Else
    283. pbXP.Value += vXPZuwachs
    284. End If
    285. lblErfahrung.Text = "Erfahrung: " & vXPaktuell & " / " & vXPMax
    286. btnNorden.Enabled = True
    287. btnSüden.Enabled = True
    288. btnWesten.Enabled = True
    289. btnOsten.Enabled = True
    290. btnAngriff.Enabled = False
    291. End If
    292. End Sub
    293. End Class




    Das Bild von der Oberfläche findest Du hier:
    picload.org/view/ddrooacw/adventure.jpg.html


    Also ich hoffe, ich kann es irgendwie mit nem simplen befehl abfragen.






    @ErfinderDesRades

    Es ist halt wie der Name sagt "IT-Kauffrau", sprich später mal Admin. Es ist halt kein richtiger Anwendungsentwickler-Beruf :D

    Sie und ich sind eh schon mit dem programmieren deutlich weiter als die Schulkollegen XD.
    @Corai
    1. Lass das vollständige Zitieren.
    2. pack Deinen Code in einen
      spoiler
      spoiler

    3. nutze die Dateianhang-Funktionalität des Forums: Erweiterte Antwort => Dateianhänge => Hochladen.
      Bei werbeverseuchten Hostern höre ich sofort auf, den Post weiter zu lesen.
    Editiere Deinen Post bitte entsprechend.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    ErfinderDesRades schrieb:

    vermutlich eine Ausbildung, wo man schwerpunktmässig nicht programmieren lernt
    Das lässt sich nicht pauschalisieren.
    Ich musste mich auch eines besseren belehren lassen.

    Früher war eher Excel-VBA angesagt.
    Inzwischen lernen unsere IT-Kaufleute sowohl in der Schule als auch innerbetrieblich neben kaufmännischem Wissen und DV-Administration auch "echtes" Programmieren.
    Und das in guter Qualität.
    Ich war baff erstaunt, dass inzwischen mit C# als Grundlagensprache angefangen wird.
    Und zwar objektorientiert.
    Dadurch kann man sie hervorragend in Projektarbeit einbinden.

    Es sind anscheinend nicht alle Schulen und Lehrer veraltet.
    Entweder wurden die Lehrpläne inzwischen grundlegend aktualisiert oder die hiesige Berufsschule geht mit einem guten Beispiel voran.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    ich meinte das auch nicht pauschal.
    Zwar selten, aber ist wohl möglich - einmal binnich auch mit einem Wirtschafts-Informatik-Studiengang in Kontakt gekommen, der schien praxisrelevante Programmier-Seminare zu haben. Aber war auch'n Sondermodell - die Studenten hatten 50% Betrieb und 50% Uni.

    @Corai: wie ich bereits gesagt habe: "viel lernen du musst, junger padavan".
    Was du lernen musst, habich auch schon gesagt, aber leider vergessen zu sagen, was dein AdventureSpiel braucht: nämlich ein Datenmodell.
    Also du musst einige Klassen basteln, und miteinander in Verbindung bringen, die deine Spielwelt abbilden.
    bisher wird die Welt scheints von einer Listbox, ein paar Textboxen, Strings und Integers abgebildet - das ist hoffnungslos unzureichend.

    zunächst mal musst du - mit uns zusammen - das Spiel planen. D.h. die Objekte, Personen, Umgebungen und Regeln so definieren, dass man sich dazu passende Klassen ausdenken kann.
    Bislang fand ich aus deinen Erläuterungen folgende abbildebare SpielElemente:
    Richtung (in die man gehen kann) - hier würde man sicher ein Enum-Objekt hernehmen
    Gegner - das muss wohl eine Klasse werden
    Spieler - auch eine Klasse

    irgendwelche Punkte scheinen da herum-zufahren, also das Punkte-System müsstest du mal erläutern.
    Und natürlich was ich falsch verstanden habe korrigieren, und alles fehlende hinzufügen.

    Was du ausserdem brauchst ist eine Möglichkeit, Spielwelten zu speichern und zu laden, auch in "eingefrorenen" Zwischenzuständen.
    Allein diese komplexe Aufgabe legt ein typisiertes Dataset nahe - das ist aber eine Technologie, die bereits sehr viele Grundlagen vorraussetzt.
    Links dazu hab ich dir ja gegeben - hast du in die 4-View-Videos mal reingeschaut?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()