[C#] Pokud se splní jeden if, na ostatní if-y nebrat zřetel – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

[C#] Pokud se splní jeden if, na ostatní if-y nebrat zřetel – C / C++ – Fórum – Programujte.com[C#] Pokud se splní jeden if, na ostatní if-y nebrat zřetel – C / C++ – Fórum – Programujte.com

 

MartiniBaby
~ Anonymní uživatel
8 příspěvků
10. 5. 2011   #1
-
0
-

Zdravím, dělám hru v C#, konkrétně Arkanoid. Při kolizi míčku s cihlou zavolám metodu, která řeší kam se má míček odrazit. Směry mám vyřešené, včetně hrany, ale nemůžu přijít na to, jak udělat, aby když splním jednu podmínku (tj. změním směr), aby se nesplnili už ostatní podmínky a "vyjel" z té metody. Protože když zmením třebas rychlost z (-x, -y) na (-x, -y), tak se mi splníTady přikládám tu metodu, v které jsou řešeny odrazy. Předem děkuji za radu, jak tento problém vyřešit.

       public void OdrazMickuCihla(Sprite micek, Vector2 CihlaStretnuti)

{
if (micek.Rychlost.X < 0 && micek.Rychlost.Y < 0) //micek leti (-x;-y)
{
if (CihlaStretnuti.X < 37 && CihlaStretnuti.X > -21) //micek nalitne na strechu cihly
micek.Rychlost = new Vector2(micek.Rychlost.X, -micek.Rychlost.Y);
else if (CihlaStretnuti.X >= 37) //micek nalitne na hranu cihly
micek.Rychlost = new Vector2(-micek.Rychlost.X, micek.Rychlost.Y);
}

else if (micek.Rychlost.X < 0 && micek.Rychlost.Y > 0) //micek leti (-x;y)
{
if (CihlaStretnuti.X >= 37 ) //micek nalitne na hranu cihly
micek.Rychlost = new Vector2(-micek.Rychlost.X, micek.Rychlost.Y);
else if (CihlaStretnuti.X < 37) //micek nalitne na strechu cihly
micek.Rychlost = new Vector2(micek.Rychlost.X, -micek.Rychlost.Y);
}

else if (micek.Rychlost.X > 0 && micek.Rychlost.Y < 0) //micek leti (x;-y)
{
if (CihlaStretnuti.X <= -17) //micek nalitne na hranu cihly
micek.Rychlost = new Vector2(-micek.Rychlost.X, micek.Rychlost.Y);
else if (CihlaStretnuti.X > -17) //micek nalitne na strechu cihly
micek.Rychlost = new Vector2(micek.Rychlost.X, -micek.Rychlost.Y);
}

else if (micek.Rychlost.X > 0 && micek.Rychlost.Y > 0) //micek leti (x;y)
{
if (CihlaStretnuti.X <= -17) //micek nalitne na hranu cihly
micek.Rychlost = new Vector2(-micek.Rychlost.X, micek.Rychlost.Y);
else if (CihlaStretnuti.X > -17) //micek nalitne na strechu cihly
micek.Rychlost = new Vector2(micek.Rychlost.X, -micek.Rychlost.Y);
}

else if (micek.Rychlost.X == 0) //micek leti kolmo
{
micek.Rychlost = new Vector2(micek.Rychlost.X, -micek.Rychlost.Y);
}
}

Nahlásit jako SPAM
IP: 86.49.75.–
MartiniBaby
~ Anonymní uživatel
8 příspěvků
10. 5. 2011   #2
-
0
-

nemůžu EDITovat, tak doplňuji větu...

...Protože když zmením třebas rychlost z (-x, -y) na (-x, -y), tak se mi splní podmínka, která slouží pro rychlost (-x,-y) a znova změní směr rychlosti.

Nahlásit jako SPAM
IP: 86.49.75.–
nahodnykolemjdouci
~ Anonymní uživatel
1 příspěvek
10. 5. 2011   #3
-
0
-

přidat return?

Nahlásit jako SPAM
IP: 84.42.174.–
MartiniBaby
~ Anonymní uživatel
8 příspěvků
10. 5. 2011   #4
-
0
-

return mi bohužel nepomohl

Nahlásit jako SPAM
IP: 86.49.75.–
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
10. 5. 2011   #5
-
0
-

To MartiniBaby : tak to by melo jit i s tim else if treba mas nedke jinde chybu

Nahlásit jako SPAM
IP: 82.99.180.–
MartiniBaby
~ Anonymní uživatel
8 příspěvků
10. 5. 2011   #6
-
0
-

Chyba jinde zřejmě není, když odstraním ten jeden směr, který mi to hned zpátky změní, tak se to odrazí v pořádku... jakmile ho tam vrátím, i když je else-if, tak proběhne a změní mi to zpátky na mínusovou Rychlost.Y a pokračuje to dál v místě bez odrazu. :(

Nahlásit jako SPAM
IP: 86.49.75.–
nervak0
Věrný člen
10. 5. 2011   #7
-
0
-

Nevidím způsob, jak by to mohlo projít víc než jednou podmínkou. Takže se ti to nezmění "hned zpátky" ale až při dalším průchodu. Nějak mi tam na začátku nepasuje to -21 a pokud není chyba v tom, tak je v něčem mimo tuto metodu.

Nahlásit jako SPAM
IP: 213.211.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 111 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý