C# :: Aufgabe #309

2 Lösungen Lösungen öffentlich

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

Lösungen:

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

Quellcode ausblenden 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.");
            }
        }
    }
}
vote_ok
von DerSpletti (110 Punkte) - 30.05.2020 um 01:04 Uhr
Quellcode ausblenden C#-Code
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();
            }
        }
    }
}