Ein Type-Eintrag mit jedem Type-Eintrag vergleichen
Übersicht

![]() |
TravisBetreff: Ein Type-Eintrag mit jedem Type-Eintrag vergleichen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Weiß von euch vielleicht jemand, wie ich mehrere Einträge eines einzigen Types miteinander vergleichen kann? Das brauche ich nämlich für eine Kollisionsabfrage. Ich habe mehrere Objekte (mit Variablen als Type) und will jetzt Prüfen, ob ein Objekt mit einem anderen (gleicher Type) kollidiert.
Ich kann ja leider nicht schreiben: Code: [AUSKLAPPEN] for e.enemy = each enemy for e.enemy = each enemy if imagescollide(enemy, e\x, e\y, 0, enemy, e\x, e\y, 0) next next Dann würde ich ja das Objekt mit sich selbst vergleichen. Irgendwie muss sowas doch machbar sein, da man Types ja eigentlich für fast jedes Spiel braucht, indem Objekte vorkommen, die ständig neu erstellt und wieder gelöscht werden. Ich bin echt ratlos. ![]() |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
OJayBetreff: Re: Ein Type-Eintrag mit jedem Type-Eintrag vergleichen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
probiers mal so ![]() Code: [AUSKLAPPEN] for e.enemy = each enemy for f.enemy = each enemy if imagescollide(enemy, e\x, e\y, 0, enemy, f\x, f\y, 0) next next btw ist es keine gute idee, types und imagehandle gleich zu benennen! mache es lieber so: imagehandle: IMGenemy variable: INTenemy% (oder VARenemy) type: TYPEenemy funktion: FUNCTIONenemy() (oder Fenemy) das hilft einem bei grösseren projekten enorm die übersicht zu behalten ![]() |
||
- Zuletzt bearbeitet von OJay am Di, Jan 06, 2004 20:37, insgesamt einmal bearbeitet
furbolg |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
for e.enemy = each enemy
for e2.enemy = each enemy if imagescollide(enemy, e\x, e\y, 0, enemy, e2\x, e2\y, 0) next next so geht das ![]() //edit mist war einer schneller ![]() |
||
Gerhard |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
In den 2D-Samples ist das Beispiel balls.bb:
Code: [AUSKLAPPEN] For balls.t_ball=Each t_ball ; check for colisions with other balls For balls2.t_ball=Each t_ball If balls<>balls2 Then ; make sure it's not the same ball If ImagesCollide(g_balls,balls\x#,balls\y#,balls\im,g_balls,balls2\x#,balls2\y#,balls2\im) Then ....usw. Ich habs noch nie verwendet, aber ist die Abfrage der 'Eigenkollision' (make sure it's not the same ball) nicht erforderlich? |
||
OJay |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
normalerweise schon. aber das hängt davon ab, was du bei der kollision machst...für dein eigenes objekt is es dann immer true. | ||
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ all
Danke für eure schnelle Hilfe. Jetzt habe ich's hinbekommen. Ich wusste gar nicht, das man für ein Type einmal "e.enemy" und dann nochmal "e2.enemy" schreiben kann. Ich dachte, das wäre dann schon wieder ein ganz anderer Type. Wieder was dazu gelernt ![]() |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
OJay |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
dein type "enemy" musst du als container sehen. jedesmal, wenn du "new enemy" sagst, wird in dem container eine neue akte mit den eigenschaften deiner fields erstellt.
und in deinem beispiel sind "e" und "e2" nichts weiter, als zeiger (oder handles) auf jeweils eine dieser akten, die du dann gegeneinander prüfst. wenn man das prinzip einmal verstanden hat, ist es wirklich genial damit zu arbeiten ![]() |
||
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn ich jetzt zwei verschiedene Types habe z.b. "Player" und "Panel", kann ich denn dann einmal "p.player" und einmal "p.panel" schreiben, oder darf man einen Buchstaben vorm Komma nur einmal benutzen? Wenn ich dann "delete p" schreibe müsste es doch Probleme geben, oder? | ||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
![]() |
Julz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Cool das einer das thema eröffnet hat ich hätte nämlich auch mal ne frage da ich nur datenfelder benutze wie kann ich denn da vergleichen ob welche kollidieren ???
dim enemy(5,2) for i = 0 to 5 enemy(i,0) = ist das alien da ??? enemy(i,1) = x koordinate enemy(i,2) = y koordiante jetzt hab ich ja 5 aliens kann ich da auch überprüfen ob die sich überschneiden ????, weil die haben ja alle das gleiche bild... ![]() |
||
OJay |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Travis hat Folgendes geschrieben: Wenn ich jetzt zwei verschiedene Types habe z.b. "Player" und "Panel", kann ich denn dann einmal "p.player" und einmal "p.panel" schreiben, oder darf man einen Buchstaben vorm Komma nur einmal benutzen? Wenn ich dann "delete p" schreibe müsste es doch Probleme geben, oder?
ja, dann meldet dir der debugger "variable type mismatch" |
||
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm, hab' mir schon sowas gedacht. Dann muss ich wohl bei "p.player" und "pan.panel" bleiben. ![]() |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist wie bei normalen Variablen.
Man kann auch nicht p$ und p# oder p% gleichzeitig definieren ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group