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.
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); } } }
Kiitos!
Kannattaa opiskella, mitä funktiot tarkoittavat, niin alkaa helpottua ohjelmointikin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.