Diskuze: Stisknutí klávesy 2x po sobě
V předchozím kvízu, Online test znalostí GameMakeru, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 21 zpráv z 21.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí GameMakeru, jsme si ověřili nabyté zkušenosti z kurzu.
Myslím, že ti to takto nepôjde.
Skús dať do step event toto:
if ((keyboard_check_pressed (vk_shift)) = true) //pokud je stisknutí klávesy shift dvakrát pravda
{
if (premenna = true)
{
objekt0.image_speed = 0.1; //objekt0 bude mít rychlost obrázku 0.1
premenna = false;
}
else
{
objekt0.image_speed = 1; //objekt0 bude mít rychlost obrázku 1
premenna = true;
}
}
A do create event daj:
premenna = true;
Ja zase nerozumiem, prečo tam máš to číslo 2. To je akoby si chcel dať, že ak sa tlačidlo stlačí 2-krát, tak sa vyhodnotí príslušný skript, ale v skutočnosti to, čo je pred dvojkou, nieje premenná, ale funkcia. Tá sa nedá násobiť. Gamemaker síce funguje inak ako iné programovacie jazyky, ale funkcie nejde počítať. Môžeš maximálne skombinovať premenné tak, že sa to bude kontrolovať súčasne a samostatne, nezávislé od seba
Tá dvojka s tým nijako nesúvisí.
Ako skript funguje?
V "create event" vznikne premenna s názvom "premenna", pretože aby premenná existovala, musí mať nejakú hodnotu ( ak by bola premenná v "step event", tak by jej hodnota bola nemenná, pretože pri každom stepe hry sa tam vykoná funkcia a s ňou sa stále zadá začiatočná hodnota premennej - v tomto prípade true a animácia by išla stále rovnako)
Create event a step event idú súčasne (nezávisle od seba) a preto musí
byť v "step ev." najprv funkcia (ak stlačíš shift) a až potom funkcia (ak
je premenná true).
Druhá podmienka ti zisťuje, či prebieha prvá funkcia (teda ide obrázok
pomaly), alebo druhá funkcia. Ak prebieha prvá funkcia, hodnota premennej sa
zmení na false (false= pomaly).
Potom, pri druhom kliknutí sa hodnota nebude zhodovať s podmienkou a tak
prebehne funkcia else.
Tam sa zase zmení na true a tak sa to opakuje.
Snažil som sa ti to vysvetliť laicky, a tak dúfam, že si ma pochopil
Ešte niečo?
Nejjednodušší by bylo si tam zavést počítadlo stisků.
Ten první kód byl taky skoro správně, stačí trochu upravit:
if (keyboard_check_pressed (vk_shift) == true) //je-li stisknut shift
{
//přepínat mezi speed 0 a speed 0.1
if (image_speed == 0) image_speed=0.1 else image_speed=0;
}
Akorát to spouští ve Windowsech centrum usnadnění
5x shift = funkce jedním prstem
To je dobré
Je to jednoduché a efektívne. Od teraz to budem používať
Edit: Raz som tento spôsob použil, ale akosi som naň zabudol
Čistá podmínka je vždy if...else. Jinak skrytou podmínku obsahují
různé
konstrukce jako while, for , do..until nebo switch.
Pokud ale myslíš seznam funkcí jazyka GML,
tak jsou všechny pohromadě snad jen v souboru Game_Maker.chm
Jinak je najdeš mírně rozházené v různých tutoriálech a podobně.
Ono je stejně lepší je studovat podle významu než podle abecedy.
Nepochopil jsem tvou definici rozdílu mezi "čistou" a "špinavou" podmínkou. Každý jazyk nabízí nějaké konstrukce pro řízení běhu programu, které v konečném důsledku přeloží na podmíněný či nepodmíněný skok na nějakou adresu.
Podle mne je spousta konstrukcí "čistých". Jen nejsou všechny doporučovány kvůli nepřehlednosti. Někdy může být lepší switch s jedním case, jindy je názornější a vhodnější mít třeba 5 elseif za sebou.
Myslel jsem tím jen tolik, že if...else nedělá už nic jiného.
O použitelnosti nebo efektivitě to být nemělo.
Co je nejasné? Že if je podmínka? Nebo že ostatní jsou
zároveň otočka cyklu? Nebo že switch je více podmínek v jednom?
Nie, nie, nie!
Ja som len nepochopil tú tvoju vetu:
"že if...else nedělá už nic jiného."
Zobrazeno 21 zpráv z 21.