Zusammenstoß programmieren

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Tom

Betreff: Zusammenstoß programmieren

BeitragMo, Mai 10, 2004 22:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi
ich bin neu im B+ programmieren und habe daher eine Frage.


hier erstmal der code:

Graphics 640,480,16,2
SetBuffer BackBuffer()
objekt1=LoadImage("objekt1.bmp")
objekt2=LoadImage("objekt2.bmp")
.s
Cls
DrawImage objekt1,MouseX(),MouseY()
DrawImage objekt2,80,240
ImagesCollide (objekt1,MouseX(),MouseY(),0,objekt2,80,240,0)
Flip
If KeyDown(1)=1 Then End
Goto s

-------------
wie kann ich bewirken, dass objekt1 & objekt2 kollidieren?
ich meine, dass sie sich nicht überschneiden!
bitte helft auch noobs Embarassed

Hubsi

BeitragMo, Mai 10, 2004 22:28
Antworten mit Zitat
Benutzer-Profile anzeigen
ImagesCollide gibt einen Wert zurück auf den man überprüfen kann:
Code: [AUSKLAPPEN]
If ImagesCollide(...) Then Text 20,20,"Kollision !"
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Markus2

BeitragMo, Mai 10, 2004 22:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Die mußt die Pos. in Variablen zwischen speichern für das Bild was
mit der Maus bewegt werden soll .
Dann die neue Pos. ermitteln und testen auf kollision ,
wenn keine kollision dann darf es an die neue Pos. bewegt werden
und du überträgst die Mauspos. in die Pos. Variablen .
Das ganze kannst du dann noch in x und y trennen das man
an das andere Bild vorbei sliden kann .
Zuerst würde ich aber nen Recheck Überlappungstest machen und
wenn der statt findet erst einen Pixel genauen .
 

dubitat

BeitragMi, Mai 12, 2004 14:33
Antworten mit Zitat
Benutzer-Profile anzeigen
mal in code ausgedrückt weils sonst spanisch ist:

Code: [AUSKLAPPEN]


while not keydown(1)

If NOT ImagesCollide(...) then
mx = MouseX()
my = mousey()
DrawImage objekt1,mx,my
DrawImage objekt2,80,240
else
Text 100,100, "KOLLISION!!!
flushkeys
waitkey
endif

wend




so kann man es denke ich mal einfach machen!
Erare humanum est - Irren ist Menschlich

Tom

BeitragMi, Mai 12, 2004 15:32
Antworten mit Zitat
Benutzer-Profile anzeigen
OK, danke erstmal!!
aber wenn ich z.B. einen mario-clon machen will, kann ich doch nicht
das ganze programm wegen waitkey() anhalten Question
AthlonXP 2800+ ~ 2.0Ghz ; Radeon9800pro ATLANTIS (Sapphire) ; 512mb DDR RAM (333mhz) ; Creative Soundblaster Audigy2 ZS ;
BlitzPlus (B+)

Mein Allgemein-FORUM : http://www.tom-forum.de.tc

Meine Mini-Page : www.tom.kohop.de
 

Crayhole

BeitragMi, Mai 12, 2004 15:35
Antworten mit Zitat
Benutzer-Profile anzeigen
dann brauchst du:
-----

while not keydown(1) ; 1 steht für die esc-taste

...Befehle für alles

wend ; beendet die wend-reihe
end ; das kommt dan erst, wenn doch Esc gedrückt wurde
--
Hoffe ich konnte helfen Wink
Gewinnen ist nicht alles-so denken die Verlierer
 

dubitat

BeitragMi, Mai 12, 2004 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
das war ja auch nur als beispiel gemeind, damit du die kollision siehst, weils sonst zu schnell geht und nix passiert!

wenn du das so halt mit der kollision machen willst musste natürlich waitkey und flushkeys rausnehmen! den text nimmste dann ja wahrscheinlich auch raus!
Erare humanum est - Irren ist Menschlich

Tom

BeitragMi, Mai 12, 2004 16:56
Antworten mit Zitat
Benutzer-Profile anzeigen
ich bedanke mich auch für dieses beispiel! Smile
aber ich möchte eigentlich richtige kollision. darauf zielt ja auch meine frage

Hubsi

BeitragDo, Mai 13, 2004 9:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Für richtige Kollision ist ImagesCollide doch genau die passende Funktion?
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Tom

BeitragDo, Mai 13, 2004 15:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Nunja... diesen befehl benutze ich ja auch!
aber bei mir collidieren die beiden objekte aber nich! Sad
wie kann ich das das prob. denn lösen?
AthlonXP 2800+ ~ 2.0Ghz ; Radeon9800pro ATLANTIS (Sapphire) ; 512mb DDR RAM (333mhz) ; Creative Soundblaster Audigy2 ZS ;
BlitzPlus (B+)

Mein Allgemein-FORUM : http://www.tom-forum.de.tc

Meine Mini-Page : www.tom.kohop.de

BladeRunner

Moderator

