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
