Problem bei der Kollisionsabfrage - gelöst-danke
Übersicht

NemicBetreff: Problem bei der Kollisionsabfrage - gelöst-danke |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Zusammen, ich hoffe ich habe den Beitrag in den richtigen Teil des Forumsgeschrieben. Hoffe auf Hilfe von euch, da ich nicht weiterkomme. Ich habe schon viele Tutorials durchgearbeitet. Darunter auch diesen SpaceShooter? Ich diesesn Code etwas modifiziert. Ziel ist es ein "BallonShooter" zu kreieren. Man hat eine Fadenkreuz, und muss Ballöne abschiessen. Also so eine Art Moorhuhn ![]() __________________________________________________ Global GameObjectList:TList=CreateList() Graphics 800,600,1 HideMouse() Local URL:String="" Local Player:TCursor=TCursor.Create(URL+"Cursor.bmp",MouseX(),MouseY()) SetMaskColor 0,0,0 Global Background=LoadImage ("background.bmp") '________Haupt-Schleife______________ Repeat Cls For o:TGameObject=EachIn GameObjectList DrawImage (Background,0,0) o.UpdateState o.DrawSelf() Player.DrawSelf() Next Flip Until KeyDown(Key_Escape)Or AppTerminate() End '___Types, Attributs und Behaviours___ Type TGameObject Field x:Int Field y:Int Field speed:Int=3 Field image:TImage Method DrawSelf() DrawImage Image,x,y EndMethod Method UpdateState() Abstract End Type Type TEnemy Extends TGameObject Field Frame:Int=0 Field AnimDelay:Int=10 Function Create:TEnemy(File:String,xstart:Int,ystart:Int) Local Cur:TEnemy=New TEnemy Cur.X=xstart Cur.Y=ystart SetMaskColor 6,205,255 Cur.Image=LoadAnimImage(File,40,80,0,4) If Cur.Image=Null Print "Das Bild konnte nicht geladen werden!Programm abgebrochen!" End EndIf ListAddLast GameObjectList,Cur Return Cur End Function Method Drawself() DrawImage Image,x,y,frame EndMethod Method updatestate() Y:-speed CheckCollision() If AnimDelay<0 Then Frame :+ 1 If Frame>3 Then Frame=0 AnimDelay=10 EndIf AnimDelay :- 1 If y<-80 ListRemove(GameObjectList,Self) EndIf EndMethod Method CheckCollision() EndMethod EndType Type TCursor Extends TGameObject Field ShootDelay:Int Field CreateDelay:Int Function Create:TCursor(File:String,xstart:Int,ystart:Int) Local Cur:TCursor=New TCursor Cur.x=xstart Cur.y=Ystart Cur.image=LoadImage(File) If Cur.Image=Null Print "Das Bild konnte nicht geladen werden!Programm abgebrochen!" End EndIf ListAddLast GameObjectList, Cur Return Cur End Function Method UpdateState() x=MouseX() y=MouseY() CreateDelay:-1 If KeyDown(Key_Space) BallonCreate() EndIf If x>740 Then x=740 If y>540 Then y=540 End Method Method BallonCreate() bx=Rnd (0,760) Local FileName:String="ballonani.bmp" Local Enemy:TEnemy=TEnemy.Create(FileName,bx,600) CreateDelay=100 End Method Method Drawself() DrawImage Image,x,y EndMethod End Type |
||
- Zuletzt bearbeitet von Nemic am Mo, Jul 24, 2006 19:36, insgesamt 2-mal bearbeitet
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich empfehle die Tutorials im englischen Board mal zu machen.
Es hat einige Dinge im Code die so eigentlich nicht mehr sein können / dürfen, wenn du wirklich schon einige tutorials gemacht hast. (zb Create das einen Filenamen nimmt und immer wieder das Bild lädt was ziemlich zeit in anspruch nimmt anstatt 1 Mal das Bild zu laden und es immer wieder zu verwenden bzw. dem Create ein TImage übergeben). Auch sehe ich da irgendwie nicht wie und wo etwas hinzugefügt wird. generell ist es so, dass beim drücken der Leertaste einfach ein neuer Ballon erzeugt würde an einer Position, der der Objektliste hinzugefügt wird. Danach wird er wie alle anderen Objekte geupdatet, den Teil hast du jetzt ja schon drin. Das einzige was also fehlt ist das beim drücken der Leertaste an einer beliebigen Position der Ballon erzeugt wird, wofür ja die Funktionalität eigentlich schon vorhanden ist. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich korrigierte es zwar schon im Archiv, aber was solls...
Code: [AUSKLAPPEN] '________Haupt-Schleife______________ Repeat Cls DrawImage (Background,0,0) '--------------------------- richtig For o:TGameObject=EachIn GameObjectList 'DrawImage (Background,0,0) '------------------------ falsch o.UpdateState o.DrawSelf() Player.DrawSelf() Next Flip Until KeyDown(Key_Escape)Or AppTerminate() End Code: [AUSKLAPPEN] 'Image hier laden, und nicht in der Schleife!!!
global Ballon:TImage = LoadAnimImage("DeinBallonImage",40,80,0,4) Type TEnemy Extends TGameObject Function Create:TEnemy(xstart:Int,ystart:Int) Local Cur:TEnemy=New TEnemy Cur.X=xstart Cur.Y=ystart SetMaskColor 6,205,255 Cur.Image=Ballon '---------------------- Image zuweisen .... End Function Code: [AUSKLAPPEN] Type TCursor Extends TGameObject
... Method UpdateState() x=MouseX() y=MouseY() CreateDelay:-1 'If KeyDown(Key_Space) '---------------------------falsch If KeyHit(KEY_SPACE) '-------------------------------richtig BallonCreate() EndIf If x>740 Then x=740 If y>540 Then y=540 End Method ... Method BallonCreate() bx=Rnd (0,760) Local Enemy:TEnemy=TEnemy.Create(bx,600) CreateDelay=100 End Method so... cheers |
||
Nemic |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen Dank ersteinmal, der Script wurde jetzt schon ein paar Mal korrigiert. Vielen Dank d-bug ![]() https://www.blitzforum.de/upload/code.php?show=117 Irgendwo scheint ein Problem zu sein, doch ich finde es nicht heraus. Wäre nett, wenn ihr mir noch einmal helfen könntet. Mit freundlichen Grüssen Nemic |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group