Zusammenstoß programmieren
Übersicht

![]() |
TomBetreff: Zusammenstoß programmieren |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
OK, danke erstmal!!
aber wenn ich z.B. einen mario-clon machen will, kann ich doch nicht das ganze programm wegen waitkey() anhalten ![]() |
||
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
Gewinnen ist nicht alles-so denken die Verlierer |
dubitat |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich bedanke mich auch für dieses beispiel! ![]() aber ich möchte eigentlich richtige kollision. darauf zielt ja auch meine frage |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nunja... diesen befehl benutze ich ja auch!
aber bei mir collidieren die beiden objekte aber nich! ![]() 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 |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hier musst du schreiben, was geschehen soll:
If ImagesOverlap (haus, MouseX(), MouseY(), kol, 200, 200) Then /irgendwas machen\ endif |
||
Aller Anfang ist schwer!!! |
![]() |
Tom |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group