Anonymní profil odpoved – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil odpoved – Programujte.comAnonymní profil odpoved – Programujte.com

 

Příspěvky odeslané z IP adresy 94.113.253.–

.NET › Elipsa a rozpočítání bodů
15. 8. 2022   #390390

#75 Jerry
ale chápete, že pravidelněj pětiúhelník na elipse vubec nemusí vyjít .. z důvodu geometrie... elipsa neni kružnice .. 

Myslíš, že eliptický válec nemůžeš obehnat válečkovým řetězem (lépe vsadit řetěz do vnitř) řetězem o vhodné rozteči??

Ten n-úhelník nemusí být pravidelný, pouze rovnostranný.

.NET › Elipsa a rozpočítání bodů
15. 8. 2022   #390378

#64 peter
ten kód už jsem smáznul, ale myslím že se to zacyklilo (možná ne úplně jen těch operací bylo tolik, že by to trvalo několik minut), protože čím víc roztahováním stran polygonu se určitý bod dostává do oblasti kde je elipsa širší tím víc chybělo k dosažení rovnostrannosti.

Sudé n-úhelníky se spočítaly docela rychle.

Zkusím i ten Tvůj postup.

.NET › Elipsa a rozpočítání bodů
11. 8. 2022   #390343

#37 peter
- sečtu vzdálenosti jednotlivých bodů
Nebylo by lepsi zadat jako pocatecni hodnotu obvod elipsy? vzdalenost1 = obvod / n A od te vzdalenosti odecitat postupne 1, 2, 4, 8... dokud se s body nevejdes do elipsy?

Dopočítávání je jedna věc, ale jak do toho zapojit to pootočení?

(ps. pokračovat s pokusy budu až zítra)

.NET › Dvourozměrné pole
23. 2. 2022   #389951

#28 peter
myslím, že tvá snaha je zbytečná ON to stejně nepobere, ještě pořád nezvládá ani prvních pět minut výuky programování (ať už je ta výuka začíná čímkoliv)

.NET › Dvourozměrné pole
23. 2. 2022   #389947

#24 MilanL
Máš tam chyby jako ON! 

//varianta1, když je druhý rozměr malý 
int len = array2D.GetLength(0);
for (int i = 0; i < len; i++)
{
  Console.Write(array2D[i,0]);
  Console.Write(" - ");
  Console.WriteLine(array2D[i,1]);
}

//varianta2, když je druhý rozměr velký
int lenI = array2D.GetLength(0);
int lenJ = array2D.GetLength(1);
for (int i = 0; i < lenI; i++)
{
  for (int j = 0; j < lenJ; j++)
  {
     if (j>0) Console.Write(" - ");
     Console.Write(array2D[i,j]);
  }
  Console.WriteLine();
}
.NET › WPF zdrojákoviště
28. 1. 2022   #389777

#7 Montezo
to nesouvisí s vytrvalostí, nemůžeš se učit číst a psát a odmítnout se učit abecedu

.NET › WPF zdrojákoviště
28. 1. 2022   #389775

#5 Montezo
ty jsi blbec, jak myslíš, že hledáme všichni kromě tebe. To co o chceme najít napíšeme do google.

Na žádných stránkách není všechno, všechno píšou lidi je to vlákno od vlákna, někdy najdeš blbost , někdy řešení.

ps, Mimochodem furt neumíš základy C# už se chceš pouštět do XAMLu, ty jsi fakt jelito.

.NET › WPF zdrojákoviště
28. 1. 2022   #389773

#3 Montezo GOOGLE: WPF

.NET › Všechny using?
26. 1. 2022   #389754

#26 Montezo
seš takové tele, že se ti z 21 lekcí podařilo pouze jednu opsat dobře??

.NET › [WPF] Kalkulačka
26. 1. 2022   #389753

#2 hlucheucho
dle toho příkladu to jelito ani neví co je mocnina navíc asi rád ze sebe dělá debila

.NET › [WPF] Kalkulačka
26. 1. 2022   #389752
.NET › Chyba CS0246 ??
25. 1. 2022   #389739

#28 Montezo
Celý problém je v tom, že začneš tutoriálem pro pokročilé a ty nejsi ani ve stavu začátečníka po prvních pár minutách studia. Do té doby než si doplníš začátečnické znalosti, je zbytečné s tebou cokoliv pokročilejšího řešit.

.NET › Všechny using?
24. 1. 2022   #389725

#20 Montezo
kolik těch using vlastně je?

Já nevím co vlastně řešíš, jestli tohle, tak to je jako by si se ptal kolik existuje slov. Na to ti ani ten google správně neodpoví. Každou hodinu jich přibudou tisíce, tipuju.

.NET › Všechny using?
24. 1. 2022   #389716

#17 Montezo

A jak mám teda použít ten Google, aby mi dal odpověď.


Na co konkrétně?

.NET › Chyba CS0246 ??
24. 1. 2022   #389715

#16 Montezo
Tam nemám zaplacený přístup, ale předpokládám, že pokud odsud stáhneš celý projekt a nebudeš do něj vrtat tak bude fungovat bez chyb. Taky se může stát, že když jsi neprošel tutoriálem postupně, mohou ti tam některé části chybět. Ale to ti tady nikdo nepoví.

Pokud ale stažený projekt bez chyb zkompiluješ bez chyb tak je to OK a dokurvil si to ty.

Pokud jej nezkompiluješ musíš projít celý tutoriál od začátku a doplnit co chybí.

.NET › Chyba CS0246 ??
24. 1. 2022   #389713

#13 Montezo
však neumíš vůbec nic! Za půl roku ses nenaučil to co by ses naučil za 10 minut běžným postupem!

.NET › Chyba CS0246 ??
24. 1. 2022   #389710
.NET › Chyba CS0246 ??
24. 1. 2022   #389705

#8 Montezo

no tak tu nic neuváděj a dělej si co chceš!

je to jako bych ti napsal: nejde mi televize nebudu ti psát jak se to chová, ani její typ, ani její značku. Potřebuju od tebe přesně vědět jakou součástku mám vyměnit.

.NET › Chyba CS0246 ??
24. 1. 2022   #389702

#5 Montezo
příklady které zde uvádíš, rozhodně nejsou pro nováčka!

Jak píše gna uveď tu odkud jsi to vzal?

(bez toho se tu nic dalšího nemůžeš dozvědět)

.NET › Všechny using?
24. 1. 2022   #389700

#15 Montezo
kdyby bylo lidstvo jako ty, tak by se nic nevyřešilo. Jsi jako křeček v tom kole - může makat kolik chce a furt bude jen v tom kole.

.NET › Co značí tato chyba?
24. 1. 2022   #389692

#3 Montezo
Ale v tomto případě ses rozhodl napsat knihu básní, ale umíš jen jedno písmeno abecedy, zbytek písmen ses rozhodl ignorovat. - Alespoň se ti to bude rýmovat.

.NET › ArrayList list = new ArrayLi…
13. 1. 2022   #389591

#9 peter
V C# se moc destruktory nepoužívají, spíš se používá rozhraní IDisposable a v metodě Dispose se provede vše co je potřeba. Nikdy neměl problém najít ~ hledá se to daleko lépe než nějaký text.
Za sebe taky radím do této sekce PHP netahat.

.NET › Morseova abeceda
11. 1. 2022   #389576

#47 Kit
Tak ukaž, jak šikovně na tu konverzi s jedním slovníkem tam a zpět.

.NET › Morseova abeceda
11. 1. 2022   #389572

