Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: Zaokrouhlování dočasné variable

Ostatní jazyky GameMaker GameMaker Zaokrouhlování dočasné variable

Aktivity (1)
Avatar
Adam Dvořák
Neregistrovaný
Avatar
Adam Dvořák:5.2.2012 13:34

Jsem začátečník a pomocí návodu na HealthBar jsem vyrobil minutku. Při eventu Create mám

hodiny=get_integer("Zadejte hodinu:", 0)*60*60;
minuty=get_integer("Zadejte minuty:", 0)*60;
sekundy=get_integer("Zadejte sekundy:", 0);
health=hodiny+minuty+sekundy
global.health_start=health

Takže se mě to zeptá na hodiny, minuty a sekundy.
Když se tam potom odpočítává čas po sekundách, tak to funguje..
Ale já chci vypsat na plochu zbývající čas.
Na sekundy to funguje:

draw_text(304,16,health)

Pak jsem taky zkoušel na minuty:

draw_text(304,16,health/60)

a na hodiny:

draw_text(304,16,health/3600)

Jenže při výpisu je například:
Zbývá 1.28 hodin.
A to je nepěkné....
Nejde nějak udělat, aby se to desetinné číslo smazalo?
Nebo případně zaokrouhlilo?
Děkuji moc ;)

 
Odpovědět 5.2.2012 13:34
Avatar
David Jančík [sczdavos]
Tým ITnetwork
Avatar
Odpovídá na Adam Dvořák
David Jančík [sczdavos]:5.2.2012 14:34

Dobrý den,
už jsem vám posílal odkaz na tento soubor:
http://dl.dropbox.com/…4f76f5a1.gmk
Udělejte to obdobně. Načtěte si hodiny, minuty a vteřiny a z nich pak udělejte - totalseconds (vynásobíte hodiny 3600 a minuty 60 a vše sečtete) Poté se vám s tím bude lépe pracovat.
Kód pro počítání vložíte do eventu alarmu s nastavením provádění akcí po rychlosti místnosti (room_speed) tím pádem se provedou každou vteřinu.

Na výstupu pak budete vykreslovat zmenšující se obdélníček, který bude měnit pouze svoji šířku (x2) dle zbývajícího počtu totalseconds.

Máte například 1 hodinu, 1 minuty a 1 vteřinu

//nastavení total seconds
totalseconds = (hours*3600)+(minutes*60)+seconds;

//nastavení alarmu
alarm[0] = room_speed;

//kód v alarmu
if (totalseconds > 0)
{
    totalseconds -= 1;
    alarm[0] = room_speed;
}

//a hodnotu totalseconds si někam uložíte pak podle toho vypočítáte procenta -> v eventu draw
draw_rectangle(0,50,(totalseconds / počáteční_hodnota_total_seconds)*100, 50, true);
Nahoru Odpovědět 5.2.2012 14:34
Čím více času dostaneš, tím méně ho máš.
Avatar
Adam Dvořák
Neregistrovaný
Avatar
Odpovídá na David Jančík [sczdavos]
Adam Dvořák:5.2.2012 15:14

Tak děkuji... Ale, existuje to zaokrouhlování?

 
Nahoru Odpovědět 5.2.2012 15:14
Avatar
David Jančík [sczdavos]
Tým ITnetwork
Avatar
Odpovídá na Adam Dvořák
David Jančík [sczdavos]:5.2.2012 15:16

Ano,
existují tři fce
round -> zaokrouhlí 5.2 -> 5; 5.6 -> 6
floor -> 5.6 -> 5
ceil -> 5.2 -> 6

Nahoru Odpovědět 5.2.2012 15:16
Čím více času dostaneš, tím méně ho máš.
Avatar
Adam Dvořák
Neregistrovaný
Avatar
Odpovídá na David Jančík [sczdavos]
Adam Dvořák:5.2.2012 22:31

Děkuji moc!!!

 
Nahoru Odpovědět 5.2.2012 22:31
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.