
Visual Basic
Dobrý den, naprogramoval jsem v programu Visual Basic hru pexeso, má však jeden problém pokud klikám rychle na karty, program přestane stíhat je otáčet zpět a hra nefunguje jak by měla....celé dny nad tím přemýšlím ale stále nemohu přijít na to jak karty nějak "zamknout" aby nebylo možné naklikat více karet a tím tak "zblnout" program.
pexeso-kod-txt <---- Zde je kod v poznámkovém bloku.
A opravdu čekáš, že budou lidi zkoumat zdroják, ve kterých nepojmenováváš ani tlačítka? Kdo si myslíš, že bude luštit, co je button1, button2?
Proč tam máš milionkrát ten case? Udělej si procedury pro ty asi 3 případy, bude to mnohem přehlednější.
Pro kliknutí můžeš udělat jednu společnou udalost a přiřadit ji všem obrázkům. V property Sender máš obrázek, na který bylo kliknuto. Tento kód tam máš 36x. Proč?
I kdybys napsal jednu proceduru, které předáš hodnotu TAG a nechal si tam svých 36 událostí pro jednotlivé obrázky, tak by to bylo lepší, ze kterých bys ji volal.
Pak si jednoduše ošetříš to, že pokud byudeš mít otočeny 2 obrázky, tak metoda pro klik nebude reagovat, dokud se karty neotočí zpět.
Vytvořil jsi program se 3 000 řádky a přitom by ses vešel do desetinny. Chápu, že začínáš, ale u programování je potřeba přemýšlet, společné části nekopírovat v programu dokola, ale dát je do procedury a volat, kde potřebuješ.
Jsem opravdu začátečník a to co jsi mi napsal je na mě moc složité
Ono je to právě mnohem jednodušší, než to co jsi napsal ty.
Kód sa mi študovať nechce, ale sprav si semafor(premennú=0), v ktorú inkrementuješ pri otočení karty. Dekrementuješ pri zavretí. Pri každom kliknutí na kartu, ju budeš testovať. Ak bude mať hodnotu 2, kliknutie na otočenie karty budeš ignorovať.
To by mohlo fungovat......
Kým to odladíš, nechaj si jej hodnotu niekde zobrazovať.