anologový/digitální odpočítávač

Pokud si nevíte s něčím rady ohledně tvorby v Game Makeru - pište sem!
Odpovědět [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable
Echodriller
Příspěvky: 24
Registrován: srpen 6, 2011, 8:16 pm
Facebook: http://facebook.com/
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

anologový/digitální odpočítávač

Příspěvek od Echodriller » srpen 7, 2011, 12:46 pm

Mám ručičkový odpočítávač na 60 sekund a chci aby po kliknutí myši se přepínalo mezi digitálním a ručičkovým. Potřebuji aby oba ukazovali stejný čas kdykoliv se přepnou. Zkoušel jsem mnoho variant a ne a ne na to přijít. Error mi to žádný neháže. Uploadoval jsem .gmk soubor pro lepší pochopení. Byl bych rád kdyby mi někdo řekl kde mám chybu. Díky.
Přílohy
Hodiny.zip
(67.8 KiB) Staženo 146 x

Echodriller
Příspěvky: 24
Registrován: srpen 6, 2011, 8:16 pm
Facebook: http://facebook.com/
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: anologový/digitální odpočítávač

Příspěvek od Echodriller » srpen 7, 2011, 4:55 pm

To opravdu nikdo neví kde je chyba?

Uživatelský avatar
Bedikk
Příspěvky: 149
Registrován: srpen 5, 2011, 10:43 pm
Facebook: http://www.facebook.com/bedikk
Bydliště: Liberec
Kontaktovat uživatele:

Re: anologový/digitální odpočítávač

Příspěvek od Bedikk » srpen 7, 2011, 5:01 pm

Nemám nainstalovaný GM, takže přímo nebudu mluvit k tvému příkladu, ale já osobně bych to řešil naprosto standardně. Počítal bych proměnou čas, která by se konstantně snižovala a pak bych měl další proměnou - třeba show - která by v create byla deklarovaná na 0 a při kliku by se checknulo, jestli je nastavená na 0 ->

Kód: Vybrat vše

if !show 
  begin
    show = 1;
  end;
  else
  begin
    show = 0;
  end;
a v drawu bych měl jednoduchou podmínku, která by rozlišovala vykreslování ->

Kód: Vybrat vše

if !show
  begin
    //kód pro vykreslení digitálního budíku
  end;
  else
  begin
    //kód pro vykreslení analogového budíku
  end;

Uživatelský avatar
chylex
Příspěvky: 59
Registrován: srpen 6, 2011, 1:51 pm
Kontaktovat uživatele:

Re: anologový/digitální odpočítávač

Příspěvek od chylex » srpen 7, 2011, 5:05 pm

Jak psal Bedikk, ale při kliknutí proveď tohle:

Kód: Vybrat vše

show=!show;
Provede to to stejné, ale je to kratší a přehlednější ;).
Prázdno...

Echodriller
Příspěvky: 24
Registrován: srpen 6, 2011, 8:16 pm
Facebook: http://facebook.com/
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: anologový/digitální odpočítávač

Příspěvek od Echodriller » srpen 7, 2011, 5:05 pm

Nějak tímto způsobem to mám řešené, ale nezvládám převod z analogového zobrazování času na digitální. Respektive vím jak na to, neumím ale správně použít Game Maker.

Uživatelský avatar
Bedikk
Příspěvky: 149
Registrován: srpen 5, 2011, 10:43 pm
Facebook: http://www.facebook.com/bedikk
Bydliště: Liberec
Kontaktovat uživatele:

Re: anologový/digitální odpočítávač

Příspěvek od Bedikk » srpen 7, 2011, 5:12 pm

Budeme počítat v teoretické rovině, že jedno otočení je 100 % času, tedy těch 60 sekund. Dále budeme počítat s tím, že 30 stepů = 1 sekunda, takže 30 x 60 = 1800 stepů na vypršení času.

Další myšlenka, 360° = 100 %. Ručička se prostě za 60 sekund musí otočit o 100 %. Budeme vycházet z toho, že 0,6 sekundy je 1 % a 3,6° je také 1 %. Na tobě je teď jednoduchá věc - při zobrazení analogových hodin otáčet ručičku o správný počet procent, o správný úhel. Tak bych to asi řešil já.

chylex: Good point! :D

Echodriller
Příspěvky: 24
Registrován: srpen 6, 2011, 8:16 pm
Facebook: http://facebook.com/
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: anologový/digitální odpočítávač

Příspěvek od Echodriller » srpen 7, 2011, 5:22 pm

