Předmět Autor Datum
i > hcislo.Length
Wikan 16.06.2013 14:35
Wikan
A jaka hodnota je v promenne cislo?
Jan Fiala 16.06.2013 14:37
Jan Fiala
cislo je zadane hracem a hcislo je retezec 3 cisel, se kteryma to ma porovnavat
Nexi 16.06.2013 14:55
Nexi
Zle, pokiaľ podmienka platí opakuj: i < hcislo.Length
PeterSirka 16.06.2013 16:27
PeterSirka
Ptal jsem se na IF ne na For, ten nefunguje.
Nexi 16.06.2013 18:34
Nexi
IF funguje, ale kvůli špatnému FORu se to k němu ani nedostane.
Wikan 16.06.2013 18:38
Wikan
Aha, a můžu se zeptat jak to tedy má cele být? Děkuji
Nexi 16.06.2013 18:53
Nexi
Ale to už tu napsané máš.
Wikan 16.06.2013 18:55
Wikan
kurna prostě obrat to > na <
AZOR 16.06.2013 18:57
AZOR
možná <= bude lepšejšejší
AZOR 16.06.2013 18:58
AZOR
Nebude.
Wikan 16.06.2013 19:02
Wikan
:-) nebyl jsem si jistej (v tomhle téměř nikdy - zvlášt když se mixuje .length, .last, .size, začina…
AZOR 16.06.2013 19:22
AZOR
for (int i = 0; i < hcislo.Length; i++) { if (cislo == (short)hcislo[i]) trefcislo++; } // lepšie //…
Peter Širka 16.06.2013 18:58
Peter Širka
nejak mi to tam nefunguje, pardon jsem zacatecnik :)
Nexi 16.06.2013 19:39
Nexi
Jestli vám někam můžu přes skype/něco takového poslat ten program, nebo ho upnout tak rád.
Nexi 16.06.2013 19:40
Nexi
Proboha, prostě změň > na <.
Wikan 16.06.2013 19:42
Wikan
to už je změněný ale stejně to nejde.
Nexi 16.06.2013 19:55
Nexi
Tak napiš kód, který tam máš teď.
Wikan 16.06.2013 19:58
Wikan
public int HadaneCisloASazka(int cislo, int sazka) { hcislo = Convert.ToString(a) + Convert.ToStrin…
Nexi 16.06.2013 20:15
Nexi
Tak tam je chyb a nesmyslů až hanba. var cisla = new int[] { a, b, c }; var trefcislo = cisla.Where…
Wikan 16.06.2013 20:25
Wikan
Děkuju, jak říkám jsem začátečník! :D Nebo spíš retard... to je to samý.
Nexi 16.06.2013 20:32
Nexi
Zejtra se na to podívám, kdyžtak napíšu.
Nexi 16.06.2013 20:33
Nexi
Nebo spíš retard... to je to samý. Není, pracovníci firmy Accenture třebas nejsou začátečníci, přes…
AZOR 16.06.2013 20:39
AZOR
Ok lidi, funguje, dík moc. Ale mam další těžko popsatelný problém : kdyz skonci hra a vyhraje hrac 1…
Nexi 17.06.2013 20:15
Nexi
Pak tam mas chybu v kodu. Nic jineho se k tomu bez znalosti toho kodu napsat neda.
Jan Fiala 17.06.2013 20:25
Jan Fiala
Hodim sem cely kod, dela mi to ruzne vylomeniny, nebyl by prosim nekdo ochotny rict mi co kde? usin…
Nexi 17.06.2013 21:24
Nexi
To určitě není celý kód.
Wikan 17.06.2013 21:37
Wikan
další část : using System; using System.Collections.Generic; using System.Linq; using System.Text;…
Nexi 17.06.2013 21:37
Nexi
Vhodné pojmenovávání proměnných ti zřejmě moc neříká.
Wikan 17.06.2013 21:44
Wikan
pouzi debugger a odkrokuj si to. Ty si autor tak snad vies jak si ten algoritmus myslel a vies si sk… poslední
MM.. 18.06.2013 00:18
MM..

:-) nebyl jsem si jistej (v tomhle téměř nikdy - zvlášt když se mixuje .length, .last, .size, začinani od 0 či 1 akros všechny možné jazyky), ok - tak nebude. Přijímám porážku. Ne nadarmo se říká, že 70% chyb v softwaru jsou hraniční hodnoty v loopech. A taky věc, která se má v unit testech testovat.

 public int HadaneCisloASazka(int cislo, int sazka)
        {
            hcislo = Convert.ToString(a) + Convert.ToString(b) + Convert.ToString(c);
            trefcislo = 0;
            
            for (int i = 0; i < hcislo.Length; i++)
            {
                if (cislo == (short)hcislo[i])
                    trefcislo++;
            }
            foreach (var hc in hcislo)
            {
                if ((short)hc == cislo)
                    trefcislo++;
            }
            if (trefcislo == 0)
                return (sazka * 0);
            else
            {
                if (trefcislo == 1)
                    return (sazka * 1);
                else
                {
                    if (trefcislo == 2)
                        return (sazka * 2);
                    else
                    {
                        if (trefcislo == 3)
                            return (sazka * 3);
                        else
                            return 0;
                    }
                }
            }
        }
    }
}

