Dobrý deň. Mám dva Štvorce: Shape1 a Shape2.
Shape1 stojí na mieste
Shape2 sa hýbe pomocou WSAD.
Mám Timer1, Timer2, Timer3 a Timer4 ktoré majú interval napr. 10.
Timer1,2,3,4 sú normálne Nefunkčné (Enabled = False)
Ak stlačím W, Timer1 sa povolí a každých 10 milisekúnd sa mi Shape2 posunie hore o 1 pixel. Ak pustím klávesu, Timer1 sa zastaví
S, A, D fungujú tak isto ako Timer1 až na to, že každý pohne Shape2 iným smerom
Od vás potrebujem, aby ste mi napísali kód taký, že keď stlačím napr. S, čo je Timer2 a Shape2 sa dotkne Shape1, Timer2 sa zastaví. Teda ak sa dotkne Shape2 objektu Shape1, Timer sa zastaví, teda vrazím do pevného objektu.
Ďakujem
Visual Basic 6, Potrebujem kod na kolizie
-
tom1597530
Zablokovaný
- Príspevky: 170
- Registrovaný: 18 okt 2008, 14:28
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
neviem ako sa to presne zapisuje vo VB, tak iba takto slovne:
ak je x,y súradnica lavého horného rohu shapu, tak absolútna hodnota rozdielu x-ových súradnic shapu menšia ako šírka shapu ti určí kolíziu v horizontálnom smere, absolútna hodnota rozdielu y-ových súradnic ak je menšia ako výška shapu tak máš kolíziu vo vertikálnom smere. Ak nastane jeden alebo druhý prípad, zastavší všetky timery.
Ak tie shape nemajú rovnaké rozmery, budeš to musieť rozdeliť na 4 podmienky, kde porovnávaš x+šírka s x druhého shapu a potom x s x+šírka prvého shapu. Takéto dve podmienky budú aj pre y a výšky
ak je x,y súradnica lavého horného rohu shapu, tak absolútna hodnota rozdielu x-ových súradnic shapu menšia ako šírka shapu ti určí kolíziu v horizontálnom smere, absolútna hodnota rozdielu y-ových súradnic ak je menšia ako výška shapu tak máš kolíziu vo vertikálnom smere. Ak nastane jeden alebo druhý prípad, zastavší všetky timery.
Ak tie shape nemajú rovnaké rozmery, budeš to musieť rozdeliť na 4 podmienky, kde porovnávaš x+šírka s x druhého shapu a potom x s x+šírka prvého shapu. Takéto dve podmienky budú aj pre y a výšky
-
manager666
Star
- Príspevky: 642
- Registrovaný: 12 aug 2007, 13:29
Audiotrackove slova v kode
:
1, ak maju rovnake rozmery:
Myslim, ze pouzivat 4timery je blbost, ked nemusis pouzivat ani jeden.
A mimochodom u VB je nastavenie Intervalu na hodnotu mensiu ako 15 zbytocne. Jeho minimum u Timeru je 15, ci nastavis 5 alebo 10. 
1, ak maju rovnake rozmery:
Kód: Vybrať všetko
Dim CanMove As Boolean
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim rozdiel, rozdiel2 As Integer
rozdiel = Shape1.Top - Shape2.Top
If rozdiel < 0 Then
rozdiel = rozdiel * -1
End If
rozdiel2 = Shape1.Left - Shape2.Left
If rozdiel2 < 0 Then
rozdiel2 = rozdiel2 * -1
End If
If rozdiel <= Shape1.Height And rozdiel2 <= Shape1.Width Then
CanMove = False
End If
If CanMove = True Then
If KeyCode = vbKeyW Then
Shape2.Top = Shape2.Top - 20
ElseIf KeyCode = vbKeyS Then
Shape2.Top = Shape2.Top + 20
ElseIf KeyCode = vbKeyA Then
Shape2.Left = Shape2.Left - 20
ElseIf KeyCode = vbKeyD Then
Shape2.Left = Shape2.Left + 20
End If
Else
MsgBox ("Booom")
End If
End Sub
Private Sub Form_Load()
CanMove = True
End Sub-
tom1597530
Zablokovaný
- Príspevky: 170
- Registrovaný: 18 okt 2008, 14:28
Ale potom ked sa zrazia, uz sa neodlepia.manager666 napísal:Audiotrackove slova v kode:
1, ak maju rovnake rozmery:Myslim, ze pouzivat 4timery je blbost, ked nemusis pouzivat ani jeden.Kód: Vybrať všetko
Dim CanMove As Boolean Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Dim rozdiel, rozdiel2 As Integer rozdiel = Shape1.Top - Shape2.Top If rozdiel < 0 Then rozdiel = rozdiel * -1 End If rozdiel2 = Shape1.Left - Shape2.Left If rozdiel2 < 0 Then rozdiel2 = rozdiel2 * -1 End If If rozdiel <= Shape1.Height And rozdiel2 <= Shape1.Width Then CanMove = False End If If CanMove = True Then If KeyCode = vbKeyW Then Shape2.Top = Shape2.Top - 20 ElseIf KeyCode = vbKeyS Then Shape2.Top = Shape2.Top + 20 ElseIf KeyCode = vbKeyA Then Shape2.Left = Shape2.Left - 20 ElseIf KeyCode = vbKeyD Then Shape2.Left = Shape2.Left + 20 End If Else MsgBox ("Booom") End If End Sub Private Sub Form_Load() CanMove = True End SubA mimochodom u VB je nastavenie Intervalu na hodnotu mensiu ako 15 zbytocne. Jeho minimum u Timeru je 15, ci nastavis 5 alebo 10.
Vies co, skus prepisat tento kod tak, ze ked sa zrazia, tak sa Shape2 uz nepohne na ten smer, kde stoji Shape1 a oprav to trochu, lebo ked sa zrazili, vypisalo to Booom a uz aj ked boli 100 pixlov od seba, stale to vypisovalo
//autoeditácia príspevku ( 27 Jul 2009, 15:45 )
audiotrack napísal:neviem ako sa to presne zapisuje vo VB, tak iba takto slovne:
ak je x,y súradnica lavého horného rohu shapu, tak absolútna hodnota rozdielu x-ových súradnic shapu menšia ako šírka shapu ti určí kolíziu v horizontálnom smere, absolútna hodnota rozdielu y-ových súradnic ak je menšia ako výška shapu tak máš kolíziu vo vertikálnom smere. Ak nastane jeden alebo druhý prípad, zastavší všetky timery.
Ak tie shape nemajú rovnaké rozmery, budeš to musieť rozdeliť na 4 podmienky, kde porovnávaš x+šírka s x druhého shapu a potom x s x+šírka prvého shapu. Takéto dve podmienky budú aj pre y a výšky
-
manager666
Star
- Príspevky: 642
- Registrovaný: 12 aug 2007, 13:29
Co keby si trochu pohol rozumom a upravil si to podla svojich poziadaviek ? Ci ti mam celu aplikaciu urobit ja ?!
Mne to funguje uplne skvelo, kedze ti vypisalo Boom aj ked boli az 100px od seba, to znamena, ze nemas rovnake rozmery a ja som sam uviedol na zaciatku, ze to je pre rovnake stvorce.
Ak nechapes, co napisal audiotrack, tak ta prosim, aby si prestal s akymkolvek programovanim a najma cinnostiam, ktore vyzaduju logicke myslenie. Taketo jednoduchucke veci, ked nevies sam bez pomoci, jednoducho nemas na to.
Mozno som bol teraz tvrdy, ale napisal som krutu pravdu.

