Miten saan sitten kun joku on arvannut tuon oikean numeron niin näyttämään kaikki pelaajan arvaukset?
Lisäys: Eli siis näyttämään eri luvut mitä pelaaja oli arvannut ennen oikeaa vastausta
Lisäät kunkin arvauksen esim listalle ja sitten tulostat listan sisällön.
Grez kirjoitti:
Lisäät kunkin arvauksen esim listalle ja sitten tulostat listan sisällön.
miten tämä onnistuu?
Esimerkiksi näin:
List<int> arvatut = new List<int>();
arvatut.Add(arvaus);
foreach (int vaara in arvatut) { Console.WriteLine(vaara); }
Teuro kirjoitti:
Esimerkiksi näin:
List<int> arvatut = new List<int>();arvatut.Add(arvaus);foreach (int vaara in arvatut) { Console.WriteLine(vaara); }
miten tämä laitetaan tähän koodiriviin?
// esitellään muuttujat int answer; string answermessage; bool endLoop = false; int xcounter = 0; int correctanswer; //asetetaan vastaus Random rnd = new Random(); correctanswer = rnd.Next(1, 1000); //pyydetään käyttäjää syöttämään luku while (!endLoop) { xcounter++; Console.Write("anna numero 1-1000 väliltä: "); answer = int.Parse(Console.ReadLine()); // logiikka vastausviestiin if (answer == correctanswer) { answermessage = "arvasit oikein käytit " + xcounter + " arvausta!"; // tulostetaan vastaus Console.WriteLine(answermessage); endLoop = true; } else if (answer > correctanswer) { answermessage = "arvauksesi on liian suuri..."; //tulostetaan vastaus Console.WriteLine(answermessage); } else { answermessage = "arvauksesi on liian pieni..."; //tulostetaan vastaus Console.WriteLine(answermessage); }
Suo anteeksi en koodaa C# yleensä, joten voi olla vähän kökköä koodia. Osin arvasin tehtävän sisällön, mutta yllättävän samanlainen siitä silti tuli.
using System; using System.Collections.Generic; public class Program { public static void Main() { Random random = new Random(); int arvottu = random.Next(1, 100); int arvaus = -1; List<int> arvatut = new List<int>(); while (arvaus != arvottu) { Console.WriteLine("Arvaa luku väliltä 1 - 100"); arvaus = Convert.ToInt32(Console.ReadLine()); if (arvaus > arvottu) { Console.WriteLine("luku on pienempi"); arvatut.Add(arvaus); } else if (arvaus < arvottu) { Console.WriteLine("luku on suurempi"); arvatut.Add(arvaus); } else { Console.WriteLine("oikein"); foreach (int vaara in arvatut) { Console.WriteLine(vaara); } } } } }
Teuro kirjoitti:
(23.09.2019 12:09:07): Suo anteeksi en koodaa C# yleensä, joten voi...
en itsekkään ole mikään hyvä sen takia pyysinkin apua... mutta saisiko tämän jotenkin muunnettua tuohon minun omaan koodiini?
Saahan sen. Ei todellakaan pitäisi olla vaikeaa kopioida tuolta Teuron koodista 5 riviä tuonne omasi joukkoon ja muuttaa vähän muuttujanimiä.
Grez kirjoitti:
Saahan sen. Ei todellakaan pitäisi olla vaikeaa kopioida tuolta Teuron koodista 5 riviä tuonne omasi joukkoon ja muuttaa vähän muuttujanimiä.
itse en osaa muuttaa niitä kun vasta aloittelen koodaamaan c#
Jep, no sinänäs ihan sama mikä kieli on kyseessä, jossain erimerkissä olevan muuttujanimen muuttaminen toiseksi on sen verran perusasia, että kannattaa tosiaan harjoitella.
Grez kirjoitti:
Jep, no sinänäs ihan sama mikä kieli on kyseessä, jossain erimerkissä olevan muuttujanimen muuttaminen toiseksi on sen verran perusasia, että kannattaa tosiaan harjoitella.
osaisitko auttaa jonkin verran tässä nyt?
No Teuron esimerkissä vastaus on muuttujassa arvaus ja sinun esimerkissäsi answer. Eli kun kopioit tuon arvatut.Add -alkuisen rivin, niin joudut vaihtamaan vastaus tilalle answer.
Lähtökohtaisesti sanoisin että kannattaa joko yrittää vähän enemmän itse tai sitten jos haluat jatkossakin että opiskelu on sitä että joku syöttää sinulle lusikalla niin kannattaa jos tässä vaiheessa lyödä hanskat naulaan.
Teidän kummankin koodissa on muuten looginen virhe satunnaisluvun arvonnassa. Eli Jimmyn koodi arpoo luvun väliltä 1-999 ja Teuron koodi luvun väliltä 1-99. Sinänsä tuo on enemmän tuon Random luokan tekijän vika kuin teidän, mutta sen luokan dokumentaatio on kyllä oikein, eli kannattaa huomioida.
Grez kirjoitti:
(23.09.2019 12:49:16): No Teuron esimerkissä vastaus on muuttujassa...
en ihan saanut vielläkään toimimaan...
No suosittelen vaikka käymään tuon Teuron vastauksen rivi riviltä läpi ja miettimään mitä siinä tehdään. Jos et ymmärrä jotain kohtaa niin kokeile googlettaa tai tutkia C# dokumentaatiosta mitä se tekee. Sitten kun ymmärrät mitä mikäkin kohta tekee, osaat myös laittaa oman koodisi tekemään sen saman asian.
Jos joku kohta ei millään avaudu niin kysy sitten vaikka siitä täällä, että mitä tämä kohta itse asiassa tekee.
Tässä nyt vielä sovitettuna tuohon sinun omaan koodiisi luultavasti sopiva versio. Poistin muuttujat, joita ei tarvita. Silmukan loppuehto selviää suoraan, kun verrataan onko arvottu ja arvaus samanlaiset. Arvauksien lukumäärä selviää myös listan koosta.
using System; using System.Collections.Generic; public class Program { public static void Main() { int answer = -1; string answermessage; int correctanswer; List<int> answers = new List<int>(); Random rnd = new Random(); correctanswer = rnd.Next(1, 1001); while (answer != correctanswer) { Console.Write("anna numero 1-1000 väliltä: "); answer = int.Parse(Console.ReadLine()); if (answer == correctanswer) { answermessage = "arvasit oikein käytit " + (answers.Count + 1) + " arvausta!"; foreach (int wrong in answers) { Console.WriteLine(wrong); } } else { if (answer > correctanswer) { answermessage = "arvauksesi on liian suuri..."; } else { answermessage = "arvauksesi on liian pieni..."; } answers.Add(answer); } Console.WriteLine(answermessage); } } }
Teuro kirjoitti:
(23.09.2019 14:11:41): Tässä nyt vielä sovitettuna tuohon sinun omaan...
kiitoksia paljon enköhän tästä opi
Aihe on jo aika vanha, joten et voi enää vastata siihen.