Diskuze: Obchod
V předchozím kvízu, Online test znalostí GameMakeru, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 10 zpráv z 10.
//= 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.
Přestože jde o banalitu, těžko ti v tom někdo tu chybu najde. Máš
totiž strašlivě neintuitivní kód. Mračna ifů a celé špatně navržené.
Už v prvním eventu mi to mozek odmítl číst. Pokud na svém způsobu psaní
kódu opravdu trváš, nezbude, než aby sis taky sám odbugovával. Jinak
doporučuji celý kód přestavět. Do ini bych nelezl při každém prdu a
většinu opakovaných postupů přepsal do samostatných skriptů.
Pak totiž píšeš místo
if ini_kdesi image_index=cosi else image_index=kdesi
else ini_kamsi image_index=kdosi else image_index=kdysi
jen něco jako
"if enabled(postava) set_active(postava);
Nebo alespoň můžeš doplnit komenty.
Kdo má proboha vědět, co je třeba image_index=12?
Ja sa omlúvam. Viem, že kód nie je najlepší ale momentálne som
naučený na takýto štýl. Viem, že sa musím od tohto odnaučiť a začať
to písať trochu inak. Pridal som tam poznámky, dúfam, že to tak stačí.
Budem rád za každú pomoc.
Ďakujem
Prvá postava
Create
image_speed=0;
{
ini_open("c&s.ini")
s=ini_read_real("Shop","c_1",0)
if (s>0)
{
image_index=0 //kupene ale neaktivovane
}
else
{
image_index=12; // zamknute
}
a=ini_read_real("Active","active",0)
if (a=1)
{
image_index=13; // aktivovane
}
else if (a>1)
{
image_index=0; // neaktivovane ale kupene
}
ini_close();
}
Left Pressed
{
ini_open("c&s.ini")
s=ini_read_real("Shop","c_1",0)
coins=ini_read_real("Coins","coins",0);
if (s=0) && (coins>=10) /kupovanie
{
a=ini_write_real("Active","active",0)
coins-=10
s=ini_write_real("Shop","c_1",1)
ini_write_real("Coins","coins",coins);
image_index=0 //kupene
}
else if (coins<10) && (s<1)
{
msg = show_message_async("You do not have enough money!")
}
a=ini_read_real("Active","active",0)
if (s=1) && (a>=0) //kupene ale neaktivovane
{
a=ini_write_real("Active","active",1)
image_index=13; //aktivovane
}
ini_close();
}
Druhá postava
Create
image_speed=0;
{
ini_open("c&s.ini")
s=ini_read_real("Shop","c_2",0)
if (s>0)
{
image_index=1 //kupene
}
else
{
image_index=12; //zamknute
}
a=ini_read_real("Active","active",0)
if (a=2)
{
image_index=14; //aktivovane
}
a=ini_read_real("Active","active",0)
if (a>2) && (a<2)
{
image_index=1; //kupene ale neaktivovane
}
ini_close();
}
Left Pressed
{
ini_open("c&s.ini")
s=ini_read_real("Shop","c_2",0)
coins=ini_read_real("Coins","coins",0);
if (s=0) && (coins>=15) //kupovanie
{
a=ini_write_real("Active","active",0)
coins-=15
s=ini_write_real("Shop","c_2",1)
ini_write_real("Coins","coins",coins);
image_index=1 //kupene
}
else if (coins<15) && (s<1)
{
msg = show_message_async("You do not have enough money!")
}
a=ini_read_real("Active","active",0)
if (s=1) && (a>=0) //kupene ale neaktivovane
{
a=ini_write_real("Active","active",2)
image_index=14; //aktivovane
}
ini_close();
}
Mě se neomlouvej, ty to píšeš špatně. A kompletně špatně.
Chyby se tam tvoří právě tím stylem psaní.
Můžeš mi vysvětlit, co by asi tak dělala podmínka :
if (a>2) && (a<2)
Ak je "a"väčšie a ak je "a" menšie. Viem, že to nie je dobre, musím sa to naučiť písať inak a hlavne správne!!
A jaké a je podle tebe větší než 2 a současně menší
než 2?
Já ti to řeknu: žádné.
Mysli na to, že tých postáv tam bude 12. Preto je tam väčšie aj menšie
Ja som nenapísal, že tých postáv na nákup bude viacej
To jsi pravda nenapsal, ale to mi došlo. Na tom ale nesejde.
Měl bys to smazat a začít znovu.
Vyjdi z tohoto:
if !koupeno && player.money>=cena_postavy { koupeno=true; player.money-=cena_postavy; }
else { with(vsechny_postavy) { active=false; } active=true; }
A koukám, že nesmyslnost té podmínky jsi stále nepochopil. Zkusím to
napsat jinak.
Čísla 0,1,-1,-2 jsou menší než 2. Čísla 3,4,5,10,28 jsou větší než
2.
Neexistuje žádné číslo, které je menší než 2 a současně větší než
2.
A místo psaní se nad tím chvíli zamysli. Já mám moc práce - jdu se koukat na film.
Aha..no jasné.. diky moc
Zobrazeno 10 zpráv z 10.