BeitragDo, Mai 13, 2004 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Erkär das bitte genauer... Was heisst sie kollidieren nicht ?
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Tom

BeitragDo, Mai 13, 2004 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
die beiden objekte überschneiden sich.
sie gehen einfach durch sich hindurch
AthlonXP 2800+ ~ 2.0Ghz ; Radeon9800pro ATLANTIS (Sapphire) ; 512mb DDR RAM (333mhz) ; Creative Soundblaster Audigy2 ZS ;
BlitzPlus (B+)

Mein Allgemein-FORUM : http://www.tom-forum.de.tc

Meine Mini-Page : www.tom.kohop.de

BladeRunner

Moderator

BeitragDo, Mai 13, 2004 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
dann solltes du wenn imagescollide eine Kollision meldet die bewegung stoppen (und evtl die letzte Bewegung zurücknehmen).
also:
PSEUDO:
Code: [AUSKLAPPEN]
if imagescolide(Bild1, X1, Y1, Frame1, Bild2, X2, Y2, Frame2) then move=0

und wenn move 0 ist wird (mit if prüfen) wird nit bewegt...
nur ein Ansatz...
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Flori-D

BeitragFr, Mai 14, 2004 13:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein kleiner Tipp nimm Code: [AUSKLAPPEN]
 If Imgesoverlap Then


iss für anfänger leichter verständlich.

Code: [AUSKLAPPEN]


If Imgesoverlap(bild.1,x,y , bild.2,x2,y2) Then
 X = x-1
 Y = Y-1
Endif
 
BB is Macht!

Homepage: www.flori-d.de

Tom

BeitragFr, Mai 14, 2004 22:24
Antworten mit Zitat
Benutzer-Profile anzeigen
nunja... so richtig verstehe ich das nicht.
hier der code:

Code: [AUSKLAPPEN]
Graphics 640,480,16,2
haus=LoadImage("haus.bmp")
kol=LoadImage("kol.bmp")
kolX=MouseX()
kolY=MouseY()
.s
If KeyDown(1)=1 Then End
Cls
DrawImage haus,MouseX(),MouseY()
DrawImage kol,200,200
Flip
If ImagesOverlap (haus,MouseX(),MouseY(),kol,200,200)
;--was soll hier zwischen?----
EndIf
Goto s


bitte helft mir anhand DIESEM beispiel!
 

x.Force

BeitragFr, Mai 14, 2004 22:31
Antworten mit Zitat
Benutzer-Profile anzeigen
dazwischen gehört etwas was passiert wenn die beiden objekte collidieren

AMD Athlon XP 2000+ | 1024mb DDR-Ram | Asus Radeon 9600XT | BENQ FP757 17°Zoll TFT

Was kümmert mich mein Geschwätz von gestern? (Konrad Adenauer) -.-
 

jacky

BeitragFr, Mai 14, 2004 22:32
Antworten mit Zitat
Benutzer-Profile anzeigen
hier musst du schreiben, was geschehen soll:

If ImagesOverlap (haus, MouseX(), MouseY(), kol, 200, 200)
Then /irgendwas machen\
endif
Aller Anfang ist schwer!!!

Tom

BeitragFr, Mai 14, 2004 22:34
Antworten mit Zitat
Benutzer-Profile anzeigen
das weiß ich doch!
ich möchte nur wissen was ich dazwischen schreiben muss, damit die beiden objekte Collidieren. also, dass sie sich nicht überschneiden.
AthlonXP 2800+ ~ 2.0Ghz ; Radeon9800pro ATLANTIS (Sapphire) ; 512mb DDR RAM (333mhz) ; Creative Soundblaster Audigy2 ZS ;
BlitzPlus (B+)

Mein Allgemein-FORUM : http://www.tom-forum.de.tc

Meine Mini-Page : www.tom.kohop.de
 

jacky

BeitragFr, Mai 14, 2004 22:41
Antworten mit Zitat
Benutzer-Profile anzeigen
na, ich denke mal genau daran liegts.

wenn du nich schreibst was geschehen soll, dann
weiss das programm auch nicht was es machen soll
und macht halt keine kollision (weiss nich ob es wirklich stimmt,
klingt aber noch logisch!)

versuch es einfach mal
Aller Anfang ist schwer!!!

Tom

BeitragFr, Mai 14, 2004 22:45
Antworten mit Zitat
Benutzer-Profile anzeigen
ich bin nun mal neu und ich habe mir beispiele angeschaut!(aus tuts).
aber ich bin nich viel schlauer, ich hab oben den meinen verwendeten code geschrieben. was soll ich denn schreiben,damit die beiden objekte kollidieren?
AthlonXP 2800+ ~ 2.0Ghz ; Radeon9800pro ATLANTIS (Sapphire) ; 512mb DDR RAM (333mhz) ; Creative Soundblaster Audigy2 ZS ;
BlitzPlus (B+)

Mein Allgemein-FORUM : http://www.tom-forum.de.tc

Meine Mini-Page : www.tom.kohop.de

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group