Arkanoid ve visual basicu   otázka

VB.NET, WinForms

Dobry den, programuji hru arkanoid ve visual basicu a mám takový problém. Nevím jak udělat, že když se kulička dotkne cihly tak má zmizet a odrazit se zase od cihly pryč.

Teď mi to funguje tak, že míček projde cihlou, cihla zmizí ale míček se neodrazí.

Děkuji za odpoveď.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A čo takto uviesť kód, resp. konkretizovať, s čím máte problém?

S tými informáciami, ktoré ste poskytli, môžeme akurát tak skúšať možnosti.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Private Sub casovac_kulicka_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles casovac_kulicka.Tick

If jdidoprava = True Then

kulicka.Left += 1

Else

kulicka.Left -= 1

End If

If jdinahoru = True Then

kulicka.Top -= 1

Else

kulicka.Top += 1

End If

If kulicka.Left <= plocha.Left Then

jdidoprava = True

End If

If kulicka.Left + kulicka.Width >= plocha.Right Then

jdidoprava = False

End If

If kulicka.Top <= plocha.Top Then

jdinahoru = False

End If

If kulicka.Top + kulicka.Height >= plocha.Bottom Then

jdinahoru = True

End If

If kulicka.Bottom = jezdec.Top Then

jdinahoru = True

End If

If kulicka.Top = cihla1.Left Then

cihla1.Visible = False

End If

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Opravdu nikdo nevíte jak to udělat?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Udělat proměnný s pozicí kuličky X a Y. Potom proměnný s rychlostí míčku v ose X a Y. Při nárazu míčku (cihla zmizí, takže to už tam někde je) se rychlosti vynásobí třeba -1

PoziceX = 0
PoziceY = 0
RychlostX = 0.5
RychlostY = 0.6
...

'Někde do cyklu dát, případně zabalit do funkce, nebo tak něco
If NarazDoCihly then     'Pokud míček narazí do cihly
     ZmizeniCihly()
     PricteniBodu()
     RychlostY = RychlostY * -1 + NáhodnéČíslo    'změna směru Y
     'při nárazu do cihly se změní směr pohybu ve směru Y
EndIf

PoziceX = PoziceX + RychlostX     'Zkráceně PoziceX += RychlostX
PoziceY = PoziceY + RychlostY

Micek.Left = PoziceX
Micek.Top = PoziceY

To nahoře je jen takovej nástřel. Kulička by se právně neměla odrážet furt stejně, mohla by se někde "zaseknout", proto to náhodný číslo. Ale to by šlo provést něčím lepším v závislosti na něčem...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Počkajte, nie je to až tak jednoduché.Použitím Vášho kódu by sa gulička pri náraze zo strany doslova vracala.Zrovna moje predstavy arkanoidu sú také, že sa normálne odrazí.

Ak niekomu vyhovuje vracanie sa, môže to ostať takto, ak dotyčný chce "normálny odraz", treba ešte skontrolovať, či prevrátiť rýchlosť X alebo rýchlosť Y, podľa toho, z ktorej strany narazila.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pravda :) Při nárazu do cihly (zespoda) by se RychlostX neměla násobit -1 - kulička by se vrátila odkud přiletěla.

Jinak, psal jsem, že je to jen takovej nástřel. Viz. poslední odstavec.

Hlavně jsem chtěl ukázat, aby autor nepoužíval proměnou Boolean na změny směru míče, ale nějakou "číselnou" promměnou, která určí jak směr, tak rychlost.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback