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.