Random - uloženo stále stejné číslo – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Random - uloženo stále stejné číslo – .NET – Fórum – Programujte.comRandom - uloženo stále stejné číslo – .NET – Fórum – Programujte.com

 

Flouwie
~ Anonymní uživatel
18 příspěvků
13. 5. 2012   #1
-
0
-

Ahoj :) Potřeboval bych poradit... Nemůžu najít chybu... Nejspíš bude v porovnávání... Je to obyčejná hra kámen nůžky papír... Např: když dám kámen a počítač papír má bod on... 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace kamen_nuzky_papirr
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        private Random nahoda;
        public int cislo;
        public int skore_hrac;
        public int skore_pocitac;

        public MainWindow()
        {
            InitializeComponent();
            hractext.Text = "0";
            pocitactext.Text = "0";
            this.nahoda = new Random();
        }

        private int Nahoda //náhodné číslo od 1 do 3
        {
            get
            {
                return this.nahoda.Next(1, 4);
            }
        }

        /*
        public enum knp
        {
            kamen = 1,
            nuzky = 2,
            papir = 3
        }
         * */

        /// <summary>
        /// Po kliknutí na kámen se přičtou body buď hráči nebo PC
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void kamen_Click(object sender, RoutedEventArgs e)
        {
            if (Nahoda == 1)
            {
                pcdal.Text = "Kámen";
            }

            else if (Nahoda == 2)
            {
                pcdal.Text = "Nůžky";
            }

            else if (Nahoda == 3)
            {
                pcdal.Text = "Papír";
            }

            hracdal.Text = "Kámen";

            if (Nahoda == 2)
            {
                skore_hrac++;
                hractext.Text = skore_hrac.ToString();
            }

            else if (Nahoda == 3)
            {
                skore_pocitac++;
                pocitactext.Text = skore_pocitac.ToString();
            }
        }

        /// <summary>
        /// Po kliknutí na nůžky se přičtou body buď hráči nebo PC
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void nuzky_Click(object sender, RoutedEventArgs e)
        {
            if (Nahoda == 1)
            {
                pcdal.Text = "Kámen";
            }

            else if (Nahoda == 2)
            {
                pcdal.Text = "Nůžky";
            }

            else if (Nahoda == 3)
            {
                pcdal.Text = "Papír";
            }

            hracdal.Text = "Nůžky";

            if (Nahoda == 3)
            {
                skore_hrac++;
                hractext.Text = skore_hrac.ToString();
            }

            else if (Nahoda == 1)
            {
                skore_pocitac++;
                pocitactext.Text = skore_pocitac.ToString();
            }
        }

        /// <summary>
        /// Po kliknutí na papír se přičtou body buď hráči nebo PC
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void papir_Click(object sender, RoutedEventArgs e)
        {
            if (Nahoda == 1)
            {
                pcdal.Text = "Kámen";
            }

            else if (Nahoda == 2)
            {
                pcdal.Text = "Nůžky";
            }

            else if (Nahoda == 3)
            {
                pcdal.Text = "Papír";
            }

            hracdal.Text = "Papír";

            if (Nahoda == 1)
            {
                skore_hrac++;
                hractext.Text = skore_hrac.ToString();
            }

            else if (Nahoda == 2)
            {
                skore_pocitac++;
                pocitactext.Text = skore_pocitac.ToString();
            }
        }
    }
}

Nahlásit jako SPAM
IP: 85.132.185.–
ingiraxo+15
Grafoman
13. 5. 2012   #2
-
0
-

nějak nechápu, proč máš privátní vlastnost "Nahoda"...

zkus místo té vlastnosti dát obyčejnou funkci..

private int Nahoda()
{
    return nahoda.Next(1, 3);
}

a v podmínkách volej "Nahoda()"

a možná by ještě bylo lepší, kdyby si tohle celý dal do fce...

private knp Nahoda()
{
    switch (nahoda.Next(1,3))
    {
    case 1: return knp.kamen;
    case 2: return knp.nuzky;
    case 3: return knp.papir;
    }
    return knp.kamen; // nema vyznam
}

a potom v podmínkách porovnávat přímo hodnoty 

if (Nahoda() == knp.kamen) { ... }

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Flouwie
~ Anonymní uživatel
18 příspěvků
13. 5. 2012   #3
-
0
-

#2 ingiraxo
To nefunguje... píše to: Error 2 Operator '==' cannot be applied to operands of type 'method group' and 'int' 

Nahlásit jako SPAM
IP: 85.132.185.–
Flouwie
~ Anonymní uživatel
18 příspěvků
13. 5. 2012   #4
-
0
-

#3 Flouwie
jo aha... zkusím ;)

Nahlásit jako SPAM
IP: 85.132.185.–
ingiraxo+15
Grafoman
13. 5. 2012   #5
-
0
-

a jak tak koukám, tak všude uvádíš ještě název.. takže bych si tuhle fci přetížil na 

private knp Nahoda(out string str)
{
    str = null;

    switch (nahoda.Next(1,3))
    {
    case 1: str = "Kámen"; return knp.kamen;
    case 2: str = "Nůžky"; return knp.nuzky;
    case 3: str = "Papír"; return knp.papir;
    }
    return knp.kamen;
}

a potom v podmínkách použít 

if (Nahoda(out temp) == knp.kamen)
{
    pcdal.Text = temp;
}

samozřejmě proměnná temp je instanční