Ok lidi, funguje, dík moc. Ale mam další těžko popsatelný problém : kdyz skonci hra a vyhraje hrac 1, hrac 2 dostane stejne penez jako hrac 1 a odecte se mu od toho to co prohral.
priklad
hráč 2 prohraje
ale najednou se mu objeví stejnej počet peněz jako má hráč 1
a od toho se mu potom odečte to co prohrál v tom kole
např mam 100
vsadim 100
protihrac ma u sebe 550
tak prohraju
najednou se mi tam objevi 550 a od toho se odecte 100
teoreticky to melo dojit na 0 a konec

Hodim sem cely kod, dela mi to ruzne vylomeniny, nebyl by prosim nekdo ochotny rict mi co kde?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WpfApplication1
{
    class Hra
    {
        private Random Kostka = new Random();
        private int a, b, c;
        private int Hod = 0;
        private int trefcislo,penizeh1 = 100, penizeh2 = 100, z;

        public Hra()
        {

        }

        public string Kostka1
        {
            get { return Convert.ToString(a = Kostka.Next(1, 7)); }
        }
        public string Kostka2
        {
            get { return Convert.ToString(b = Kostka.Next(1, 7)); }
        }
        public string Kostka3
        {
            get { return Convert.ToString(c = Kostka.Next(1, 7)); }
        }


        public int Hody
        {

            get { return Hod++; }
        }

        public int prepinac
        {
            get
            {
                if (Hod < 1)
                    return 0;
                else
                    if (Hod == 1)
                    {
                        Hod = Hod - 2;
                        return 1;
                    }
                    else
                        return 2;
            }
        }

        public int HadaneCisloASazka(int cislo, int sazka)
        {
            trefcislo = 0;
            var cisla = new int[] { a, b, c };
            trefcislo = cisla.Where(x => x == cislo).Count();
            if (trefcislo == 0)
            {
                z= -(sazka);
            }
            else
                z=trefcislo * sazka;
            return z;
        }

        public int Penize
        {
            get
            {
                if (Hod == 2)
                {
                    penizeh2=penizeh2 + z;
                    return (penizeh2);
                }
                else
                {
                    penizeh1=penizeh1 + z;
                    return (penizeh1);
                }
            }
        }

        public int vyhra
        {
            get
            {
                if (penizeh1 <= 0)
                    return 1;
                else
                {
                    if (penizeh2 <= 0)
                        return 2;
                    else
                        return 3;
                }
            }
        }
    }
}

další část :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {

        private Hra hra;
        private Zmena_jmen Zmena;
        private int hodd;
        private int sazka;
        private int cislo;

        public MainWindow()
        {
            hra = new Hra();
            Zmena = new Zmena_jmen();
            InitializeComponent();
        }

        private void Rollkostka_Click_1(object sender, RoutedEventArgs e)
        {
            try
            {
               
                Labelh1.Content = Zmena.hrac1;
                Labelh2.Content = Zmena.hrac2;
                hodd = hra.Hody;
                Label1.Content = hra.Kostka1;
                Label2.Content = hra.Kostka2;
                Label3.Content = hra.Kostka3;

            }
            catch 
            { 
                MessageBox.Show("Zadejte číslo");
                return;
            }
           
            if (hra.prepinac == 1)
            {
                Label4.Content = "Právě hraje " + Labelh2.Content;
                Prachy1.Content = Convert.ToString(hra.HadaneCisloASazka(cislo, sazka));
                penize1.Content = Convert.ToString(hra.Penize);
            }
            else
            {
                Label4.Content = "Právě hraje " + Labelh1.Content;
                Prachy2.Content = Convert.ToString(hra.HadaneCisloASazka(cislo, sazka));
                penize2.Content = Convert.ToString(hra.Penize);
            }

            if (hra.vyhra == 1)
            {
                Vyhra.Content = "Hráč 2 vyhrál " ;
                Rollkostka.IsEnabled = false;
            }

            else
            {
                if (hra.vyhra == 2)
                {
                    Vyhra.Content = "Hráč 1 vyhrál ";
                    Rollkostka.IsEnabled = false;
                }

            }
        }

        private void Zmena_jmen_Click_1(object sender, RoutedEventArgs e)
        {
            Zmena.ShowDialog();
        }

        private void Btncislo_Click_1(object sender, RoutedEventArgs e)
        {
            cislo = Convert.ToInt16(Lblcislo.Text);
        }

        private void Btnsazka_Click_1(object sender, RoutedEventArgs e)
        {
            sazka = Convert.ToInt32(Lblsazka.Text);
        }

        private void Nova_hra_Click_1(object sender, RoutedEventArgs e)
        {
            System.Diagnostics.Process.Start(Application.ResourceAssembly.Location);
            Application.Current.Shutdown();
        }

        private void Window_Closing_1(object sender, System.ComponentModel.CancelEventArgs e)
        {
            Application.Current.Shutdown();
        }


    }
}

Zpět do poradny Odpovědět na původní otázku Nahoru