Type Delete probleme
Übersicht

![]() |
Raiden93Betreff: Type Delete probleme |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey leute ich habe ein Spiel Programmiert wo man 3 Kugeln nebeneinander haben muss damit sie Bloppen und mann dann Punkte kriegt.Doch ich weis leider nicht wie ich es anstellen sollte das die 3 Types von den Kugeln auch gelöscht werden. Klar mit dem Befehl Delete aber wie stelle ich das an das ich genau nur die 3 Kugeln Lösche die nebeneinander sind? ich benutze ein Tilemap map(5,8). | ||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es geht also nicht um Delete oder Types, sondern um einen Algorithmus, der erkennt, ob die Kugeln gelöscht werden sollen.
Ich würde die Nachbarn jedes Feldes Vergleichen und markieren, dann die markierten löschen. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
okay werde ich nacher mal ausprobieren danke dir | ||
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe es eigentlich fast schon geschaft nur jetzt habe ich das Problem das wenn die Mittlere Kugel als erstes auf den Boden angekommen ist, die Kugeln Links und Rechts sofort in der Luft verschwinden. Ich möchte es aber gerne so haben das wenn wirklich alle 3 Kugeln zum stehen gekommen sind die 3 Kugeln gelöscht werden.
Code: [AUSKLAPPEN] Function Kugeln_Delete ();Fast fertig For Kugel.KugelTyp = Each KugelTyp If map(Kugel\X+1,Kugel\Y) = 1 If map(Kugel\X-1,Kugel\Y) = 1 If map(Kugel\X,Kugel\Y) = 1 If Kugel\AnimY = Kugel\Y*32 map(Kugel\X,Kugel\Y) = 0 map(Kugel\X+1,Kugel\Y) = 0 map(Kugel\X-1,Kugel\Y) = 0 End If End If End If End If If map(Kugel\X,Kugel\Y) = 0 Delete Kugel End If Next End Function |
||
![]() |
das wurgel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielleicht hilft es dir, das Array map von nem Int-Array zu nem Kugel-Array zu machen, sodass du
Code: [AUSKLAPPEN] Kugel\AnimY = Kugel\Y*32
bei allen drei Kugeln abfragen könntest. Also so: Code: [AUSKLAPPEN] Dim map.Kugel(5,8)
|
||
1 ist ungefähr 3 |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Problem liegt ja nur daran das wenn die main(Mittlere Kugel) Kugel denn letzten tile Boden berührt sich und die nebenstehenden kugeln löscht aber ich hätte es gerne das die Kugeln 1.2 Sekunden später erst Ploppen. | ||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
aber das ist doch nun nicht mehr schwer:
dort, wo der code steht, der die kugeln löscht, löscht du sie nun nicht mehr, sondern merkst dir, welche kugel es sind, setzt einen "Timer", der x Sekunden später abläuft. Dann fügst Du einen code ein, der auf deinen ablaufenden Timer wartet und dort kommen die Codezeilen rein, die bisher die Kugeln gelöscht haben symb. Beispielcode BlitzBasic: [AUSKLAPPEN] Function Kugeln_Delete ();Fast fertig |
||
- Zuletzt bearbeitet von Midimaster am Sa, Jun 11, 2011 7:08, insgesamt einmal bearbeitet
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm scheint ja schon fast zu Funktionieren, doch irgendwie löscht sich nur die Kugel in der Mitte :/.
Ich habe schon versucht selbst ein bisschen rum zu schnibbeln aber kein Erfolg :/ Update Code: Code: [AUSKLAPPEN] Function Kugeln_Delete ();Fast fertig For Kugel.KugelTyp = Each KugelTyp If Kugel\AnimY = Kugel\Y*32 If map(Kugel\X+1,Kugel\Y) = 1 If map(Kugel\X-1,Kugel\Y) = 1 If map(Kugel\X,Kugel\Y) = 1 map(Kugel\X,Kugel\Y) = 0 map(Kugel\X+1,Kugel\Y) = 0 map(Kugel\X-1,Kugel\Y) = 0 BloopTimer = MilliSecs () +1500 End If End If End If End If If BloopTimer > 0 And BloopTimer < MilliSecs() If map(Kugel\X,Kugel\Y) = 0 Delete Kugel BloopTimer = 0 End If End If Next End Function |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja, ist logisch....
denn wenn in dem unteren Teil einmal eine Kugel gelöscht wird, wird gleich bei der ersten gefundenen Kugel der Timer schon wieder auf Null gesetzt, so dass er bei der nächsten Kugel nicht mehr aktiv ist. Die Lösung wären zwei Schleifen: BlitzBasic: [AUSKLAPPEN]
|
||
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke Midimaster jetzt geht es und habe dazu gelernt ![]() ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group