#45 Karloscz
Protože, slovník má pouze metodu TryGetValue, nemá TryGetKey.
Slovník je vhodný pro jednosměrné získání (např. znak->kód) , naopak s tím polem stringů (případně by to šlo ještě lépe s nějakým jiným objektem obsahující znak a kód v nějaké kolekci, nebo poli). To pole stringů jsem zvolil, proto aby to bylo pro začátečníka pochopitelné.

.NET › Práce s .json soubory...
7. 1. 2022   #389529

#13 Montezo
to není jen o estetičnu...

Ale pokud už funguje, tak bys měl napsat, kde byla chyba, označit příspěvek s řešením a případně tu dát opravený kód.

.NET › Práce s .json soubory...
7. 1. 2022   #389527

#11 Montezo

Místo, aby jsi se věnoval problému. Tak reaguješ na příspěvek, který sis ani pořádně nedokázal přečíst.
Mutagen nepíše nic o tom, že by to bylo něco špatného nebo podobně.
další věc je, že na té hrůze co jsi tu sem dal, je evidentní, že vůbec nevíš co jsi zkopíroval, takže o inspiraci nemůže být řeč.

Problém je, že ten soubor tam není. Soubor "priklad.json" nebyl na konci běhu programu vytvořen.

nejspíš protože zapisuješ do souboru "vystup.json"

ps.: 

 string fullpath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "nazevsouboru.typ"); //cesta k souboru ve složce aplikace
 File.WriteAllText(fullpath,....
.NET › Cyklus foreach
3. 1. 2022   #389497

#8 Kit
On taky psal, že autorům tutoriálům nevěří, dokumentace je nepřehledná. Ale koupil si knihu, která mu přijde divná. Naše rady nečte nebo je ignoruje. Do hlavy mu to neleze a programovací jazyk C# mu přijde špatně napsaný a nelogický. Programy píše blbě, protože mu to tak nejvíc vyhovuje a nemá v úmyslu to měnit. Na internetu zásadně nic nehledá a "napovídací" nástroje Visual Studia nehodlá číst. Zásadně nikdy nic nedokončí, na otázky neodpovídá. Zkrátka rozený talent.

.NET › Ceasarova šifra
14. 12. 2021   #389239

#16 Montezo
nechápu proč do toho motáš citaci, ale jestli ti tu něco nefunguje jako všem ostatním, tak máš buďto divný prohlížeč, nebo blbě nastavený.

Má to fungovat tak, že zmáčkneš <?, otevře se okno, do něj vložíš kód, stiskneš tlačítko vložit a je to.

.NET › Použití ternárního výrazu
14. 12. 2021   #389237

#19 Montezo
Příklad:

Napiš program konzolové aplikace, která změní uživatelem zadanou hodnotu v rozsahu 1000 až 99999 na zápornou. Následně novou hodnotu vypíše. Ošetři vstup uživatele a umožni mu zadat libovolný počet čísel. Pracuj s typem int.

To by jsi už měl umět (minimálně na základě problémů, které jsi zde řešil) bez hledání pomoci. Pokud toto nezvládneš, mám pravdu;)

.NET › Použití ternárního výrazu
14. 12. 2021   #389236

#19 Montezo Za 2 měsíce jsi nepochopil to, co by jsi měl chápat za pět minut. Myslím to vážně, není to tak, že bych tě chtěl shazovat, ale je to fakt.

.NET › Použití ternárního výrazu
14. 12. 2021   #389234

#16 Mutagen
S čistým svědomím můžu říct, že jsem se nesetkal na diskuzích o programování s nikým, kdo programování chápal míň než Montezo. A s jistotou můžu říct, že tenhle obor nikdy chápat nebude (a to ani na úrovni začátečníka).

.NET › Použití ternárního výrazu
14. 12. 2021   #389229

#13 Montezo
v podstatě všechny kódy co tu předvádíš mi nepřijdou ani jako test, ani jako lekce.

(jeden z nejhorších a odstrašujících byl Ceasarova šifra)

.NET › Ceasarova šifra
14. 12. 2021   #389227

#14 Montezo
další věc, která by se dala ověřit testem ;)

.NET › Použití ternárního výrazu
14. 12. 2021   #389226

#11 hlucheucho :) 

.NET › Použití ternárního výrazu
14. 12. 2021   #389224

#9 Montezo
Mám takové podezření, podle toho co tu předvádíš, že ta kniha ze které se to učíš, je pěkná sračka.

.NET › Co znamená zkratka...?
14. 12. 2021   #389221

#8 Montezo
Už jsem ti to jednou psal, programovat ještě neumíš a už by jsi chtěl vyvíjet programovací jazyk. Respektive pořád řešíš, že programovací jazyk je špatně napsaný.
Někdo to vymyslel tak jak to je, a nejspíš k tomu měl důvod (nevím ve které prog. jazyce se to objevilo poprvé, ale tohle se používalo dřív, než ses narodil). (Nejspíš je to proto, že mínus za rovnítkem může upravovat polaritu následující hodnoty.)

Tak se tím řiď, nebo si napiš vlastní programovací jazyk, ve kterém to dáš obráceně.

.NET › Ceasarova šifra
14. 12. 2021   #389218

#9 Montezo
To se pak zase admin vzteká, že ten kód je moc dlouhej

to proto že to tu vkládáš jako běžný text, ne přes <?, ty tlačítka tam nejsou pro srandu králíkům.

.NET › Co znamená zkratka...?
14. 12. 2021   #389217

#1 Montezo

Pokud ten výklad v knize nechápal obyčejný člověk, tak by to nejdřív zkusil, než ze sebe bude dělat šaška na diskuzích.
int i = 8, j=2;
pokud napíšeš i=+j; tak překladač napíše, že je to blbě! >> TEKHLE NE!

pokud napíšeš i+=j; tak ti to vezme, ty testem zjistíš, že i je 10; >> TAKHLE JE TO OK! ZAPAMATUJU SI, ŽE SE TO DĚLÁ TAKTO.
Funguje to stejně jako když napíšeš i = i + j; jen je to kratší.

.NET › Distribuce programů v .NET
13. 12. 2021   #389186

#27 hlucheucho
Myslím si, že pokud máš přenositelnou verzi O.S. tak by mělo fungovat, že použiješ klíč z W7 pro instalaci W11. Ale nezkoušel jsem to.

.NET › Distribuce programů v .NET
13. 12. 2021   #389184

#23 hlucheucho
ono to furt funguje legálně zadarmo (i na W11)

.NET › Distribuce programů v .NET
13. 12. 2021   #389182

#22 Montezo
doufám, že tě na cílovém PC napadlo nainstalovat .NET5.0 a sestaveno to máš jako release.

VS2019 ti 6ku nenabídne protože je podporován až od VS2022

Ohledně distribuce doporučuji shlédnout toto video od 32:56

Pokud nebudeš dělat čisté C++, ale ve VS musíš doinstalovat Visual C++ Runtime

.NET › Distribuce programů v .NET
13. 12. 2021   #389179

#19 Montezo

Jako kdybych tu nadával, že mi to nejde pod WinXP, tak to pochopím
a jaký je v tom rozdíl? W7 je zrovna tak mrtvé jako XP

.NET › Distribuce programů v .NET
13. 12. 2021   #389178

#3 Montezo
jestli se chceš věnovat modernímu programování (.NET6), nepoužívej mrtvé W7.

Pokud chceš programovat pro mrtvoly programuj .net Frameworku.

.NET › Žádné přetížení pro metodu T…
13. 12. 2021   #389174

#12 Montezo
nebo to lze udělat i takto: 

