sprites erstellen

Anfängerfragen zum Programmieren mit PureBasic.
philipp
Beiträge: 26
Registriert: 03.11.2005 10:31

sprites erstellen

Beitrag von philipp »

hi,
ich mache gerade ein kleines game und ich würde gerne machen, dass man
schüsse abfeuern kann.

ich weis aber leider nicht wie ich machen kann, dass wenn man auf eine bestimmte taste drückt, dass es dann immer wieder das selbe bild nochmal
lädt.

ich hoffe ich konnte mein problem verständlich schilder.
weiss jemand zufällig, wie das geht.

philipp
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

du lädst das bild nur einmal und zeichnest es dann einfach mehrmals. ein sprite in purebasic ist nicht ein spriteobjekt in dem sinne, das es das nur einmal geben kann. stell dir ein sprite einfach als eine art pinsel vor, mit dem du auf dem screen malen kannst. tippst du mit dem pinsel mehrmals auf die leinwand, gibt es auch mehrere farbkleckse.
philipp
Beiträge: 26
Registriert: 03.11.2005 10:31

Beitrag von philipp »

ja, aber ich weis ja nicht wie viele sprites es bis zum schluss werden.
wenn man zum Beispiel nur einmal drückt soll das bild nur einmal erstellt werden, hingegen wenn man mehrmals drückt soll es mehrere estellen.
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Das Problem ist dann nicht, das Sprite selber dar zu stellen, sondern die aktuellen Koordinaten zu speichern.

Dafür sind z.B. die LinkedLists, schau mal in der Hilfe nach :D

Da wir aber im Anfängerforum sind hier noch ne anregung :wink:
Erst mal müssen wir die Linkedliste erstellen, da diese 2 Werte speichern muss ist hier noch eine Struktur nötig. Für infos ebenfalls die Hilfe mal anschauen :D .

Code: Alles auswählen

;die Strukture POINT ist unter Windows bereits deklarieriert
;Structure Point
;  X.l
;  Y.l
;Endstructure
NewList Schuss.POINT()
Dann die Haupftschleife, hier musste zunächst irgend eine Taste abfragen werden und dort dann das Element erstellt werden

Code: Alles auswählen

If Keyboardpushed(#PB_Key_Space)
  AddElement(Schuss())
  Schuss()\X = 0 ;Startposition eines Schusses
  Schuss()\Y = 0 
Anschließend muss dann in der Hauptschleife jeder existierende Schuss überprüft werden und entsprechend bewegt. Ist der Schuss überm Bildschirmrand dann wird er wieder gelöscht

Code: Alles auswählen

 ForEach Schuss()
  Schuss()\X + 1
  Schuss()\Y + 1
  IF Schuss()\X > 800 And Schuss()\Y > 600
    DeleteElement(Schuss())
  else
    DisplaySprite(0, Schuss()\X, Schuss()\Y)
  EndIf
Next
^^hoffe das reicht als denkanstoß :D

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
philipp
Beiträge: 26
Registriert: 03.11.2005 10:31

Beitrag von philipp »

danke für deine hilfe, hat mich echt weiter gebrach.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

das ist bei dem Beispiel "Waponez II", was bei PB dabei ist, auch sehr schön zu sehen...

ist zwar ein bißchen arbeit, sich da durchzubeißen, aber es lohnt sich...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten