Stránka 1 z 1

Nechce se mi sečíst random

Napsal: 01 zář 2014 19:00
od Skelller
Ahoj. Dneska jsem začal dělat jednu hru z knížky... Tohle je dělané úplně jinak. Jenom stejný princip hry... Nechce se mi ve "While" sečíst random.. Chci tam napsat

Kód: Vybrat vše

kartyhrace += nahodnacisla.next(1,11);

Ale vždy mi to hodí chybu... Kdyžtak děkuju za radu zde je kod...

Kód: Vybrat vše

namespace Karetních_21
{
    class Program
    {
        static void Main(string[] args)
        {
            Random nahodnacisla = new Random();
            int kartyhrace, kartypc;

            Console.WriteLine("Ahoj, vítej ve hře karetních 21");
            Console.WriteLine();
            System.Threading.Thread.Sleep(2000);
            Console.WriteLine("Chceš si vzít první kartu? [A/N]");
            char volba = char.Parse(Console.ReadLine());

            if (volba == 'A')
            {
                kartyhrace = nahodnacisla.Next(1, 11);
                kartypc = nahodnacisla.Next(1, 11);
                Console.WriteLine("Tvůj počet bodů: " + kartyhrace);
                Console.WriteLine();
            }

            else if (volba == 'N')
            {
                Console.WriteLine("Hra se za moment ukončí");
                System.Threading.Thread.Sleep(3000);
                Environment.Exit(0);
            }

            else
            {
                Console.WriteLine("Neplatná volba!");
                System.Threading.Thread.Sleep(3000);
                Environment.Exit(0);
            }

            Console.WriteLine("Chceš si vzít další kartu? [A/N]");
            volba = char.Parse(Console.ReadLine());
            while (volba == 'A')
            {

                kartyhrace = nahodnacisla.Next(1, 11);
                kartypc = nahodnacisla.Next(1, 11);
                Console.WriteLine("Tvůj počet bodů: " + kartyhrace);
                Console.WriteLine("Chceš si vzít další kartu? [A/N]");
                volba = char.Parse(Console.ReadLine());
            }
           
           
           
            Console.ReadKey();

        }
    }
}

Re: Nechce se mi sečíst random

Napsal: 01 zář 2014 19:46
od faraon
Chceš tam napsat:

Kód: Vybrat vše

kartyhrace += nahodnacisla.next(1,11);

ale v kódu máš

Kód: Vybrat vše

kartyhrace = nahodnacisla.Next(1, 11);
kartypc = nahodnacisla.Next(1, 11);

Není tam potom jen ta poslední vytažená karta?

Mimochodem, vytváří to při každém spuštění jinou sekvenci automaticky, nebo musíš použít nějaké randomize aby nebyla pokaždé stejná řada karet?

Re: Nechce se mi sečíst random

Napsal: 01 zář 2014 19:59
od Skelller
Ano mám tam

Kód: Vybrat vše

kartyhrace = nahodnacisla.Next(1, 11);
kartypc = nahodnacisla.Next(1, 11);

Protože mi to

Kód: Vybrat vše

kartyhrace += nahodnacisla.Nest(1,11);

Nefunguje.. Píše mi to, že kartyhrace is unasigned nebo něco takového.. Omlouvám se, že nemůžu napsat celou chybu, ale nechce se mi zapnout Visual Studio -_-

Re: Nechce se mi sečíst random

Napsal: 01 zář 2014 20:27
od CZechBoY
Tak to rovnou assignuj.. int kartyhrace = 0;

Re: Nechce se mi sečíst random

Napsal: 02 zář 2014 08:25
od faraon
Že by po deklaraci proměnných v nich byla náhodná hodnota, co v tom místě paměti zůstala po předchozí činnosti, a překladač tě před tím varoval? Ono je lepší všechny proměnné rovnou i inicializovat:

Kód: Vybrat vše

Random nahodnacisla = new Random();
int kartyhrace=0, kartypc=0;

Re: Nechce se mi sečíst random

Napsal: 02 zář 2014 09:10
od CZechBoY
On tam má kartyhrace +=, tzn že pc musí tu proměnnou nejdřív přečíst a pak k ní přičíst to náhodný číslo.

Re: Nechce se mi sečíst random

Napsal: 03 zář 2014 19:50
od Skelller
Už to mám na začátku jsem měl

Kód: Vybrat vše

kartyhrace = nahodnacisla.next(1,11);

Ale správně jsem měl mít

Kód: Vybrat vše

kartyhrace += nahodnacisla.next(1,11);


Ale nastal další problém se kterým si nevím rady...

Kód: Vybrat vše

while (volba == 'A')
            {
                kartyhrace += nahodnacisla.Next(1, 12);
                kartypc += nahodnacisla.Next(1, 12);
                Console.WriteLine("\nTvoje body jsou: " + kartyhrace + "\nChceš si vzít další kartu? [A/N]");
                Console.ReadLine();
               
               
            }
                if (volba == 'N')
                {
                    if (kartyhrace > kartypc && kartyhrace <= 21)
                    {
                        Console.Write("Gratuluji, vyhrál jsi!!");
                    }
                }
            }


Nemůžu přijít na to jak to upravit.. Chci abych měl.. Dokud budu dávat A tak se to bude přičíta, ale jakmile dám N tak chci aby se provedlo to v podmínce if... Jenže jakmile jednou zmáčknu A tak se ten while bude provádět ať už zmáčknu cokoliv... Děkuji za radu :/ Jakože potřebuju aby dokud je A aby se provádělo to ve while.. Ale jakmile už dám N tak se provede if....

Re: Nechce se mi sečíst random

Napsal: 03 zář 2014 20:36
od faraon
A máš někde uvnitř toho while() další načítání klávesnice do té řídící proměnné? Já tam vidím jenom čekání na stisk!