// definice a vše co se má vykonat před smyčkou
while(true)//nekonečná smyčka
{
   //vše co chceš dělat v cyklu

 if(!podmínka) break; //ukončí smyčku
}
//co se má dělat po skončení cyklu

míň přehledné, ale pro tvé řešení asi vhodnější

Visual Basic › pavel
30. 11. 2021   #389057
.NET › Revize kódu Hanojských věží
18. 11. 2021   #389005

#5 KARLOSCZ1979
Čekal jsem, že to zhodnotí nějaký profík, zatím nikdo nic nepsal, tak ještě přidám celkové hodnocení.
Nelíbí se mi to provedení celkově, dávat ty položky do stacku, pak to kopírovat do pole, řadit a pak ještě převracet...
Vem si kdyby jsi dělal něco náročnějšího, kolik by jsi tímto zaplácal paměti a výkonu..

.NET › property accessor
22. 10. 2021   #388820

#13 Montezo

BDS: tuhle wifinu využívá více lidí. a všichni máte dotazy stejného typu :D

Myslím, že se v těch přirovnáních ztrácíš (nebo já). Zatím ještě neznáš základy a už by jsi chtěl vyvíjet programovací jazyk.

Je to tam například pro ošetření vstupů uživatele, nebo ošetření chyb při čtení souborů.....

nebo i pomoc vývojáři:

class TestClass
    {
        private int _x = 0;
        public bool ValueIsCorrect{get; private set;} = true;

        public int X
        {
            get { return _x; }
            set
            { 
                if (value < -100) 
                {
                 _x = -100;
                 ValueIsCorrect = false;
                }
                else
                {
                   if (value > 100) 
                   {
                    _x = 100;
                     ValueIsCorrect = false;
                   }
                   else
                   {
                    _x = value;
                    ValueIsCorrect = true;                    
                   }
                 }
                 PrekresliOkno();
            }
        }

     private void PrekresliOkno()
     {
      //nejaky kod
     }
    }

trochu krkolomné, ale snad o to lépe pochopitelné 

.NET › property accessor
22. 10. 2021   #388813

#7 Montezo
měl jsem na mysli:

Montezo Viktor funkce safranek DEBRECEN gripen..

.NET › property accessor
22. 10. 2021   #388807

#4 hlucheucho
pravdu máš! 

class TestClass
    {
        private int _x; //chci aby _x mohlo mít hodnotu v rozsahu -100 až 100 

        public int X //vlastnost X je public, takže k ní lze přistupovat zvenčí
        {
            get { return _x; }
            set
            { //tímto zajistím, že _x bude v rozsahu -100 až 100
                if (value < -100) _x = -100;
                else
                {
                    if (value > 100) _x = 100;
                    else _x = value; //<oprava
                }
            }
        }
    }

opraveno

.NET › Console.WriteLine
20. 10. 2021   #388790

#3 funkce
"new A();" vytvoří novou instanci třídy typu "A"

pak ji "=" přiřadí identifikátor (uživatelské jméno) "a"

značí přiřazení

== značí rovnost

.NET › Console.WriteLine
20. 10. 2021   #388786

#1 funkce
Máš zvláštní otázky.

Myslím, že ses začal věnovat něčemu, k čemu nemáš ani vzdálené vlohy.

Voláš tím metodu třídy Console s parametrem... Stačí WriteLine označit a stisknout F12.

.NET › Object a znakový řetězec...
20. 10. 2021   #388783

#42 safranek
samozřejmě jde jen o ukázky, aby bylo poznat, že se hodnota změnila

reálnější je tento příklad: 

class C
{
 uint tag = 0;
 string title;

 public C()
 {
  title=string.Empty; //doplní prázdný řetězec, aby title nebylo null
 }

 public C(int Tag)
 : this() //spustí konstruktor bez parametru
 {
  tag=Tag;
 } 
}
.NET › Object a znakový řetězec...
20. 10. 2021   #388779

#39 hlucheucho
kdyby nebyl líný, tak si spustí tutoriál, tam to taky vysvětluje

(mám strach, že spustím lavinu dalších otázek, proto jsem tam dědičnost nedal, i když se strašně nabízí)

.NET › Object a znakový řetězec...
20. 10. 2021   #388778

#37 safranek
> mělo tam bejt i "A instance 2"  ?

Nemusí, je to na začátku dokud se tam nedá středník, ale čárka tak to furt platí. Ale tohle jsi si mohl ověřit ve visualstudiu.

> .."typ" si představím právě "int, bool, double apod"..

 V podstatě máš pravdu on to není hodnotový typ jako int apd. Jde o uživatelsky definovaný referenční typ. Přesné názvosloví není pro mě podstatné, nikdy jsem se ho neučit. Tady je o tom nějaké povídání, možná je tam taky pro tebe něco pro pochopení.

>Tohle je taky samo o sobě konstruktor?

ne, to je statická metoda (funkce), která se spouští vždy po startu programu

.NET › Object a znakový řetězec...
18. 10. 2021   #388753

#19 safranek
zapni VisualStudioInstaller a nainstaluj toto:

Připojen obrázek.

ta chybová hláška s tím souvisí, ten tutoriál je dělaný v NET. Framework

Tutoriál začni jak jsem už psal lekcí 16, tam jsou první všeobecné věci co musíš vědět (díly 1-15 se věnují WindowsForms)

.NET › Práce s texťákem v C++ do C#
21. 2. 2018   #219791

#5 ORION206

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

je tam proto, že pokud používáš např. české windows tak by ti nefungovalo parsování čísla s desetinnou tečkou..

takže pokud tam máš tečku, jedeš např. na českých windows a nedáš tam "en-US", tak ti to nebude fungovat.

možná se ti může hodit i toto: 

                char[] del = new char[] { ' ' }; //možná tam můžeš mít i '\t'
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    string[] ss = line.Split(del, StringSplitOptions.RemoveEmptyEntries); //vynechá prázdné řetězce (např. 2 mezery za sebou)

mimochodem, proč tam máš to pole mez_X, když k němu nepřiřazuješ žádnou hodnotu?(u C# je tam 0, ale u C++ byla hodnota v závislosti na tom co bylo na dané pozici v paměti - v podstatě náhodné číslo)

proč do souboru zapisuješ 12 argumentů, když jich tam máš pouze 6?

.NET › void* na byte[] v C#
13. 9. 2016   #212674

#7 Radek Chalupa 

já bych to udělal takto:

 try
 {
     int delka = (int)cmd.velikost_dat_blob(0);
     byte* data = (byte*)cmd.obsah_blob(0);
     using (MemoryStream ms = new MemoryStream(delka))
     {
         for (int i = 0; i < delka; i++) ms.WriteByte(data[i]);
         bitmapa_.nacist_stream(ms);
     }                    
 }
 catch (Exception ex)
 {
     MessageBox.Show(ex.Message, "Chyba", MessageBoxButtons.OK, MessageBoxIcon.Error);
 }
Visual Basic › jak fungují řetězce (String)
23. 5. 2016   #210832

#6 Kartik
a co zkusit StringBuilder?

.NET › Velikost aktualizace Visual…
19. 4. 2016   #210023

#1 Hans
kdybych dělal víc počítačů, tak bych stáhl ISO - odinstalace není nutná, po spuštění instalace by se měla automaticky provést pouze update.

Odhaduji (podle doby stahování), že se při síťové instalaci update stáhne více než 1 GB.

.NET › Seřazení prvků v poli od nej…
13. 4. 2016   #209937

#27 kubas129
Opět máš špatný návrh aplikace. Přece můžeš formulář navrhnou tak, že výsledky hry vypíšeš jako víceřádkový text do jednoho labelu, pak nebudeš muset řešit takové blbosti. Případně to můžeš kreslit rovnou na formulář.

.NET › Seřazení prvků v poli od nej…
12. 4. 2016   #209898

#16 kubas129
tobě je docela těžké poradit, ignoruješ většinu toho co ti kdo napíše, neptáš se na to co potřebuješ....

Pokud nepochopíš ani tohle, tak ses nejspíš začal věnovat špatnému koníčku;) 

            STAV[] player = new STAV[4];
            //inicializace:
            for (int i = 0; i < 4; i++)
            {
                player[i].id = i;
                player[i].score = 0;
            }

            //příklad bodování:
            player[0].score = 44;
            player[1].score = 11;
            player[2].score = 33;
            player[3].score = 22;
            //seřazení od největšího:
            Array.Sort(player);
    struct STAV : IComparable
    {
        public int id; //id hráče - podle toho po seřazení poznáš který je který
        public int score; //bodový stav

        public int CompareTo(object obj)
        {
            STAV s = (STAV)(obj);
            return s.score.CompareTo(score);
        }
    }

