Kirjautuminen

Haku

Tehtävät

Kilpailu

Algoritmikisa
Putka Open 2020 -kisan
4. kierros: 6.–8.11.

Keskustelu: Ohjelmointiongelmat: C#: Miten voi aloittaa ohjelman alusta?

Sivu 1 / 1

Siili00 [15.07.2020 16:34:27]

#

Yritän tehdä C-sharpilla yksinkertaista numeronarvauspeliä:

using System;
using System.Globalization;
using System.Linq.Expressions;

namespace Arvauspeli
{
    class Program
    {
        static void Main(string[] args)
        {
            Random random = new Random();
            Console.WriteLine("Taso 1 sisältää numerot 1-10, taso 2 numerot 1-20 ja taso 3 numerot 1-30");
            Console.Write("Valitse vaikeustaso 1-3: ");
            int vaikeus = int.Parse(Console.ReadLine());
            int luku;
            switch(vaikeus)
            {
                case 1:
                    luku = random.Next(1, 10);
                    break;
                case 2:
                    luku = random.Next(1, 20);
                    break;
                case 3:
                    luku = random.Next(1, 30);
                    break;
                default:
                    Console.WriteLine("Syötit väärän vaikeustason");
                    Console.WriteLine("Pelaat nyt helpolla");
                    goto case 1;
            }
            while(true)
            {
                Console.Write("Arvaus: ");
                int arvaus = int.Parse(Console.ReadLine());
                if (arvaus == luku)
                {
                    Console.WriteLine("Arvasit oikein!");
                    Console.WriteLine("Voitit!");
                    Console.Write("Haluatko aloittaa uudestaan? ");
                    String uudestaan = Console.ReadLine();
                    if(uudestaan == "kyllä")
                    {
                        Console.WriteLine("Aloitetaan uudestaan...")

                    }
                    else
                    {
                        break;
                    }
                }
                else if (arvaus < luku)
                {
                    Console.WriteLine("Luku on suurempi");
                }
                else
                {
                    Console.WriteLine("Luku on pienempi");
                }
            }
        }
    }
}

Miten voisin aloittaa ohjelman alusta, tai ainakin arpoa uudet numerot jos käyttäjä haluaa aloittaa uudestaan? Tuo "Aloitetaan uudestaan..." menee while:n loppuun ja kysyy käyttäjältä arvauksen samalla vaikeustasolla ja samalla numerolla.

Teuro [15.07.2020 17:11:36]

#

Yksi keino voisi olla käyttää do-while rakennetta, joka tarvitsee yhden lisämuuttujan seuraavaan tapaan.

using System;
using System.Globalization;
using System.Linq.Expressions;

namespace Arvauspeli {
    class Program {
        static void Main(string[] args) {
            Random random = new Random();
            int luku;
			bool jatketaan = true;

			do {
				Console.WriteLine("Taso 1 sisältää numerot 1-10, taso 2 numerot 1-20 ja taso 3 numerot 1-30");
				Console.Write("Valitse vaikeustaso 1-3: ");
				int vaikeus = int.Parse(Console.ReadLine());

				switch(vaikeus){
					case 1:
						luku = random.Next(1, 10);
						break;
					case 2:
						luku = random.Next(1, 20);
						break;
					case 3:
						luku = random.Next(1, 30);
						break;
					default:
						Console.WriteLine("Syötit väärän vaikeustason");
						Console.WriteLine("Pelaat nyt helpolla");
						goto case 1;
				}

				int arvaus = -1;

				while (arvaus != luku) {
					Console.Write("Arvaus: ");
					arvaus = int.Parse(Console.ReadLine());

					if (arvaus == luku) {
						Console.WriteLine("Arvasit oikein!");
						Console.WriteLine("Voitit!");
						Console.Write("Haluatko aloittaa uudestaan? ");
						String uudestaan = Console.ReadLine();

						if (uudestaan == "kyllä") {
							jatketaan = true;
							Console.WriteLine("Aloitetaan uudestaan...");

						} else {
							jatketaan = false;
							break;
						}
					}
					else if (arvaus < luku) {
						Console.WriteLine("Luku on suurempi");
					}
					else {
						Console.WriteLine("Luku on pienempi");
					}
				}
			} while(jatketaan);
        }
    }
}

Siili00 [15.07.2020 17:46:53]

#

Kiitos!

The Alchemist [16.07.2020 11:09:05]

#

Kannattaa opiskella, mitä funktiot tarkoittavat, niin alkaa helpottua ohjelmointikin.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta