Gegner löschen wenn sie aus der Map fallen...
Übersicht

![]() |
orpheus_2003Betreff: Gegner löschen wenn sie aus der Map fallen... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi.
Ich hab ein Problem bei "Wizard" Meine Gegner setzte ich aus einer Map in den Level: Code: [AUSKLAPPEN] Function enemyappearing()
Y = 0: Repeat X = 0: Repeat X1 = MapX + X : Y1 = MapY + Y If Enemy$(X1,Y1) = "1DR" And Enemysprite(X,Y,3)=0 Then Enemy$(X1,Y1) = "000" : Enemysprite(X,Y,1)= X * 32 + MapOffsetX : Enemysprite(X,Y,2)= Y * 32 + MapOffsetY : Enemysprite(X,Y,3)=1 : Enemysprite(X,Y,4)=100 If Enemy$(X1,Y1) = "1DQ" And Enemysprite(X,Y,3)=0 Then Enemy$(X1,Y1) = "000" : Enemysprite(X,Y,1)= X * 32 + MapOffsetX : Enemysprite(X,Y,2)= Y * 32 + MapOffsetY : Enemysprite(X,Y,3)=2 : Enemysprite(X,Y,4)=100 : Enemysprite(X,Y,5)=1 X = X + 1: Until X = 26 Y = Y + 1: Until Y = 20 End Function So. Nun will ich nicht, dass wenn ich vorbeilaufe die im Speicher rumwuseln. Wie setzt ich die zurück. Momentan habe ich sie einfach an den Ursprung gesetzt. Sieht aber blöde aus. Ich hab dann einfach Probleme sie auf die Map an die richtige Position zu setzen. Hab da ein Offset und es will einfach nicht klappen. Map scrollt so: Code: [AUSKLAPPEN] If CharacterX > 372 Then
If MapX < MapWidth-20 Then MapOffsetX = MapOffsetX - 4 ; Offset for Map OffsetX = OffsetX - 2 ; Offset for Layer 2 scrolling enemyoffsetx= -4 : moveenemyx() ; Enemy CharacterX = 372 If MapOffsetX < -30 Then ; Map border If Mapx<174 Then MapOffsetX = 0 ; Offset to 0 MapX = MapX + 1 End If EndIf End If End If Hat jemand ne Idee? Enemie: ; Enemysprite xPos,yPos,Enemy?,life,direction Die Gegner bewegen sich selbstständig. Der erste einfach hin und her x achse. Der 2 hat Intelligenz.. ![]() Thx |
||
GazerStar - the beginning
http://gazerstar.lexigame.de/ Wizard (Worktitel) http://wizard.lexigame.de |
![]() |
orpheus_2003Betreff: Hm |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist dieses Thema so kompliziert oder so einfach?
Würde mich jetzt schon interessieren. ![]() |
||
GazerStar - the beginning
http://gazerstar.lexigame.de/ Wizard (Worktitel) http://wizard.lexigame.de |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Alles mit der Ruhe ![]() Ich komm bei deinem Code nicht ganz draus.. Verwaltest du die Dinger als Type? Wenn du sie als Type verwendest kannst du sie ganz einfach per Delete ![]() ![]() Falls ich dich falsch verstanden habe, sry |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
orpheus_2003 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi.
Die Enemys sind Dim Felder. (nicht schlagen...) Ich bin mit Types noch nicht so durch.... Und das Problem ist das Offset. Das Level wird ja gescrollt mit dem Offset. Wenn der dann 32 übersteigt geht die Map um 1 weiter.... Das Problem ist. Wenn ich die Gegner lösche, wenn sie aus dem Screen raus sind, setzte ich sie an die Ursprungsvaribalen, die ich beim ersteleln mit speichere. Enemysprite(X,Y,6)=X1 : Enemysprite(X,Y,7)=Y1 Allerdings kommen die dann eben wieder am Ursprung und nicht an der Stelle an der sie verschwanden. Jetzt könnte man sagen. Einfach. Speichere die Bewegung des Levels und übernimm diese. Tja. Das hab ich probiert. Geht nicht. So sieht der Mapcontroll aus: Code: [AUSKLAPPEN] If CharacterX > 372 Then
If MapX < MapWidth-20 Then MapOffsetX = MapOffsetX - 4 ; Offset for Map OffsetX = OffsetX - 2 ; Offset for Layer 2 scrolling enemyoffsetx= -4 : moveenemyx() ; Enemy CharacterX = 372 If MapOffsetX < -30 Then ; Map border If Mapx<174 Then MapOffsetX = 0 ; Offset to 0 MapX = MapX + 1 enemyoffsetxmap=1 : moveenemyXmap() ; Enemy End If EndIf End If End If Und so die Funktion um die recoverten Variablen dann mitzuscrollen: Code: [AUSKLAPPEN] Function moveenemyXmap()
Y = 0: Repeat X = 0: Repeat Enemysprite(X,Y,6)=Enemysprite(X,Y,6)+enemyoffsetxmap X = X + 1: Until X = 26 Y = Y + 1: Until Y = 20 End Function |
||
GazerStar - the beginning
http://gazerstar.lexigame.de/ Wizard (Worktitel) http://wizard.lexigame.de |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
*dich hau* ![]() Ne.. Wie lädst du die Gegner? (wehe alles hardgecodet ![]() Bitte eigne dir Types an.. Wenn du die kannst, würde ich so angehen Verschiedene Maps bauen, eine für das Grafische, eine mit den Objekten/Gegnern Nun schreibst du eine Funktion, welche die 2te map abcheckt und wenn ein Objekt sichtbar ist ein Type erstellt. Hoffentlich verständlich ![]() |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
orpheus_2003 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey. Sicher hab ich ne Map.
1 Map Level 2 Map Background 3 Map Enemies. Und diese werden in das DIM Feld eingelesen....... Fertig. Wenn die Map dann scrollt werden beim setzen der Tiles auch abgefragt, ob Enemies auf dem Layer sind. Wenn ja. Funktion oben... erstellen Gegner... Das Problem mit dem Rücksetzen hätte ich bei Types auch....!??? Und. Bitte nicht hauen.... ![]() |
||
GazerStar - the beginning
http://gazerstar.lexigame.de/ Wizard (Worktitel) http://wizard.lexigame.de |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ahaa
bei den types würd ich die instanz löschen und wenns sein muss neu erstellen. egal zu deinem problem mit dem Offset, es tut mir leid, aber ich begreiff deinen code noch nicht so ganz... wenn der screen fertig ist wird MapX um eins grösser/kleiner nun positionierst du die dinger wo (codezeile?) sry ich blick nicht durch ![]() schau dir mal mein Seafighter an https://www.blitzforum.de/upload/file.php?id=4326 da ist ein Soruce drinn, vlt kannst du dir was abschauen ![]() |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich verstehe nicht ganz, warum du die Gegner überhaupt aus der Karte löschst.
Wenn du sowieso Arrays statt Types benutzt, nehmen dir die Gegner ja überhaupt keinen Speicher weg, solange sie noch in der Map sind. Es reicht also, wenn du einfach die Gegner aktualisierst, die momentan auf dem Bildschirm zu sehen sind, dann schlucken sie auch keine Berechnungszeit. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
orpheus_2003 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry. Doppelpost | ||
GazerStar - the beginning
http://gazerstar.lexigame.de/ Wizard (Worktitel) http://wizard.lexigame.de |
- Zuletzt bearbeitet von orpheus_2003 am Do, März 26, 2009 14:31, insgesamt einmal bearbeitet
![]() |
orpheus_2003 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ Noobody
Dass mir die Gegner keinen Speicher nehmen, weil sie eh alle "gefüllt" sind ist klar. Aber. Ich will nur die zeichnen die auf dem Screen sind. Momentan wird die Map aktuell abgefragt ob da Gegner sind, wenn ja. Werden die Variablen für die Gegner geladen. x,y usw. Aber wenn ich dann aus dem Screen raus bin laufen die immer noch rum. Darum muss ich sie löschen.. Damit sie nicht außerhalb der Map gezeichnet werden. Aber dank Nobody hab ich nun eine Lösung gefunden. Ich begrenze einfach nur die Graphikfunktion der Gegner. Dann werden die auch nicht gezeichnet und brauchen keinen Speicher. Und sind immer am richtigen Ort. Thx... |
||
GazerStar - the beginning
http://gazerstar.lexigame.de/ Wizard (Worktitel) http://wizard.lexigame.de |
![]() |
orpheus_2003 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ozzi789 hat Folgendes geschrieben: schau dir mal mein Seafighter an https://www.blitzforum.de/upload/file.php?id=4326 da ist ein Soruce drinn, vlt kannst du dir was abschauen ![]() Mensch Ozzi. Weißt wen man hauen sollte....? Dein Code ist doch etwas. Wie sag ich. Unübersichtlich???? |
||
GazerStar - the beginning
http://gazerstar.lexigame.de/ Wizard (Worktitel) http://wizard.lexigame.de |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
orpheus, ich möchte Dich auf den Editbutton hinweisen. Nutze ihn bitte. Danke.
Doppelpostings sind nicht gern gesehen in diesen heiligen Hallen. |
||
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 |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es war ein BCC wo man auf die Codelänge achten muss ...
Bitte poste den ganzen Code, ich kann dir sonst nicht wirklich weiter helfen, thnx Kann leider kein Sample coden, weil mein BB total rumzickt ![]() |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group