Hello,
angeregt durch diesen Thread habe ich kurz ein Zahlenratespiel zusammengebastelt.
Vorgegeben ist eine Zahl zwischen 1 und 100, und ihr könnt so oft tippen, bis die Zahl erraten wurde.
Wenn jemand noch nicht so sattelfest in VB ist, kann er/sie hier vielleicht etwas abschauen. (Und die Profis brauchen schließlich auch was zum Lachen )
Spoiler anzeigen
LG, der_Kurt
angeregt durch diesen Thread habe ich kurz ein Zahlenratespiel zusammengebastelt.
Vorgegeben ist eine Zahl zwischen 1 und 100, und ihr könnt so oft tippen, bis die Zahl erraten wurde.
Wenn jemand noch nicht so sattelfest in VB ist, kann er/sie hier vielleicht etwas abschauen. (Und die Profis brauchen schließlich auch was zum Lachen )
VB.NET-Quellcode
- Module Module1
- Dim zeile As Integer = 1
- Dim spalte As Integer = 1
- Dim bisherigeVersuche As List(Of Integer)
- Sub Main()
- 'Minimum und Maximum festlegen
- Dim minimum As Integer = 1
- Dim maximum As Integer = 100
- 'Das Zufallsobjekt und die Zufallszahl definieren
- Dim robj As New Random
- Dim zufallszahl As Integer
- 'Hilfsvariablen
- Dim count As Integer
- Dim Eingabe As String
- Dim zahl As Integer
- bisherigeVersuche = New List(Of Integer)
- 'Titelscreen "zeichnen"...
- Console.Clear()
- Console.WriteLine("*******************************************************************************")
- Console.WriteLine(" Zahlenraten")
- Console.WriteLine("*******************************************************************************")
- Console.WriteLine()
- Console.WriteLine()
- Console.WriteLine()
- Console.ForegroundColor = ConsoleColor.White
- Console.WriteLine("Ich denke an eine Zahl zwischen {0} und {1}", minimum, maximum)
- Console.WriteLine("Kannst du erraten, welche? ['e' für Ende]")
- Console.ForegroundColor = ConsoleColor.Gray
- Ausgabe("(zwischen zwei Mahlzeiten geschrieben von ...der_Kurt)", enInput.CopyRight)
- zufallszahl = robj.Next(minimum, maximum)
- 'Eine Schleife für das Spiel
- Do
- 'Zähler erhöhen
- count += 1
- 'Das Copyright kann nach ein paar Nummern ruhig verschwinden...
- If count > 5 Then Ausgabe("", enInput.CopyRight)
- 'Ausgabe der bisher gezogenen Nummern
- Ausgabe(getAllNumbers, enInput.Outputallnumbers)
- 'Wievielter Versuch... ?
- Ausgabe("Versuch Nummer " & count.ToString, enInput.versuch)
- 'Eingabeprompt anzeigen
- Ausgabe("===>", enInput.Input)
- Eingabe = Console.ReadLine()
- If IsNumeric(Eingabe) Then
- 'ist die Eingabe eine Zahl?
- zahl = CInt(Eingabe)
- Select Case zahl
- Case zufallszahl
- 'TREFFER! die Zahl wurde getroffen
- '====================
- 'die bisherigen Versuche werden gelöscht
- bisherigeVersuche.Clear()
- 'Zähler zurückstellen
- count = 0
- 'paarmal Senf dazugeben...;)
- Ausgabe("VOLLTREFFER! Die Zahl " & zahl.ToString & " war gesucht", enInput.meldung)
- warteauftaste()
- Ausgabe("", enInput.outputanswer)
- Ausgabe("", enInput.WaitForKey)
- 'neue Zufallszahl ermitteln
- zufallszahl = robj.Next(minimum, maximum)
- Case Is > zufallszahl
- Ausgabe("Ich suche eine kleinere Zahl", enInput.outputanswer_tohigh)
- bisherigeVersuche.Add(zahl)
- Case Is < zufallszahl
- Ausgabe("Ich suche eine größere Zahl", enInput.outputanswer_tolow)
- bisherigeVersuche.Add(zahl)
- End Select
- Else
- 'ist die Eingabe was anderes als 'ne Zahl?
- Ausgabe("Versuchs mal mit 'ner Zahl...", enInput.meldung)
- End If
- Loop Until Eingabe = "e" Or Eingabe = ""
- Ausgabe("", enInput.meldung)
- Ausgabe("wir sehen uns wieder...", enInput.WaitForKey)
- Console.ReadKey()
- End Sub
- ''' <summary>
- ''' stellt die vorher gespeicherte Cursorposition wieder her
- ''' </summary>
- ''' <remarks></remarks>
- Sub cursorposload()
- Console.CursorTop = zeile
- Console.CursorLeft = spalte
- End Sub
- ''' <summary>
- ''' Speichert die aktuelle Cursorposition
- ''' </summary>
- ''' <remarks></remarks>
- Sub cursorpossave()
- zeile = Console.CursorTop
- spalte = Console.CursorLeft
- End Sub
- Sub Ausgabe(ByVal meaning As String, ByVal nxInput As enInput)
- 'Standardfarben wiederherstellen
- Console.BackgroundColor = ConsoleColor.Black
- Console.ForegroundColor = ConsoleColor.Gray
- Select Case nxInput
- Case enInput.CopyRight
- Console.ForegroundColor = ConsoleColor.Yellow
- Console.CursorLeft = 1
- Console.CursorTop = 4
- Case enInput.Input
- Console.CursorLeft = 4
- Console.CursorTop = 9
- Case enInput.Outputallnumbers
- Console.CursorLeft = 2
- Console.CursorTop = 21
- Case enInput.outputanswer, _
- enInput.meldung, _
- enInput.outputanswer_tohigh, _
- enInput.outputanswer_tolow
- Select Case nxInput
- Case enInput.meldung
- Console.ForegroundColor = ConsoleColor.Red
- Case enInput.outputanswer_tohigh
- Console.ForegroundColor = ConsoleColor.Magenta
- Case enInput.outputanswer_tolow
- Console.ForegroundColor = ConsoleColor.DarkRed
- End Select
- Console.CursorLeft = 1
- Console.CursorTop = 13
- Case enInput.WaitForKey
- Console.CursorLeft = 1
- Console.CursorTop = 23
- Console.ForegroundColor = ConsoleColor.DarkYellow
- Case enInput.versuch
- Console.CursorLeft = 2
- Console.CursorTop = 19
- End Select
- 'Cursor wird gespeichert,
- 'Rest der Zeile wird gelöscht,
- 'der Cursor wieder zurückgestellt...
- cursorpossave()
- Console.Write(Space(60 - Console.CursorLeft))
- cursorposload()
- '...und dann die Meldung geschrieben
- Console.Write(meaning)
- Console.ForegroundColor = ConsoleColor.Gray
- End Sub
- ''' <summary>
- ''' Gibt alle bisher gezogenen Nummern getrennt durch Komma zurück
- ''' </summary>
- ''' <returns></returns>
- ''' <remarks>...ausser es gibt keine</remarks>
- Function getAllNumbers() As String
- If bisherigeVersuche.Count = 0 Then Return "<bisher noch keine Zahlen>"
- Dim gAll As String = ""
- For Each element In bisherigeVersuche
- gAll &= element.ToString & ", "
- Next
- 'das letzte ", " wegschneiden...
- gAll = gAll.Substring(0, gAll.Length - 2)
- Return gAll
- End Function
- Sub warteauftaste()
- '...wer das nicht versteht...
- Ausgabe("Bitte eine Taste drücken...", enInput.WaitForKey)
- Console.ReadKey()
- End Sub
- ''' <summary>
- ''' Verschiedene Arten der Ausgabe
- ''' </summary>
- ''' <remarks></remarks>
- Public Enum enInput
- undefined
- CopyRight
- WaitForKey
- Input
- Outputallnumbers
- outputanswer
- outputanswer_tohigh
- outputanswer_tolow
- versuch
- meldung
- End Enum
- End Module
LG, der_Kurt
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „der_Kurt“ ()