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();
}
}
}
}
