C# :: Aufgabe #309
2 Lösungen

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
Lösungen:
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."); } } } }

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApp4 { public partial class Form1 : Form { int Wert = 0; public Form1() { InitializeComponent(); button1.Hide(); numericUpDown2.Hide(); label2.Hide(); label3.Hide(); label4.Hide(); } private void numericUpDown1_ValueChanged(object sender, EventArgs e) { } private void Fertig_Click(object sender, EventArgs e) { Wert = Convert.ToInt32(numericUpDown1.Value); Fertig.Hide(); button1.Show(); label2.Show(); numericUpDown1.Hide(); numericUpDown2.Show(); } private void label1_Click(object sender, EventArgs e) { } private void numericUpDown2_ValueChanged(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { if (numericUpDown2.Value < Wert) { label3.Text = "Wärmer!"; label3.Show(); } else if (numericUpDown2.Value > Wert) { label3.Text = "Kälter!"; label3.Show(); } else { label3.Hide(); label4.Show(); } } } }