Strukturou STAV jsem nahradil zmíněné dvourozměrné pole

-------------------------------------------------------------------------------------

Ještě dodám ukázku v konzolové aplikaci: 

    class Program
    {
        static void Main(string[] args)
        {
            STAV[] player = new STAV[4];
            //inicializace:
            for (int i = 0; i < 4; i++)
            {
                player[i].id = i;
                player[i].score = 0;
            }

            //příklad bodování:
            player[0].score = 44;
            player[1].score = 11;
            player[2].score = 33;
            player[3].score = 22;
            //seřazení od největšího:
            Array.Sort(player);

            foreach(STAV s in player)
            {
                Console.WriteLine(s.ToString());
            }

            Console.ReadKey();
        }

    }

    struct STAV : IComparable
    {
        public int id;
        public int score;

        public int CompareTo(object obj)
        {
            STAV s = (STAV)(obj);
            return s.score.CompareTo(score);
        }

        public override string ToString()
        {
            int i = id+1;
            return string.Format("Hráč {0} získal {1} bodů", i, score);
        }
    }
.NET › Seřazení prvků v poli od nej…
12. 4. 2016   #209887

#7 peter
nebo se nad tím zamyslet, mě jako první možnost napadlo toto:

static void SortIntArray(int[] arr)
        {
            int temp;
            for(int i=0; i<arr.Length; i++)
            {
                for (int j = 0; j < arr.Length; j++)
                {
                    if (arr[j] < arr[i])
                    {
                        temp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = temp;
                    }
                }
            }
        }
C / C++ › Pexeso Boti
7. 4. 2016   #209743

Tak jsem to pexeso testoval, ještě byla chyba ve vyhodnocení výhry. Taky jsem tam přidal nastavení obtížnosti.

Tady je odkaz na (doufám) finální verzi:

http://www85.zippyshare.com/v/4gt6HiEE/file.html

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;

namespace SWPexeso
{
    public partial class Form1 : Form
    {
        private const int players_count_max = 4; //pro jednoduchost jsem nastavil 4 hráče jako maximum
        private const int card_distance = 52; //muj rozestup karet
        bool click_on_stop, playing;
        int last_index, current_player, players_count, click_count, min, sec, completed;
        int IQ = 7; // počet kroků, které is AI zapamatuje <--
        int[] player = new int[players_count_max];
        bool[] player_ai = new bool[players_count_max];

        Random random = new Random();
        Card[] cards = new Card[20];

        List<int> memory = new List<int>();
                
        public Form1()
        {
            InitializeComponent();
        }

        public void StopGame()
        {
            click_on_stop = true;
            Application.DoEvents();
            GameTimer.Stop();
        }

