C# :: Aufgabe #309 :: Lösung #1
2 Lösungen

#309
Game - Heiß oder Kalt
Anfänger - C#
von DavidDev024
- 20.04.2020 um 19:36 Uhr
Das Spiel läuft folgender Maßen ab:
- Spieler 1 denkt sich eine Zahl aus
- Spieler 2 versucht nun die Zahl zu erraten, indem er eine Zahl eingibt
- nun wird der vorherige Versuch (falls einer vorhanden) mit dem jetzigen verglichen und wärmer oder kälter ausgegeben (je nachdem ob man der geheimen Zahl von Spieler 1 näher kommt oder nicht)
-Erratet Spieler 2 die Zahl sollen die benötigten Versuche und die benötigte Zeit ausgegeben werden.
Have Fun
- Spieler 1 denkt sich eine Zahl aus
- Spieler 2 versucht nun die Zahl zu erraten, indem er eine Zahl eingibt
- nun wird der vorherige Versuch (falls einer vorhanden) mit dem jetzigen verglichen und wärmer oder kälter ausgegeben (je nachdem ob man der geheimen Zahl von Spieler 1 näher kommt oder nicht)
-Erratet Spieler 2 die Zahl sollen die benötigten Versuche und die benötigte Zeit ausgegeben werden.
Have Fun
#1

von JKooP (18090 Punkte)
- 28.04.2020 um 16:00 Uhr
NET Core 3.x
C#-Code

using System; using System.Diagnostics; using static System.Math; using static System.Console; namespace CS_Aufgabe_309_Game { class Program { static void Main(string[] args) { new Game(); } } class Game { private readonly int _maxAttempts; private readonly int _minNumber; private readonly int _maxNumber; private readonly int _numRnd; private readonly Stopwatch _sw; private int _counter = 1; public Game(int maxAttempts = 20, int minNumber = 1, int maxNumber = 100) { _maxAttempts = maxAttempts; _minNumber = minNumber; _maxNumber = maxNumber; _sw = new Stopwatch(); _numRnd = new Random().Next(_minNumber, _maxNumber); Compare(); Result(); } private void Compare() { bool finished = false; _sw.Start(); InputNumbers(out int numOld); if (_numRnd == numOld) finished = true; else WriteLine("Leider nicht."); while (_counter <= _maxAttempts && !finished) { InputNumbers(out int numNew); if (_numRnd == numNew) { finished = true; continue; } else if (numOld == numNew) { WriteLine("Das war die gleiche Zahl!"); _counter++; continue; } WriteLine(Abs(_numRnd - numNew) > Abs(_numRnd - numOld) ? "kälter" : "wärmer"); numOld = numNew; _counter++; } } private void InputNumbers(out int num) { Write($"Bitte eine Zahl zwischen { _minNumber } und { _maxNumber } eingeben: "); _ = int.TryParse(ReadLine(), out num); } private void Result() { _sw.Stop(); if (_counter <= _maxAttempts) { var time = (int)Ceiling(_sw.Elapsed.TotalSeconds); var points = 1000 / (time / 10) + 1000 / _counter; WriteLine($"\nDie gesuchte Zahl war { _numRnd }." + $"\nDu hast { _counter } Versuch(e) benötigt!" + $"\nZeit:\t{ time,4 }s\nPunkte:\t{ points,4 }"); } else { WriteLine($"\nSpiel beendet! Zu viele Versuche."); } } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1