Nechce se mi sečíst random

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Odpovědět
Uživatelský avatar
Skelller
Level 2
Level 2
Příspěvky: 222
Registrován: 03 črc 2014 12:20
Bydliště: Opava

Nechce se mi sečíst random

Příspěvek 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();

        }
    }
}
Notebook Acer Aspire E15 E5-571G-57N2
==========================
Procesor: Intel i5-5200U
Grafika: NVIDIA GeForce GT840M
RAM: 8GB DDR3
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7415
Registrován: 23 pro 2010 09:23

Re: Nechce se mi sečíst random

Příspěvek 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?
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Uživatelský avatar
Skelller
Level 2
Level 2
Příspěvky: 222
Registrován: 03 črc 2014 12:20
Bydliště: Opava

Re: Nechce se mi sečíst random

Příspěvek 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 -_-
Notebook Acer Aspire E15 E5-571G-57N2
==========================
Procesor: Intel i5-5200U
Grafika: NVIDIA GeForce GT840M
RAM: 8GB DDR3
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

Re: Nechce se mi sečíst random

Příspěvek od CZechBoY »

Tak to rovnou assignuj.. int kartyhrace = 0;
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7415
Registrován: 23 pro 2010 09:23

Re: Nechce se mi sečíst random

Příspěvek 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;
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

Re: Nechce se mi sečíst random

Příspěvek 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.
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Uživatelský avatar
Skelller
Level 2
Level 2
Příspěvky: 222
Registrován: 03 črc 2014 12:20
Bydliště: Opava

Re: Nechce se mi sečíst random

Příspěvek 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....
Notebook Acer Aspire E15 E5-571G-57N2
==========================
Procesor: Intel i5-5200U
Grafika: NVIDIA GeForce GT840M
RAM: 8GB DDR3
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7415
Registrován: 23 pro 2010 09:23

Re: Nechce se mi sečíst random

Příspěvek 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!
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek

Zpět na „Programování a tvorba webu“