        //překreslení celého plátna
        private void Canvas_Paint(object sender, PaintEventArgs e)
        {
            for (int x = 0; x < 5; x++)
            {
                for (int y = 0; y < 4; y++)
                {
                    int index = (y * 5) + x;
                    int imageindex = (cards[index].covered) ? 0 : cards[index].picture;
                    e.Graphics.DrawImage(cardImages.Images[imageindex], (x * card_distance) + 2, (y * card_distance) + 2);
                }
            }
        }
        //výběr myší
        private void Canvas_MouseDown(object sender, MouseEventArgs e)
        {
            if (player_ai[current_player] || !playing) return; //když hraje pc, nebo se nehraje, tak nic..
            else //pokud nehraje aktuálně počítač:
            {   //výpočet karty na kterou bylo klepnuto
                int x = e.Location.X / card_distance;
                int y = e.Location.Y / card_distance;
                if (x < 5 && y < 4)
                {
                    int index = (y * 5) + x;
                    ClickOn(index);
                }
            }
        }
        //překreslení pouze definované karty
        private void Repaint(int index)
        {
            int y = index / 5;
            int x = index - (y * 5);
            try
            {
                int imageindex = (cards[index].covered) ? 0 : cards[index].picture;
                Graphics g = Canvas.CreateGraphics();
                g.DrawImage(cardImages.Images[imageindex], (x * card_distance) + 2, (y * card_distance) + 2);
            }
            catch { }
        }
        /// <summary>
        /// událost po kliknutí na kartu
        /// </summary>
        /// <param name="index">index karty na kterou bylo kliknuto</param>
        private void ClickOn(int index)
        {
            if (index != last_index && cards[index].enabled && cards[index].covered)
            {
                cards[index].covered = false; //otočit kartu
                click_count++;  //připočítat otočenou..
                Repaint(index); //překreslit kartu
                Thread.Sleep(600); //pozastavit, aby se balo postřehnout, která karta byla otočena

                if (click_count > 1) //pokud jsou obě karty otočeny
                {
                    if (cards[last_index].picture == cards[index].picture) //pokud se shodují
                    {
                        player[current_player]++; //připočítat body aktivnímu hráči
                        cards[index].enabled = false; //uzamčít kartu 1
                        cards[last_index].enabled = false; //uzamčít kartu 2
                        completed++;
                    }
                    else //karty nejsou shodné
                    {
                        cards[index].covered = true; //otočit zpět kartu 1
                        cards[last_index].covered = true; //otočit zpět kartu 2
                        if (IQ > 0) //<--
                        {
                            memory.Add(index); // AI si zapamatuje poslední karty
                            memory.Add(last_index); // AI si zapamatuje poslední karty
                            if ((memory.Count / 2) > IQ)
                            {
                                memory.RemoveAt(0);
                                memory.RemoveAt(1);
                            }
                        }
                        Repaint(index); //překreslit kartu
                        Repaint(last_index); //překreslit kartu
                        NextPlayer(); //přepnout hráče
                    }
                    click_count = 0; //vymazat počet otočených karet
                    last_index = -1; //vymazat paměť, která karta byla otočena jako první
                }
                else //je otočena pouze jedna karta
                {
                    last_index = index; //zapamatovat si, která karta je otočena jako první
                }

                switch (current_player) //zobrazit aktuální bodový stav
                {
                    case 0: laPlayer1.Text = player[0].ToString(); break;
                    case 1: laPlayer2.Text = player[1].ToString(); break;
                    case 2: laPlayer3.Text = player[2].ToString(); break;
                    case 3: laPlayer4.Text = player[3].ToString(); break;
                }


                if (completed == 10) //pokud byly všechny karty otočeny
                {
                    GameTimer.Stop(); //zastavit měření času
                    try
                    {
                        System.Media.SoundPlayer snd = new System.Media.SoundPlayer(@"C:\Windows\Media\tada.wav");
                        snd.Play(); //můžeme přehrát nějaký zvuk
                    }
                    catch { }
                    playing = false;

                    //výpis výsledků:
                    int winner = 0;
                    for (int i = 0; i < players_count; i++)
                    {
                        if (player[i] > player[winner]) winner = i;
                    }
                    int winners = 0;
                    for (int i = 0; i < players_count; i++)
                    {
                        if (player[i] == player[winner]) winners++;
                    }

                    if (winners > 1) MessageBox.Show("Remíza", "Pexeso info", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    else
                    {
                        int winner_num = winner + 1;
                        string msg = string.Format("Vítězem je hráč {0} se ziskem {1} bodů", winner_num, player[winner]);
                        MessageBox.Show(msg, "Pexeso info", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else //pokud jsou ještě nějaké neotočené karty
                {
                    if (click_on_stop) playing = false;
                    else
                    {
                        if (player_ai[current_player]) ClickOn(NextRandom(last_index)); //pokud aktuálně hraje počítač, tak otočí nějakou kartu
                    }
                }
            }
        }

        private int? CardFromMemory() //<--
        {
            foreach(int i in memory)
            {
                if (i != last_index && cards[i].enabled && cards[i].picture == cards[last_index].picture) return i;
            }
            return null;
        }

        /// <summary>
        /// výběr náhodné karty (pro AI)
        /// </summary>
        /// <param name="ignore">index již otočené karty</param>
        /// <returns></returns>
        private int NextRandom(int ignore)
        {
            Application.DoEvents();

            if(IQ > 0 && click_count > 0) //<--
            {
                int? i = CardFromMemory();
                if (i.HasValue) return i.Value;
            }

            int r;
            while (true)
            {
                r = random.Next(0, 20);
                if (r != ignore && cards[r].covered && cards[r].enabled) return r;
            }
        }
        /// <summary>
        /// přepnout hráče
        /// </summary>
        private void NextPlayer()
        {
            current_player++;
            if (current_player == players_count) current_player = 0;

            switch (current_player)
            {
                case 0:
                    {
                        laPlayer1.ForeColor = Color.YellowGreen;
                        laPlayer2.ForeColor = Color.Gray;
                        laPlayer3.ForeColor = Color.Gray;
                        laPlayer4.ForeColor = Color.Gray;
                        break;
                    }
                case 1:
                    {
                        laPlayer1.ForeColor = Color.Gray;
                        laPlayer2.ForeColor = Color.YellowGreen;
                        laPlayer3.ForeColor = Color.Gray;
                        laPlayer4.ForeColor = Color.Gray;
                        break;
                    }
                case 2:
                    {
                        laPlayer1.ForeColor = Color.Gray;
                        laPlayer2.ForeColor = Color.Gray;
                        laPlayer3.ForeColor = Color.YellowGreen;
                        laPlayer4.ForeColor = Color.Gray;
                        break;
                    }
                case 3:
                    {
                        laPlayer1.ForeColor = Color.Gray;
                        laPlayer2.ForeColor = Color.Gray;
                        laPlayer3.ForeColor = Color.Gray;
                        laPlayer4.ForeColor = Color.YellowGreen;
                        break;
                    }
            }

            Refresh();
        }

        // čas
        private void GameTimer_Tick(object sender, EventArgs e)
        {
            if (sec == 59)
            {
                min++;
                sec = 0;
            }
            else sec++;

            laTime.Text = string.Format("{0}:{1:00}", min, sec);
        }

        /// <summary>
        /// nová hra
        /// </summary>
        private void StartNewGame(int pcount)
        {
            IQ = Convert.ToInt32(nuLevel.Value);
            //vynulování všeho:
            click_on_stop = true;
            playing = true;
            last_index = -1;
            player[0] = 0; //bodovy stav
            player[1] = 0; //bodovy stav
            player[2] = 0; //bodovy stav
            player[3] = 0; //bodovy stav
            player_ai[0] = ai1.Checked; //má hrát pc?
            player_ai[1] = ai2.Checked; //má hrát pc?
            player_ai[2] = ai3.Checked; //má hrát pc?
            player_ai[3] = ai4.Checked; //má hrát pc?

            click_count = 0;
            completed = 0;
            players_count = pcount;
            current_player = pcount - 1; //nastavíme na posledního hráče, aby to skočilo v NextPlayer() na 1. hráče           
            NextPlayer(); // je to tu kvůli vybarvení labelů

            min = 0; //minuty hry
            sec = 0; //sekundy hry
            memory.Clear(); // <--
            //vytvořím pole všech čísel obrázků po dvou (1,1,2,2,3,3...)
            List<int> idx = new List<int>();
            for (int i = 1; i < 11; i++)
            {
                idx.Add(i);
                idx.Add(i);
            }
            //náhodně povybírám čísla z pole
            for (int i = 0; i < 20; i++)
            {
                int u = random.Next(0, idx.Count);
                cards[i].picture = idx[u];
                cards[i].enabled = true;
                cards[i].covered = true;
                idx.RemoveAt(u);
            }
            //překreslím plátno a vynuluji stav:
            Canvas.Refresh();
            laTime.Text = "0:00";
            laPlayer1.Text = "0";
            laPlayer2.Text = "0";
            laPlayer3.Text = "0";
            laPlayer4.Text = "0";
            GameTimer.Start();
            click_on_stop = false;
            if (player_ai[current_player]) ClickOn(NextRandom(last_index)); //pokud začíná pc..
        }

        private void btPlay_Click(object sender, EventArgs e)
        {
            if (playing) StopGame();
            int cnt = Convert.ToInt32(nuCount.Value);
            nuCount.Focus();
            StartNewGame(cnt);
        }

        private void btStop_Click(object sender, EventArgs e)
        {
            if (playing) StopGame();  //zastavení hry je takové jakési nedodělané, ale nechci to dělat moc složité
            nuCount.Focus(); //jen pro deaktivaci tlačítka
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            StopGame();
        }
    }

    struct Card
    {
        public int picture;  // index obrázku karty
        public bool enabled; // možnost otočení karty
        public bool covered; // true: karta je otočena obrázkem dolů, false: karta je otočena obrázkem nahorů
    }
}
C / C++ › Pexeso Boti
7. 4. 2016   #209728

ještě jsem ti tam doplnil vylepšení "inteligence" AI, míra inteligence se nastavuje proměnnou IQ (IQ značí počet kroků, které si AI zapamatuje) 

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;

namespace SWPexeso
{
    public partial class Form1 : Form
    {
        private const int players_count_max = 4; //pro jednoduchost jsem nastavil 4 hráče jako maximum
        private const int card_distance = 52; //muj rozestup karet
        bool click_on_stop, playing;
        int last_index, current_player, players_count, click_count, min, sec, completed;
        int IQ = 9; // počet kroků, které is AI zapamatuje <--
        int[] player = new int[players_count_max];
        bool[] player_ai = new bool[players_count_max];

        Random random = new Random();
        Card[] cards = new Card[20];

        List<int> memory = new List<int>();
                
        public Form1()
        {
            InitializeComponent();
        }

        public void StopGame()
        {
            click_on_stop = true;
            Application.DoEvents();
            GameTimer.Stop();
        }

        //překreslení celého plátna
        private void Canvas_Paint(object sender, PaintEventArgs e)
        {
            for (int x = 0; x < 5; x++)
            {
                for (int y = 0; y < 4; y++)
                {
                    int index = (y * 5) + x;
                    int imageindex = (cards[index].covered) ? 0 : cards[index].picture;
                    e.Graphics.DrawImage(cardImages.Images[imageindex], (x * card_distance) + 2, (y * card_distance) + 2);
                }
            }
        }
        //výběr myší
        private void Canvas_MouseDown(object sender, MouseEventArgs e)
        {
            if (player_ai[current_player] || !playing) return; //když hraje pc, nebo se nehraje, tak nic..
            else //pokud nehraje aktuálně počítač:
            {   //výpočet karty na kterou bylo klepnuto
                int x = e.Location.X / card_distance;
                int y = e.Location.Y / card_distance;
                if (x < 5 && y < 4)
                {
                    int index = (y * 5) + x;
                    ClickOn(index);
                }
            }
        }
        //překreslení pouze definované karty
        private void Repaint(int index)
        {
            int y = index / 5;
            int x = index - (y * 5);
            try
            {
                int imageindex = (cards[index].covered) ? 0 : cards[index].picture;
                Graphics g = Canvas.CreateGraphics();
                g.DrawImage(cardImages.Images[imageindex], (x * card_distance) + 2, (y * card_distance) + 2);
            }
            catch { }
        }
        /// <summary>
        /// událost po kliknutí na kartu
        /// </summary>
        /// <param name="index">index karty na kterou bylo kliknuto</param>
        private void ClickOn(int index)
        {
            if (index != last_index && cards[index].enabled && cards[index].covered)
            {
                cards[index].covered = false; //otočit kartu
                click_count++;  //připočítat otočenou..
                Repaint(index); //překreslit kartu
                Thread.Sleep(600); //pozastavit, aby se balo postřehnout, která karta byla otočena

                if (click_count > 1) //pokud jsou obě karty otočeny
                {
                    if (cards[last_index].picture == cards[index].picture) //pokud se shodují
                    {
                        player[current_player]++; //připočítat body aktivnímu hráči
                        cards[index].enabled = false; //uzamčít kartu 1
                        cards[last_index].enabled = false; //uzamčít kartu 2
                        completed++;
                    }
                    else //karty nejsou shodné
                    {
                        cards[index].covered = true; //otočit zpět kartu 1
                        cards[last_index].covered = true; //otočit zpět kartu 2
                        if (IQ > 0) //<--
                        {
                            memory.Add(index); // AI si zapamatuje poslední karty
                            memory.Add(last_index); // AI si zapamatuje poslední karty
                            if ((memory.Count / 2) > IQ)
                            {
                                memory.RemoveAt(0);
                                memory.RemoveAt(1);
                            }
                        }
                        Repaint(index); //překreslit kartu
                        Repaint(last_index); //překreslit kartu
                        NextPlayer(); //přepnout hráče
                    }
                    click_count = 0; //vymazat počet otočených karet
                    last_index = -1; //vymazat paměť, která karta byla otočena jako první
                }
                else //je otočena pouze jedna karta
                {
                    last_index = index; //zapamatovat si, která karta je otočena jako první
                }

                switch (current_player) //zobrazit aktuální bodový stav
                {
                    case 0: laPlayer1.Text = player[0].ToString(); break;
                    case 1: laPlayer2.Text = player[1].ToString(); break;
                    case 2: laPlayer3.Text = player[2].ToString(); break;
                    case 3: laPlayer4.Text = player[3].ToString(); break;
                }


                if (completed == 10) //pokud byly všechny karty otočeny
                {
                    GameTimer.Stop(); //zastavit měření času
                    try
                    {
                        System.Media.SoundPlayer snd = new System.Media.SoundPlayer(@"C:\Windows\Media\tada.wav");
                        snd.Play(); //můžeme přehrát nějaký zvuk
                    }
                    catch { }
                    playing = false;
                    //výpis výsledků:
                    if (player[0] == player[1] && player[2] == player[3] && player[1] == player[2]) MessageBox.Show("Remíza", "Pexeso info", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    else
                    {
                        int winner = 0;
                        for (int i = 1; i < players_count; i++)
                        {
                            if (player[i] > player[winner]) winner = i;
                        }
                        int winner_num = winner + 1;
                        string msg = string.Format("Vítězem je hráč {0} se ziskem {1} bodů", winner_num, player[winner]);
                        MessageBox.Show(msg, "Pexeso info", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else //pokud jsou ještě nějaké neotočené karty
                {
                    if (click_on_stop) playing = false;
                    else
                    {
                        if (player_ai[current_player]) ClickOn(NextRandom(last_index)); //pokud aktuálně hraje počítač, tak otočí nějakou kartu
                    }
                }
            }
        }

        private int? CardFromMemory() //<--
        {
            foreach(int i in memory)
            {
                if (i != last_index && cards[i].enabled && cards[i].picture == cards[last_index].picture) return i;
            }
            return null;
        }

        /// <summary>
        /// výběr náhodné karty (pro AI)
        /// </summary>
        /// <param name="ignore">index již otočené karty</param>
        /// <returns></returns>
        private int NextRandom(int ignore)
        {
            Application.DoEvents();

            if(IQ > 0 && click_count > 0) //<--
            {
                int? i = CardFromMemory();
                if (i.HasValue) return i.Value;
            }

            int r;
            while (true)
            {
                r = random.Next(0, 20);
                if (r != ignore && cards[r].covered && cards[r].enabled) return r;
            }
        }
        /// <summary>
        /// přepnout hráče
        /// </summary>
        private void NextPlayer()
        {
            current_player++;
            if (current_player == players_count) current_player = 0;

            switch (current_player)
            {
                case 0:
                    {
                        laPlayer1.ForeColor = Color.YellowGreen;
                        laPlayer2.ForeColor = Color.Gray;
                        laPlayer3.ForeColor = Color.Gray;
                        laPlayer4.ForeColor = Color.Gray;
                        break;
                    }
                case 1:
                    {
                        laPlayer1.ForeColor = Color.Gray;
                        laPlayer2.ForeColor = Color.YellowGreen;
                        laPlayer3.ForeColor = Color.Gray;
                        laPlayer4.ForeColor = Color.Gray;
                        break;
                    }
                case 2:
                    {
                        laPlayer1.ForeColor = Color.Gray;
                        laPlayer2.ForeColor = Color.Gray;
                        laPlayer3.ForeColor = Color.YellowGreen;
                        laPlayer4.ForeColor = Color.Gray;
                        break;
                    }
                case 3:
                    {
                        laPlayer1.ForeColor = Color.Gray;
                        laPlayer2.ForeColor = Color.Gray;
                        laPlayer3.ForeColor = Color.Gray;
                        laPlayer4.ForeColor = Color.YellowGreen;
                        break;
                    }
            }

            Refresh();
        }

        // čas
        private void GameTimer_Tick(object sender, EventArgs e)
        {
            if (sec == 59)
            {
                min++;
                sec = 0;
            }
            else sec++;

            laTime.Text = string.Format("{0}:{1:00}", min, sec);
        }

        /// <summary>
        /// nová hra
        /// </summary>
        private void StartNewGame(int pcount)
        {   //vynulování všeho:
            click_on_stop = true;
            playing = true;
            last_index = -1;
            player[0] = 0; //bodovy stav
            player[1] = 0; //bodovy stav
            player[2] = 0; //bodovy stav
            player[3] = 0; //bodovy stav
            player_ai[0] = ai1.Checked; //má hrát pc?
            player_ai[1] = ai2.Checked; //má hrát pc?
            player_ai[2] = ai3.Checked; //má hrát pc?
            player_ai[3] = ai4.Checked; //má hrát pc?

            click_count = 0;
            completed = 0;
            players_count = pcount;
            current_player = pcount - 1; //nastavíme na posledního hráče, aby to skočilo v NextPlayer() na 1. hráče           
            NextPlayer(); // je to tu kvůli vybarvení labelů

            min = 0; //minuty hry
            sec = 0; //sekundy hry
            memory.Clear(); // <--
            //vytvořím pole všech čísel obrázků po dvou (1,1,2,2,3,3...)
            List<int> idx = new List<int>();
            for (int i = 1; i < 11; i++)
            {
                idx.Add(i);
                idx.Add(i);
            }
            //náhodně povybírám čísla z pole
            for (int i = 0; i < 20; i++)
            {
                int u = random.Next(0, idx.Count);
                cards[i].picture = idx[u];
                cards[i].enabled = true;
                cards[i].covered = true;
                idx.RemoveAt(u);
            }
            //překreslím plátno a vynuluji stav:
            Canvas.Refresh();
            laTime.Text = "0:00";
            laPlayer1.Text = "0";
            laPlayer2.Text = "0";
            laPlayer3.Text = "0";
            laPlayer4.Text = "0";
            GameTimer.Start();
            click_on_stop = false;
            if (player_ai[current_player]) ClickOn(NextRandom(last_index)); //pokud začíná pc..
        }

        private void btPlay_Click(object sender, EventArgs e)
        {
            if (playing) StopGame();
            int cnt = Convert.ToInt32(nuCount.Value);
            StartNewGame(cnt);
        }

        private void btStop_Click(object sender, EventArgs e)
        {
            if (playing) StopGame();  //zastavení hry je takové jakési nedodělané, ale nechci to dělat moc složité
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            StopGame();
        }
    }

    struct Card
    {
        public int picture;  // index obrázku karty
        public bool enabled; // možnost otočení karty
        public bool covered; // true: karta je otočena obrázkem dolů, false: karta je otočena obrázkem nahorů
    }
}

změny jsou označeny zase <--

C / C++ › Pexeso Boti
6. 4. 2016   #209677

pro jistotu ti to sem dám komplet: 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
using System.Media;
namespace Pexeso
{
    public partial class Form6 : Form
    {
        Random random = new Random();
        PictureBox prvnioznaceny;
        public Form6()
        {
            InitializeComponent();
        }
        List<Image> Ikonky = new List<Image>();
        //private byte Pomoc = 0;
        int predchozi = -1;
        int pokrok = 0;
        int[] body = new int[4];
        int hrac = 0;

        private void Form6_Load(object sender, EventArgs e)
        {
            List<int> List = new List<int>();
            Random nahodne = new Random();
            int pocet_karet = 0;
            byte[] dvojice = new byte[18];

            while (pocet_karet < 36)
            {
                int karta = nahodne.Next(0, 18);
                if ((dvojice[karta] == 0) || (dvojice[karta] == 1))
                {
                    List.Add(karta);
                    dvojice[karta]++;
                    pocet_karet++;
                }
            }
            //MessageBox.Show(karty);
            for (int i = 0; i < 36; i++)
            {
                panel1.Controls[i].Tag = int.Parse(List[i].ToString());
            }
            Ikonky.Add(Image.FromFile(@"Ikonky\1.jpg"));
            Ikonky.Add(Image.FromFile(@"Ikonky\2.jpg"));
            Ikonky.Add(Image.FromFile(@"Ikonky\3.jpg"));
            Ikonky.Add(Image.FromFile(@"Ikonky\4.jpg"));
            Ikonky.Add(Image.FromFile(@"Ikonky\5.jpg"));
            Ikonky.Add(Image.FromFile(@"Ikonky\6.jpg"));
            Ikonky.Add(Image.FromFile(@"Ikonky\7.jpg"));
            Ikonky.Add(Image.FromFile(@"Ikonky\8.jpg"));
            Ikonky.Add(Image.FromFile(@"Ikonky\9.jpeg"));
            Ikonky.Add(Image.FromFile(@"Ikonky\10.jpg"));
            Ikonky.Add(Image.FromFile(@"Ikonky\11.jpg"));
            Ikonky.Add(Image.FromFile(@"Ikonky\12.jpg"));
            Ikonky.Add(Image.FromFile(@"Ikonky\13.jpg"));
            Ikonky.Add(Image.FromFile(@"Ikonky\14.jpg"));
            Ikonky.Add(Image.FromFile(@"Ikonky\15.jpg"));
            Ikonky.Add(Image.FromFile(@"Ikonky\16.jpg"));
            Ikonky.Add(Image.FromFile(@"Ikonky\17.jpg"));
            Ikonky.Add(Image.FromFile(@"Ikonky\18.jpg"));
            Ikonky.Add(Image.FromFile(@"Ikonky\19.png"));
            predchozi = -1;
        }
        private void pictureBox2_Click(object sender, EventArgs e)
        {
            PictureBox obrazek = (PictureBox)sender;
            
            int aktualni = (int)obrazek.Tag;
            obrazek.Image = Ikonky[aktualni];
            obrazek.Refresh();
            Thread.Sleep(600);

            if (predchozi < 0)
            {
                prvnioznaceny = obrazek;
                predchozi = aktualni;
            }
            else
            {
                if (aktualni == predchozi)
                {
                    body[hrac]++;
                    pokrok++;
                    prvnioznaceny.Enabled = false;
                    obrazek.Enabled = false;
                    //tady aktualizuješ label aktuálního hráče
                }
                else
                {
                    prvnioznaceny.Image = Ikonky[18];
                    obrazek.Image = Ikonky[18];
                    Application.DoEvents();
                    NextPlayer();
                }
                predchozi = -1;
            }


            if (pokrok > 17)
            {
                //tady si uděláš vyhodnocení hry (vyhlášení vítěze)
            }
            else
            {
                if (hrac > 0) PcPlay();
            }

        }

        private void NextPlayer()
        {
            hrac++;
            if (hrac == body.Length) hrac = 0;
            /*
            //tady si označíš a vybarvíš labely
            switch(hrac)
            {

            }
            */
        }

        private PictureBox VyberNahodnou()
        {
            List<PictureBox> pics = new List<PictureBox>();
            foreach (Control c in panel1.Controls)
            {
                if (c is PictureBox && c.Enabled)
                {
                    pics.Add((PictureBox)c);
                }
            }
            if (pics.Count == 0) return null;

            return pics[random.Next(0, pics.Count)];
        }

        private void PcPlay()
        {
            PictureBox box1 = VyberNahodnou();
            pictureBox2_Click(box1, null);
        }
    }
}

když tak ti to večer předělám celé

C / C++ › Pexeso Boti
6. 4. 2016   #209667

#24 Kubas129 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
using System.Media;
namespace Pexeso
{
    public partial class Form6 : Form
    {
        Random random = new Random();
        PictureBox prvnioznaceny;
        public Form6()
        {
            InitializeComponent();
        }
        List<Image> Ikonky = new List<Image>();

        int predchozi = -1;
        int pokrok = 0;
        int[] body = new int[4];
        int hrac = 0;

        private void Form6_Load(object sender, EventArgs e)
        {
            //tady to nech jak máš
        }
        private void pictureBox2_Click(object sender, EventArgs e)
        {
            PictureBox obrazek = (PictureBox)sender;
            
            int aktualni = (int)obrazek.Tag;
            obrazek.Image = Ikonky[aktualni];
            obrazek.Refresh();
            Thread.Sleep(600);

            if (predchozi < 0)
            {
                prvnioznaceny = obrazek;
                predchozi = aktualni;
            }
            else
            {
                if (aktualni == predchozi)
                {
                    body[hrac]++;
                    pokrok++;
                    prvnioznaceny.Enabled = false;
                    obrazek.Enabled = false;
                    //tady aktualizuješ label aktuálního hráče
                }
                else
                {
                    prvnioznaceny.Image = Ikonky[18];
                    obrazek.Image = Ikonky[18];
                    Application.DoEvents();
                    NextPlayer();
                }
                predchozi = -1;
            }


            if (pokrok > 17)
            {
                //tady si uděláš vyhodnocení hry (vyhlášení vítěze)
            }
            else
            {
                if (hrac > 0) PcPlay();
            }

        }

        private void NextPlayer()
        {
            hrac++;
            if (hrac == body.Length) hrac = 0;
            /*
            //tady si označíš a vybarvíš labely
            switch(hrac)
            {

            }
            */
        }

        private PictureBox VyberNahodnou()
        {
            List<PictureBox> pics = new List<PictureBox>();
            foreach (Control c in panel1.Controls)
            {
                if (c is PictureBox && c.Enabled)
                {
                    pics.Add((PictureBox)c);
                }
            }
            if (pics.Count == 0) return null;

            return pics[random.Next(0, pics.Count)];
        }

        private void PcPlay()
        {
            PictureBox box1 = VyberNahodnou();
            pictureBox2_Click(box1, null);
        }
    }

}

doufám, že teď si to už dokážeš dodělat

.NET › komunikace mezi okny c#
17. 2. 2016   #208714

Myslel jsem to tak, že můžeš labelu nastavit vlastnost Modifiers na public a pak přímo k labelu přistupovat z jiných formulářů.

C / C++ › Použití gettru() z jiné třídy
17. 2. 2016   #208713

#19 vitamin
nevím on to tak chtěl, zkoumá komunikaci tříd. Smysl celého návrhu je z jakéhokoliv pohledu mimo všeho co si dokážu představit.

.NET › komunikace mezi okny c#
17. 2. 2016   #208707

není nutné mít vše public, když to nepotřebuješ 

    public partial class MemoryGame : Form
    {
        
        Random location = new Random();// will set random location 
        List<Point> pointsCards = new List<Point>(); // get values of location

        PictureBox FirstCardOpen; 
        PictureBox SecondCardOpen;

        public Form1 mainData;
        public MemoryGame(Form1 mwn)
        {
            InitializeComponent();
            mainData = mwn;
            mainData = new Form1(); // toto tu máš proč?!!
        }

        public void MemoryGame_Load(object sender, EventArgs e)
        {
            lblPlayer1NameGame.Text = mainData.lblPlayer1Name.Text;
            mainData.lblPlayer2Name.Text = mainData.lblPlayer2Name.Text; // a toto je co?
.NET › chyba C#: premenna nepristup…
30. 10. 2015   #206009

#12 arrayList
pořád jsme u toho stejného, píšu to už po druhé: nepředáváš instanci Form1 do Form2. Kdyby ses podíval na to video, tak to nemůžeš udělat špatně.

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 form = new Form2(this);
            form.Show();
        }

        public void zapis_do_textboxu(string text)
        {
            textBox1.Text = text;
        }
    }
    public partial class Form2 : Form
    {
        Form1 fm1;
        public Form2(Form1 fm)
        {
            InitializeComponent();
            fm1 = fm;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            fm1.zapis_do_textboxu(uloz_text());
            Close();
        }

        private string uloz_text()
        {
            return = textBox1.Text;
        }
    }

ps,

Form1.zapis_do_textboxu(uloz_text());

toto je naprostý nesmysl, to můžeš použít pouze pro statické funkce

odpoved
C / C++ › ktere visual studio
19. 10. 2015   #205783
.NET › C# čtení HKEY_LOCAL_MACHINE…
16. 10. 2015   #205678

#3 hlucheucho
upravit v manifestu:

requestedExecutionLevel level="asInvoker" 

na:

requestedExecutionLevel level="requireAdministrator" 

samozřejmě, pokud má aktuální uživatel nižší oprávnění, tak nemůže spouštět aplikace s vyšším oprávněním.

.NET › usafe struct - 1.lekce
14. 8. 2015   #204316

#11 Matěj Andrle

je to uloženo klasicky, binárně

kod mohl vypadat takto:

#include <stdio.h>

struct ITEMDATA
{
char vlastnostA [32];
char vlastnostB [16];
char vlastnostC [16];
char vlastnostD [8];
char vlastnostE [8];
double hodnotaA;
long hodnotaB;
int hodnotaC;
short pole1[12];
byte pole2[256];
};

ITEMDATA library[100000];

...
FILE *fi = fopen(".......
...
fwrite(library, sizeof(ITEMDATA), 100000, fi);

.NET › usafe struct - 1.lekce
14. 8. 2015   #204314

#3 Matěj Andrle
Endialita - to by snad bylo jen prohozené. Ne?

.NET › usafe struct - 1.lekce
14. 8. 2015   #204313

#7 Kit
Rada č. 3

ta funkce se uvádí na netu na několika diskuzích, jen jsem ji zkopíroval, její obsah zatím nechápu.

.NET › usafe struct - 1.lekce
14. 8. 2015   #204312

Řekněme, že mám soubor který obsahuje 100 000 položek (v c++ uložených struktur o pevné velikosti) ve formátu:

{

char vlastnostA [32];

char vlastnostB [16];

char vlastnostC [16];

char vlastnostD [8];

char vlastnostE [8];

double hodnotaA;

long hodnotaB;

int hodnotaC;

short pole1[12];

byte pole2[256];

};

já budu muset zachovat tento formát (z důvodu kompatibility).

Jak data do souboru ukládat a připisovat bez toho, abych musel přepisovat celý soubor a nemusel data zapisovat po jedné položce. A samozřejmě pak data číst.

.NET › usafe struct - 1.lekce
14. 8. 2015   #204308

#4 Kit
nedělám žádný kompletní software, tento program dělám je v rámci "výuky".

Jestli někdo víte jak, jak se dá vytvořit program na uložení "unsafe struct" do souboru, tak prosím poraďte.

V uvedené příkladu se mi jedná o funkci "byte[] getBytes" - ta nepracuje správně.

C / C++ › Druhé nejmenší číslo v poli
6. 2. 2015   #198896

#14 hlucheucho
v mém příkladu jsem zakomentoval

if(ok == INT_MAX && pole[0]<INT_MAX)return pole[0];

kdyby někomu vadilo, že bude funkce vracet číslo INT_MAX, které v poli není..

on je skoro stejný nesmysl vracet jakékoliv číslo jako druhé nejmenší, když jsou všechna čísla shodná

ps, ani nevím jestli lze nazvat posloupností, pole stejných čísel

C / C++ › procházení vektoru - iteráto…
5. 2. 2015   #198841

Díky za reakce. Rychlost provádějí jsem na mysli neměl, spíš mi šlo správu paměti.

C / C++ › procházení vektoru - iteráto…
5. 2. 2015   #198829

Měl bych doplňující otázku:
Jakou funkci by jste použili? Nebo je to úplně jedno?

void Fc1()
{
 //1. verze
 for(int i=0; i<100000; i++)
 {
   v1.push_back(hodnota());
   v2.push_back(hodnota());
 }
}
//---------------------------------------------------------------------------
void Fc2()
{
 //2. verze
 for(int i=0; i<100000; i++)v1.push_back(hodnota());
 for(int i=0; i<100000; i++)v2.push_back(hodnota());
}
//---------------------------------------------------------------------------

 

 

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