Nato jsem také přišel i správně zapsal do GML. Zvlášť digitální a zvlášť analogové mi fungovaly na jedničku. Ale někde v kódu mám chybu při převodu na digitální čas. Napíšu sem tedy jak jsem to řešil.
(Jsou zde nějaké kraviny, protože jsem se u tohoto problému zasekl tak jsem neměl čas to doladit. Externích souborů si nevšímejte.)

:gmico127:

Kód: Vybrat vše

global.stopky = sprite_add(working_directory+'\Images\stopky.png',1,0,0,100,100)
global.sipka = sprite_add(working_directory+'\Images\sipka.png',1,0,0,18,67)
global.cisla = sprite_add_sprite(working_directory+'/Images/digits2.gmspr')
global.dgstopky = sprite_add(working_directory+'/Images/digits.png',-1,0,0,0,0)
global.maska = sprite_add(working_directory+'/Images/digits_maska.png',-1,0,0,0,0)

typ = 0
i = 0
alarm[0] = 1
:gmico136: alarm[0]

Kód: Vybrat vše

i +=0.2
alarm[0] = 1
:gmico136: alarm[1]

Kód: Vybrat vše

if real(subimg_J) = 0
    {
    subimg_D -= 1
    subimg_J = 9
    } 
    else 
    {
    subimg_J -= 1
    }
if real(subimg_D) = -1 
    {
    game_restart()
    }
alarm[1] = 30
:gmico133: (Global Left Released Button)

Kód: Vybrat vše

if typ=0
    {
    cas = 60-i/6
    subimg_D = string_char_at(cas,1)
    subimg_J = string_char_at(cas,2)
    alarm[1] = 30
    typ=1
    } 
    else 
    {
    typ=0
    }
:gmico129:

Kód: Vybrat vše

if typ = 0
    {
    draw_sprite(global.stopky,-1,x,y)
    draw_sprite_ext(global.sipka,1,object0.x,object0.y,1,1,i,c_white,1)
        if i >= 360
            {
            show_message("Pozdě!")
            game_restart()
            }
    }
    else
    {
    draw_sprite(global.dgstopky,-1,18,35);
    draw_sprite(global.maska,-1,37,30);
    draw_sprite(global.cisla,subimg_D,50,50);
    draw_sprite(global.cisla,subimg_J,100,50);
    }
Pro lepší pochopení můžete využít mého uploadovaného .gmk souboru.

Echodriller
Příspěvky: 24
Registrován: srpen 6, 2011, 8:16 pm
Facebook: http://facebook.com/
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: anologový/digitální odpočítávač

Příspěvek od Echodriller » srpen 7, 2011, 9:47 pm

Pořád nevim jak na to.

Uživatelský avatar
Loric
Příspěvky: 208
Registrován: srpen 6, 2011, 9:01 am
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: anologový/digitální odpočítávač

Příspěvek od Loric » srpen 7, 2011, 10:27 pm

v objektu object0 všechno smaž a dej tam toto:

anebo tady je to upravene.. hodiny.gmk

:gmico127: create

Kód: Vybrat vše

maxCas = 60 * room_speed;
cas = maxCas;

typ = 0;
:gmico135: step

Kód: Vybrat vše

cas -= 1;

if (cas < 0)
{
    show_message("Pozdě!");
    game_restart();
}
:gmico133: Glov left released

Kód: Vybrat vše

typ = !typ;
:gmico129: draw

Kód: Vybrat vše

if (typ == 0)
{
    draw_sprite(global.stopky,-1,x,y)
    draw_sprite_ext(global.sipka,1,object0.x,object0.y,1,1, (maxCas - cas) / (maxCas / 360),c_white,1)
}
else
{
    draw_sprite(global.dgstopky,-1,18,35);
    draw_sprite(global.maska,-1,37,30);
    draw_sprite(global.cisla,round(cas / room_speed) div 10,50,50);
    draw_sprite(global.cisla,round(cas / room_speed) mod 10,100,50);
}


Echodriller
Příspěvky: 24
Registrován: srpen 6, 2011, 8:16 pm
Facebook: http://facebook.com/
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: anologový/digitální odpočítávač

Příspěvek od Echodriller » srpen 7, 2011, 11:38 pm

Wow, tak toto je nádhera. Krásně jsi to zjednodušil a odstranil kraviny. mod a div jsem neznal, má to velmi zajímavé využití. Díky moc, máš to u mě. Příště radím já tobě :lol:

Odpovědět
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 7 hostů