Batch Spiel will nicht richtig.

  • Sonstige

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Link.

    Batch Spiel will nicht richtig.

    Hallo VB-Paradise Community,

    ich habe ein Spiel in Batch entwickelt nur leider will das Level System nicht funktionieren.
    Man bekommt pro gewonnenem Kampf 10 Erfahrungspunkte (EXP). Das Problem ist, dass wenn ich 2 Kämpfe gewinne, direkt auf Level 2 aufsteige, und ab dann reicht ein Kampf um ein Level aufzusteigen. Habe mir den Code schon öfters durchgelesen finde den Fehler jedoch nicht für mich ist der Code logisch.
    Ich hoffe ihr könnt mir helfen, hier ist der Code:

    C-Quellcode

    1. @ECHO off
    2. ::@MODE con cols= lines=
    3. TITLE Dwarf Tower
    4. :Setting
    5. SET Selecter11=/
    6. SET Selecter12=\
    7. SET Selecter21=
    8. SET Selecter22=
    9. :MainMenu
    10. CLS
    11. ECHO.
    12. ECHO ##############################################################################
    13. ECHO # #
    14. ECHO # WILLKOMMEN BEI "DWARF TOWER"! #
    15. ECHO # #
    16. ECHO ##############################################################################
    17. ECHO # #
    18. ECHO # #
    19. ECHO # #
    20. ECHO # #
    21. ECHO # #
    22. ECHO # %Selecter11% Den "Dwarf Tower" betreten und ein neues Spiel starten. %Selecter12% #
    23. ECHO # #
    24. ECHO # #
    25. ECHO # %Selecter21% Vor dem "Dwarf Tower" fliehen und das Spiel beenden. %Selecter22% #
    26. ECHO # #
    27. ECHO # #
    28. ECHO # #
    29. ECHO # #
    30. ECHO # #
    31. ECHO # Info: W = hoch, S = runter, V = auswaehlen #
    32. ECHO # #
    33. ECHO ##############################################################################
    34. CHOICE /N /C WSV
    35. IF "%ERRORLEVEL%" EQU "255" GOTO MainMenu
    36. IF "%ERRORLEVEL%" EQU "3" GOTO Check
    37. IF "%ERRORLEVEL%" EQU "2" SET Selecter11= &&SET Selecter12= &&SET Selecter21=/&&SET Selecter22=\&&GOTO MainMenu
    38. IF "%ERRORLEVEL%" EQU "1" SET Selecter11=/&&SET Selecter12=\&&SET Selecter21= &&SET Selecter22= &&GOTO MainMenu
    39. IF "%ERRORLEVEL%" EQU "0" GOTO MainMenu
    40. :Check
    41. IF "%Selecter11%" == "/" GOTO SetupGame
    42. IF "%Selecter21%" == "/" GOTO Exit
    43. :SetupGame
    44. SET /A DwarfLevel=1
    45. SET /A DwarfAttack=10
    46. SET /A DwarfEscapeRate=1
    47. SET /A DwarfEXP=0
    48. ::LastBattle Status müssen insgesamt 57 Zeichen sein!
    49. SET LastBattle=Noch nicht gekaempft!
    50. GOTO MainScreen
    51. :MainScreen
    52. CLS
    53. ECHO.
    54. ECHO ##############################################################################
    55. ECHO # #
    56. ECHO # Mein "Dwarf": #
    57. ECHO # - Level %DwarfLevel% #
    58. ECHO # - Angriff: %DwarfAttack% #
    59. ECHO # - Ausweich Bonus: %DwarfEscapeRate% #
    60. ECHO # #
    61. ECHO # #
    62. ECHO # #
    63. ECHO # #
    64. ECHO # #
    65. ECHO # #
    66. ECHO # #
    67. ECHO # #
    68. ECHO # #
    69. ECHO # #
    70. ECHO # (K)aempfen: (X = Angriff des bevorstehenden Monsters) #
    71. ECHO # "X - %DwarfEscapeRate% (Ausweich Bonus)" ergibt: Gegner Angriff #
    72. ECHO # #
    73. ECHO # Letzter Kampf: %LastBattle% #
    74. ECHO # #
    75. ECHO ##############################################################################
    76. CHOICE /N /C K
    77. IF "%ERRORLEVEL%" EQU "255" GOTO MainScreen
    78. IF "%ERRORLEVEL%" EQU "1" GOTO Battle
    79. IF "%ERRORLEVEL%" EQU "0" GOTO MainScreen
    80. GOTO MainScreen
    81. :Battle
    82. IF "%DwarfLevel%" == "1" GOTO Battle1
    83. IF "%DwarfLevel%" == "2" GOTO Battle2
    84. IF "%DwarfLevel%" == "3" GOTO Battle3
    85. IF "%DwarfLevel%" == "4" GOTO Battle4
    86. IF "%DwarfLevel%" == "5" GOTO Battle5
    87. IF "%DwarfLevel%" == "6" GOTO Battle6
    88. IF "%DwarfLevel%" == "7" GOTO Battle7
    89. IF "%DwarfLevel%" == "8" GOTO Battle8
    90. IF "%DwarfLevel%" == "9" GOTO Battle9
    91. GOTO Exit
    92. :Battle1
    93. SET /A GegnerAngriff=%random% % +1
    94. SET /A GegnerAngriff=%GegnerAngriff%-%DwarfEscapeRate%
    95. IF "%DwarfAttack%" GTR "%GegnerAngriff%" SET LastBattle=Du hast den letzten Kampf gewonnen! &&SET /A DwarfEXP=%DwarfEXP%+10&&GOTO CheckLevelUp
    96. IF "%DwarfAttack%" EQU "%GegnerAngriff%" SET LastBattle=Der letzte Kampf war ein unentschieden! &&GOTO MainScreen
    97. IF "%DwarfAttack%" LSS "%GegnerAngriff%" SET LastBattle=Du hast den letzten Kampf verloren! &&GOTO MainScreen
    98. GOTO Exit
    99. :Battle2
    100. SET /A GegnerAngriff=%random% % +11
    101. SET /A GegnerAngriff=%GegnerAngriff%-%DwarfEscapeRate%
    102. IF "%DwarfAttack%" GTR "%GegnerAngriff%" SET LastBattle=Du hast den letzten Kampf gewonnen! &&SET /A DwarfEXP=%DwarfEXP%+10&&GOTO CheckLevelUp
    103. IF "%DwarfAttack%" EQU "%GegnerAngriff%" SET LastBattle=Der letzte Kampf war ein unentschieden! &&GOTO MainScreen
    104. IF "%DwarfAttack%" LSS "%GegnerAngriff%" SET LastBattle=Du hast den letzten Kampf verloren! &&GOTO MainScreen
    105. GOTO Exit
    106. :Battle3
    107. SET /A GegnerAngriff=%random% % +21
    108. SET /A GegnerAngriff=%GegnerAngriff%-%DwarfEscapeRate%
    109. IF "%DwarfAttack%" GTR "%GegnerAngriff%" SET LastBattle=Du hast den letzten Kampf gewonnen! &&SET /A DwarfEXP=%DwarfEXP%+10&&GOTO CheckLevelUp
    110. IF "%DwarfAttack%" EQU "%GegnerAngriff%" SET LastBattle=Der letzte Kampf war ein unentschieden! &&GOTO MainScreen
    111. IF "%DwarfAttack%" LSS "%GegnerAngriff%" SET LastBattle=Du hast den letzten Kampf verloren! &&GOTO MainScreen
    112. GOTO Exit
    113. :Battle4
    114. SET /A GegnerAngriff=%random% % +31
    115. SET /A GegnerAngriff=%GegnerAngriff%-%DwarfEscapeRate%
    116. IF "%DwarfAttack%" GTR "%GegnerAngriff%" SET LastBattle=Du hast den letzten Kampf gewonnen! &&SET /A DwarfEXP=%DwarfEXP%+10&&GOTO CheckLevelUp
    117. IF "%DwarfAttack%" EQU "%GegnerAngriff%" SET LastBattle=Der letzte Kampf war ein unentschieden! &&GOTO MainScreen
    118. IF "%DwarfAttack%" LSS "%GegnerAngriff%" SET LastBattle=Du hast den letzten Kampf verloren! &&GOTO MainScreen
    119. GOTO Exit
    120. :Battle5
    121. SET /A GegnerAngriff=%random% % +41
    122. SET /A GegnerAngriff=%GegnerAngriff%-%DwarfEscapeRate%
    123. IF "%DwarfAttack%" GTR "%GegnerAngriff%" SET LastBattle=Du hast den letzten Kampf gewonnen! &&SET /A DwarfEXP=%DwarfEXP%+10&&GOTO CheckLevelUp
    124. IF "%DwarfAttack%" EQU "%GegnerAngriff%" SET LastBattle=Der letzte Kampf war ein unentschieden! &&GOTO MainScreen
    125. IF "%DwarfAttack%" LSS "%GegnerAngriff%" SET LastBattle=Du hast den letzten Kampf verloren! &&GOTO MainScreen
    126. GOTO Exit
    127. :Battle6
    128. SET /A GegnerAngriff=%random% % +51
    129. SET /A GegnerAngriff=%GegnerAngriff%-%DwarfEscapeRate%
    130. IF "%DwarfAttack%" GTR "%GegnerAngriff%" SET LastBattle=Du hast den letzten Kampf gewonnen! &&SET /A DwarfEXP=%DwarfEXP%+10&&GOTO CheckLevelUp
    131. IF "%DwarfAttack%" EQU "%GegnerAngriff%" SET LastBattle=Der letzte Kampf war ein unentschieden! &&GOTO MainScreen
    132. IF "%DwarfAttack%" LSS "%GegnerAngriff%" SET LastBattle=Du hast den letzten Kampf verloren! &&GOTO MainScreen
    133. GOTO Exit
    134. :Battle7
    135. SET /A GegnerAngriff=%random% % +61
    136. SET /A GegnerAngriff=%GegnerAngriff%-%DwarfEscapeRate%
    137. IF "%DwarfAttack%" GTR "%GegnerAngriff%" SET LastBattle=Du hast den letzten Kampf gewonnen! &&SET /A DwarfEXP=%DwarfEXP%+10&&GOTO CheckLevelUp
    138. IF "%DwarfAttack%" EQU "%GegnerAngriff%" SET LastBattle=Der letzte Kampf war ein unentschieden! &&GOTO MainScreen
    139. IF "%DwarfAttack%" LSS "%GegnerAngriff%" SET LastBattle=Du hast den letzten Kampf verloren! &&GOTO MainScreen
    140. GOTO Exit
    141. :Battle8
    142. SET /A GegnerAngriff=%random% % +71
    143. SET /A GegnerAngriff=%GegnerAngriff%-%DwarfEscapeRate%
    144. IF "%DwarfAttack%" GTR "%GegnerAngriff%" SET LastBattle=Du hast den letzten Kampf gewonnen! &&SET /A DwarfEXP=%DwarfEXP%+10&&GOTO CheckLevelUp
    145. IF "%DwarfAttack%" EQU "%GegnerAngriff%" SET LastBattle=Der letzte Kampf war ein unentschieden! &&GOTO MainScreen
    146. IF "%DwarfAttack%" LSS "%GegnerAngriff%" SET LastBattle=Du hast den letzten Kampf verloren! &&GOTO MainScreen
    147. GOTO Exit
    148. :Battle9
    149. SET /A GegnerAngriff=%random% % +81
    150. SET /A GegnerAngriff=%GegnerAngriff%-%DwarfEscapeRate%
    151. IF "%DwarfAttack%" GTR "%GegnerAngriff%" SET LastBattle=Du hast den letzten Kampf gewonnen! &&SET /A DwarfEXP=%DwarfEXP%+10&&GOTO CheckLevelUp
    152. IF "%DwarfAttack%" EQU "%GegnerAngriff%" SET LastBattle=Der letzte Kampf war ein unentschieden! &&GOTO MainScreen
    153. IF "%DwarfAttack%" LSS "%GegnerAngriff%" SET LastBattle=Du hast den letzten Kampf verloren! &&GOTO MainScreen
    154. GOTO Exit
    155. :CheckLevelUp
    156. IF "%DwarfEXP%" GTR "100" SET /A DwarfLevel=2&&SET /A DwarfAttack=20&&SET /A DwarfEscapeRate=2
    157. IF "%DwarfEXP%" GTR "200" SET /A DwarfLevel=3&&SET /A DwarfAttack=30&&SET /A DwarfEscapeRate=3
    158. IF "%DwarfEXP%" GTR "300" SET /A DwarfLevel=4&&SET /A DwarfAttack=40&&SET /A DwarfEscapeRate=4
    159. IF "%DwarfEXP%" GTR "400" SET /A DwarfLevel=5&&SET /A DwarfAttack=50&&SET /A DwarfEscapeRate=5
    160. IF "%DwarfEXP%" GTR "500" SET /A DwarfLevel=6&&SET /A DwarfAttack=60&&SET /A DwarfEscapeRate=6
    161. IF "%DwarfEXP%" GTR "600" SET /A DwarfLevel=7&&SET /A DwarfAttack=70&&SET /A DwarfEscapeRate=7
    162. IF "%DwarfEXP%" GTR "700" SET /A DwarfLevel=8&&SET /A DwarfAttack=80&&SET /A DwarfEscapeRate=8
    163. IF "%DwarfEXP%" GTR "800" SET /A DwarfLevel=9&&SET /A DwarfAttack=90&&SET /A DwarfEscapeRate=9
    164. GOTO MainScreen
    165. :Exit
    There are only 10 types of people in the world: Those who understand binary and those who don't.

    DragonSlayerMarc schrieb:

    Habe mir den Code schon öfters durchgelesen
    Probiere, daraus ein VB.NET-Programm zu machen.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!

    DragonSlayerMarc schrieb:

    Wieso
    Da kannst Du durch schrittweise Abarbeitung, Haltepunkte und Co Fehler in Deinem Programm selbst finden. Gugst Du hier.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!

    DragonSlayerMarc schrieb:

    Wieso VB.NET?


    Du kannst natürlich auch C# verwenden, je nach dem, was du bevorzugst. Batch ist veraltet und wurde auch schon durch PowerShell ersetzt.
    Batch ist so eine Nett-To-Know Sache, aber sollte auch nicht wirklich verwendet werden, in unserer heutigen Zeit mit OOP.
    "Nichts ist unendlich, bis auf die menschliche Dummheit" - Albert Einstein
    "Man sollte nicht alles vertrauen, was im Netz steht" - Abraham Lincoln
    kannst es ja als Konsolenprogramm realisieren, dann hats den selben flair, ist aber einfacher zu Programmieren ;)
    Post-AGB:
    §1 Mit dem Lesen dieses Posts stimmst du den AGB unverzüglich zu
    §2 Ein Widerruf muss innerhalb von 3 Sekunden nach Lesen des Hauptbestandteil des ersten jemals gelesenen Posts erfolgen
    Abs.1 Die Signatur zählt nicht zum Hauptbestandteil des Posts
    §3 Ein erfolgreicher Widerruf zwingt zu einem Besuch bei einem Hypnotiseur oder Neurochirurg, sodass der gelesene Text aus den Erinnerungen entfernt werden kann
    Abs.1 Die Kosten und Risiken sind jeweils selbst zu tragen
    Hi,

    ich finde du solltest deinen Spiel-Ansatz nochmal überdenken - bevor du weiter daran programmierst. Denn so wie es jetzt ist, ist es viel zu statisch und unflexibel, und dadurch auch sehr beschränkt. Überlasse den Spielverlauf weitgehend den Variablen und lege lediglich fest, dass Levelaufstiege oder EXP etc.. sinnvoll inkrementiert werden, über die gesamte Laufzeit hinweg. Zudem empfehle ich dir, in eine Textdatei den Spielstand einzutragen, sodass du im Programm am Anfang prüfst ob eine Spielstand-Datei existiert, und falls ja zusätzlich anbietest, den gespeicherten Spielstand zu laden.

    Ansonsten wie die anderen hier schon sagten, über eine VB.NET Konsolenanwendung stehen dir einige Möglichkeiten zur Verfügung, das Spiel weitaus besser zu machen. Z.B. die Sache mit dem Spielstand ließe sich so um ein vielfaches angenehmer gestalten.

    Link :thumbup:


    www.marius-gerum.de
    PHP lernen | Programmierung | Sonstiger Krempel
    Zum Blog | PHP lernen | GitHub | Gists | List of awesome