Loop in Konsolenanwendung

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von TGenius.

    Loop in Konsolenanwendung

    Hallo,

    ich habe da eine Frage. Ich arbeite gerade an einem Projekt mit einer Konsolenanwendung. In dieser Konsolenanwendung funzt aber irgendwie das

    VB.NET-Quellcode

    1. Do
    2. ....
    3. Loop

    nicht :( :thumbdown:

    Ich habs auch schon mit ner Const versucht und dann mit While. Funzt aber auch nicht :(

    Habt ihr ne Idee wie ich das hinkriegen kann :?:

    Danke im Vorraus für eure Antworten

    Mfg TGenius
    Was funktioniert denn da nicht?
    Was hast du mit einer Const versucht? Eine Schleife oO

    Generell brauchst du bei Schleifen Abbruchbedingungen...
    zB:

    VB.NET-Quellcode

    1. Do While true
    2. Loop
    3. 'oder
    4. Do
    5. Loop Until 1=2


    Du hast also die Wahlt: kopf/fussgesteuert und Until(Bis)/While(Solange)...
    Das funktioniert in Konsolenandwendungen genauso wie in Formsanwendungen...
    Das ist meine Signatur und sie wird wunderbar sein!
    Spoiler anzeigen


    VB.NET-Quellcode

    1. Module Module1
    2. Public holz As Integer
    3. Public stein As Integer
    4. Public level As Integer = 10
    5. Public nahrung As Integer = 30
    6. Public gold As Integer = 10
    7. Public spitz, axt As Boolean
    8. Public Const forloop As Boolean = True
    9. Sub Main()
    10. Console.Title = "Textadventure"
    11. Do While forloop = True
    12. Console.WriteLine()
    13. Console.WriteLine("Was willst du nun tun?")
    14. Select Case Console.ReadLine
    15. Case "Shop"
    16. Dim laden As New shop(level)
    17. laden.menu()
    18. Case "Arbeiten"
    19. Dim arb As New Arbeiten
    20. arb.arbeiten(level)
    21. Case "Abbauen"
    22. Dim res As New Ressourcen
    23. Console.WriteLine()
    24. Console.WriteLine("Was willst du abbauen?")
    25. Select Case Console.ReadLine
    26. Case "Holz"
    27. res.fällen(axt)
    28. Case "Stein"
    29. res.steineabb(spitz)
    30. End Select
    31. Case "Gold suchen"
    32. Dim gres As New Ressourcen
    33. gres.gold()
    34. End Select
    35. nahrung -= 5
    36. If nahrung < 10 Then
    37. Console.WriteLine()
    38. Console.ForegroundColor = ConsoleColor.Yellow
    39. Console.WriteLine("Achte auf deine Nahrung!")
    40. Console.ForegroundColor = ConsoleColor.Black
    41. End If
    42. If nahrung <= 0 Then
    43. Console.WriteLine()
    44. Console.ForegroundColor = ConsoleColor.Red
    45. Console.WriteLine("Du hast KEINE Nahrung mehr")
    46. Console.WriteLine("Du hast verloren!")
    47. Console.ReadLine()
    48. End
    49. End If
    50. Console.ReadLine()
    51. Loop
    52. End Sub
    53. End Module




    Eigentlich soll man wenn man eines dieser Sachen gemacht hat wieder was willst du machen da stehen. Stattdessen ist dort nur noch eine leere Konsole. Und ich kann irgendwelche tasten drücken :thumbdown: :thumbdown: :thumbdown:
    Du hast am Ende des Loops noch ein Console.ReadLine(). Bist du dir sicher, dass du nicht nur vergisst, Enter zu drücken?
    Ansonten probier mal schrittweises Debuggen.
    Loop scheint wieder zu funktionieren (kp wieso :| )

    Dafür kann ich jetzt an einigen Stellen nichts eintippen bzw dort wo Console.writeline steht , gibt er manchmal keinen text aus.

    (F*** :cursing: )

    Hat jemand ne Ahnung?

    please help me


    Mfg TGenius
    Zeile 58 => "End" : Warum?
    Zeile 50: "Console.ForegroundColor = ConsoleColor.Black " : Warum? Schwarz auf Schwarz?
    Zeile 61: "Console.ReadLine" : Wurde schon angesprochen

    Wo ist deine Abbruchbedingung?

    VB.NET-Quellcode

    1. Public Const forloop As Boolean = True
    2. Do While forloop = True

    Wird nie funktionieren, weil eine Konstante nur initialisiert werden kann und dannach nicht mehr verändert. (Du versuchst es gleichwohl auch nicht im Code, wie mir aufgefallen ist)

    Allgemeinwissen:

    VB.NET-Quellcode

    1. if blubb = True then
    2. ' do something
    3. end if
    4. if blubb
    5. ' do something
    6. end if

    If prüft auf True, sprich if blubb = true prüft, ob blubb = wahr ist und ob diese aussage wahr ist...
    if blubb: ist blubb wahr?

    Also das selbe, nur im Compiler einige Schritte weniger und sauberer, auch zu lesen... und (unmerklich) schneller...
    Soweit ich weiß opitmiert der Compiler Zeug wie If Bool = True Then.
    Allerdings ergibt's keinen Sinn. Wenn man das Ganze mal schrittweise einsetzt:

    VB.NET-Quellcode

    1. Dim Variable As Boolean = True
    2. If Variable = True Then
    3. If True = True Then
    4. If True Then
    5. If Variable Then
    6. If True Then

    Gibt ja noch einige Schlaumeier, die das hier schreiben:

    VB.NET-Quellcode

    1. Dim Text As String = "Hallo!"
    2. If Text = "Hallo" = True Then
    Das End in Zeile 58 ist Spielende, vorher steht, dass man verloren hat.
    Schwarz auf Schwarz in Zeile 50 war sicher nur ein versehen, die Schriftfarbe wurde ja vorher geändert.
    Console.Readline in Zeile 61 soll eine Art Wait-Befehl sein.

    So sehe ich das jedenfalls
    Eine Pizza auf einer Pizza sind 2 Pizzen

    Eine Lasagne auf einer Lasagne ergibt 1 große Lasagne