Mne to funguje uplne skvelo, kedze ti vypisalo Boom aj ked boli az 100px od seba, to znamena, ze nemas rovnake rozmery a ja som sam uviedol na zaciatku, ze to je pre rovnake stvorce.
Ak nechapes, co napisal audiotrack, tak ta prosim, aby si prestal s akymkolvek programovanim a najma cinnostiam, ktore vyzaduju logicke myslenie. Taketo jednoduchucke veci, ked nevies sam bez pomoci, jednoducho nemas na to.
Mozno som bol teraz tvrdy, ale napisal som krutu pravdu.
-
tom1597530
Zablokovaný
- Príspevky: 170
- Registrovaný: 18 okt 2008, 14:28
Takže takto:manager666 napísal:Co keby si trochu pohol rozumom a upravil si to podla svojich poziadaviek ? Ci ti mam celu aplikaciu urobit ja ?!![]()
Mne to funguje uplne skvelo, kedze ti vypisalo Boom aj ked boli az 100px od seba, to znamena, ze nemas rovnake rozmery a ja som sam uviedol na zaciatku, ze to je pre rovnake stvorce.
Ak nechapes, co napisal audiotrack, tak ta prosim, aby si prestal s akymkolvek programovanim a najma cinnostiam, ktore vyzaduju logicke myslenie. Taketo jednoduchucke veci, ked nevies sam bez pomoci, jednoducho nemas na to.
Mozno som bol teraz tvrdy, ale napisal som krutu pravdu.
1. Potom nie ja, ale počítač dal zlé rozmery, pretože si myslím, že kopírovať a vložiť nie je moja práca.
2. Už od mojich šiestich rokov mi psychologička povedala, že ja jednoduchým veciam nerozumiem ale zložitým áno. Ale nie je to až tak doslovne myslené.
3. Z jednej stránky ti ďakujem, z druhej stránky vravím "choď do prdele"
//autoeditácia príspevku ( 28 Jul 2009, 8:54 )
To uz clovek nemoze povedat ani chod do prdele a hned mi musia dvaja ko**** znizit karmu, ku***!!! Toto je fakt poj**** fórum a ešte poj******** registrovaní.
Odkaz pre tých, čo mi znížili karmu: Dajte sa vypchať!!!
//autoeditácia príspevku ( 28 Jul 2009, 8:59 )
To krute bolo, ale nie pravda a s programovanim NIKDY neprestanem, pretoze sa chcem stat programatorom. Pojdem na gympel a potom na vysoku elektro-technicku. Myslis si, ze by som mal prestat s mojim snom, len preto, lebo si to povedal. a stvorce boli rovnakemanager666 napísal:Co keby si trochu pohol rozumom a upravil si to podla svojich poziadaviek ? Ci ti mam celu aplikaciu urobit ja ?!![]()
Mne to funguje uplne skvelo, kedze ti vypisalo Boom aj ked boli az 100px od seba, to znamena, ze nemas rovnake rozmery a ja som sam uviedol na zaciatku, ze to je pre rovnake stvorce.
Ak nechapes, co napisal audiotrack, tak ta prosim, aby si prestal s akymkolvek programovanim a najma cinnostiam, ktore vyzaduju logicke myslenie. Taketo jednoduchucke veci, ked nevies sam bez pomoci, jednoducho nemas na to.
Mozno som bol teraz tvrdy, ale napisal som krutu pravdu.
//autoeditácia príspevku ( 28 Jul 2009, 8:59 )
To krute bolo, ale nie pravda a s programovanim NIKDY neprestanem, pretoze sa chcem stat programatorom. Pojdem na gympel a potom na vysoku elektro-technicku. Myslis si, ze by som mal prestat s mojim snom, len preto, lebo si to povedal. a stvorce boli rovnakemanager666 napísal:Co keby si trochu pohol rozumom a upravil si to podla svojich poziadaviek ? Ci ti mam celu aplikaciu urobit ja ?!![]()
Mne to funguje uplne skvelo, kedze ti vypisalo Boom aj ked boli az 100px od seba, to znamena, ze nemas rovnake rozmery a ja som sam uviedol na zaciatku, ze to je pre rovnake stvorce.
Ak nechapes, co napisal audiotrack, tak ta prosim, aby si prestal s akymkolvek programovanim a najma cinnostiam, ktore vyzaduju logicke myslenie. Taketo jednoduchucke veci, ked nevies sam bez pomoci, jednoducho nemas na to.
Mozno som bol teraz tvrdy, ale napisal som krutu pravdu.
//autoeditácia príspevku ( 31 Jul 2009, 17:37 )
NO TAK, DO TOHO. EŠTE MI ZNÍŽ KARMU TY HAJZEL! NA ČO ČAKÁŠ? VŠETCI, ČO SI TOTO PREČÍTATE MI JU ZNÍŤE, KU***!!!