a takto se zbavíš duplicity toho textu


Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Flouwie
~ Anonymní uživatel
18 příspěvků
13. 5. 2012   #6
-
0
-

#5 ingiraxo
u toho str mi to háže chybu :/ Error 1 The out parameter 'str' must be assigned to before control leaves the current method 

co s tím?

Nahlásit jako SPAM
IP: 85.132.185.–
Flouwie
~ Anonymní uživatel
18 příspěvků
13. 5. 2012   #7
-
0
-

#6 Flouwie
napadlo mě tam dát ref... to by fungovalo ne? :)

Nahlásit jako SPAM
IP: 85.132.185.–
ingiraxo+15
Grafoman
13. 5. 2012   #8
-
0
-

nad switch to ještě initni na null

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Flouwie
~ Anonymní uživatel
18 příspěvků
13. 5. 2012   #9
-
0
-

#8 ingiraxo
achjo :( stejně mi to pořád špatně generuje ty náhodné čísla... u PC se neobjevuje papír :/

Nahlásit jako SPAM
IP: 85.132.185.–
KIIV
~ Moderátor
+43
God of flame
13. 5. 2012   #10
-
0
-

#9 Flouwie
ingiraxo tam ma malou botu..  ma to byt samozrejme  .next(1,4)  pocatek je vcetne, konec tam nepatri

Nahlásit jako SPAM
IP: 62.245.85.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Flouwie
~ Anonymní uživatel
18 příspěvků
13. 5. 2012   #11
-
0
-

#10 KIIV
jojo už jsem si všiml :) ale někdy když začínám tu hru, tak se u pc neobjeví vůbec nic... to by mohlo být čím? už mě to **** :D

Nahlásit jako SPAM
IP: 85.132.185.–
ingiraxo+15
Grafoman
13. 5. 2012   #12
-
0
-

jo pardon, má tam bejt (1,4) =)

tak po spustění to hned initni na nějakou hodnotu, pust tu fci Nahoda, ať PC něco má

kdyžtak ukaž jak to momentálně máš a dej to do code a né jako text

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Flouwie
~ Anonymní uživatel
18 příspěvků
13. 5. 2012   #13
-
0
-

#12 ingiraxo
 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace kamen_nuzky_papirr
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        private Random nahoda;
        private string temp;
        public int cislo;
        public int skore_hrac;
        public int skore_pocitac;

        public MainWindow()
        {
            InitializeComponent();
            hractext.Text = "0";
            pocitactext.Text = "0";
            this.nahoda = new Random();
        }

        public enum knp
        {
            kamen = 1,
            nuzky = 2,
            papir = 3
        }

        private knp Nahoda(out string str) //náhodné číslo od 1 do 3
        {
            str = null;

            switch (nahoda.Next(1, 4))
            {
                case 1:
                    str = "Kámen";
                    return knp.kamen;
                case 2:
                    str = "Nůžky";
                    return knp.nuzky;
                case 3:
                    str = "Papír";
                    return knp.papir;
            }
            return knp.kamen;
        }

        /// <summary>
        /// Po kliknutí na kámen se přičtou body buď hráči nebo PC
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void kamen_Click(object sender, RoutedEventArgs e)
        {
            if (Nahoda(out temp) == knp.kamen || Nahoda(out temp) == knp.nuzky || Nahoda(out temp) == knp.papir)
            {
                pcdal.Text = temp;
            }

            hracdal.Text = "Kámen";

            if (Nahoda(out temp) == knp.nuzky)
            {
                skore_hrac++;
                hractext.Text = skore_hrac.ToString();
            }

            else if (Nahoda(out temp) == knp.papir)
            {
                skore_pocitac++;
                pocitactext.Text = skore_pocitac.ToString();
            }
        }

        /// <summary>
        /// Po kliknutí na nůžky se přičtou body buď hráči nebo PC
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void nuzky_Click(object sender, RoutedEventArgs e)
        {
            if (Nahoda(out temp) == knp.kamen || Nahoda(out temp) == knp.nuzky || Nahoda(out temp) == knp.papir)
            {
                pcdal.Text = temp;
            }

            hracdal.Text = "Nůžky";

            if (Nahoda(out temp) == knp.papir)
            {
                skore_hrac++;
                hractext.Text = skore_hrac.ToString();
            }

            else if (Nahoda(out temp) == knp.kamen)
            {
                skore_pocitac++;
                pocitactext.Text = skore_pocitac.ToString();
            }
        }

        /// <summary>
        /// Po kliknutí na papír se přičtou body buď hráči nebo PC
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void papir_Click(object sender, RoutedEventArgs e)
        {
            if (Nahoda(out temp) == knp.kamen || Nahoda(out temp) == knp.nuzky || Nahoda(out temp) == knp.papir)
            {
                pcdal.Text = temp;
            }

            hracdal.Text = "Papír";

            if (Nahoda(out temp) == knp.kamen)
            {
                skore_hrac++;
                hractext.Text = skore_hrac.ToString();
            }

            else if (Nahoda(out temp) == knp.nuzky)
            {
                skore_pocitac++;
                pocitactext.Text = skore_pocitac.ToString();
            }
        }
    }
}
Nahlásit jako SPAM
IP: 85.132.185.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 13 hostů

Podobná vlákna

Random rátanie — založil Php

Random setRGB? — založil majo

Random akcia — založil Max

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý