Gegner für mein Shooter game?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

jackie05

Betreff: Gegner für mein Shooter game?

BeitragDi, Dez 27, 2005 23:24
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,
ich habe hier im Forum schon die Suche benutzt, aber nichts passendes gefunden, und zwar möchte ich für mein Shooter game zufällige gegner erzeugen mit Types, und das die auch schießen, nur keine ahnung wie ich das jetzt am besten mach, hier mal den Code, den ich bis jetzt geschrieben habe:

BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer()

;Raumschiff laden
Global raumship = LoadImage(\"Raumship.bmp\")
MaskImage raumship,255,0,255

Global rakete = LoadImage(\"rakete.bmp\")
MaskImage rakete,255,0,255

;Sound laden
Global SchussSound = LoadSound(\"Schuss.wav\")

;Raumschiff Positionieren
Global x = 100
Global y = 100

Global s.schuss

;schuss definieren
Type schuss
Field x
Field y
End Type

;Die Hauptschleife
Repeat
Cls

;Raumschiff nach rechts bewegen
If KeyDown(205) Then
If x < 600 Then x = x + 2
EndIf

;Raumschiff nach links bewegen
If KeyDown(203) Then
If x > 26 Then x = x - 2
EndIf

;Raumschiff nach unten bewegen
If KeyDown(208) Then
If y < 550 Then y = y + 2
EndIf

;Raumschiff nach oben bewegen
If KeyDown(200) Then
If y > 20 Then y = y - 2
EndIf

;Neue Rakete erzeugen
If KeyDown(57) Then
;jede 200 Millisekunden eine Rakete erzeugen
If MilliSecs()-zeit > 200 Then
zeit = MilliSecs()
s.schuss = New schuss
s\x = x
s\y = y
PlaySound(SchussSound) ;Gewünschte Sound abspielen
EndIf
EndIf

;Alle Raketen durchgehen
For s.schuss = Each schuss
s\x = s\x + 10
;Rakete zeichnen
DrawImage rakete, s\x+48,s\y+16
If s\x > 760 Then
Delete s.schuss ;Rakete löschen
EndIf
Next

;Raumschiff zeichnen
DrawImage raumship,x,y

Flip
Until KeyHit(1) ;ESC, dann ende

End


ich danke euch schonmal im vorraus Laughing

MFG Christian

Living Dead

BeitragMi, Dez 28, 2005 0:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Als erstes machst du halt mir rand () den Zufall. Also z.B.
if rand(1,10) > 9 then gengner.gegnertype = new Gegnertype
Dazu Deklarierst du da´n ebenalls mit rand () die x Position und die y ist gleich 0. Weiß jetzt nicht wie du das mit dem schießen realisieren willst aber man könnte zum Gegnertype einen zähler machen der jede runde 1 größer wird. Bei ne bestimmten größe is er dann wieder auf 0 und du erstellst einen schuss an Position des Gegners. Zur schussdefinition kannst du ja die Richtung hinzufügen. Und wenn die y Position des Gegners irgendwann mal größer 600 ist dann wird er gelöscht.
Hoffe du hast irgendwas in die Richtung gesucht
Das Leben ist der Weg.
Der Tod ist das Ziel.
 

jackie05

BeitragMi, Dez 28, 2005 13:28
Antworten mit Zitat
Benutzer-Profile anzeigen
ich danke dir, ich hab da noch ein problem, und zwar wenn der gegner getroffen wird dann möchte ich das der gegner durch ein bild ersetzt wird, habe es so probiert

g.gegner = explo

wenn ich es so mache:

gegner = explo

dann werden die ganze gegners ersetzt, wie mache ich das am besten, ich danke euch schonmal 8)

Christian

Hellfront

BeitragMi, Dez 28, 2005 14:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Sollte eventuell noch gesagt werden , dass man den Zufall zufällig machen sollte:

BlitzBasic: [AUSKLAPPEN]
SeedRnd MilliSecs()


weiß nicht ob du das schon weißt aber hab ich ma so dazu gerschrieben

würde eine Funktion schreiben, die erst den egner löscht (Typemäßig)
und dann auf der gleichen Position ein B9ld explosion setzt. beides wird dann beim malen Grafisch umgesetzt.
 

jackie05

BeitragMi, Dez 28, 2005 15:16
Antworten mit Zitat
Benutzer-Profile anzeigen
das habe ich ja gemacht, so:

BlitzBasic: [AUSKLAPPEN]
Global g.gegner

Type gegner
Field x
Field y
End Type

SeedRnd MilliSecs()

For i=1 To 5
g.gegner = New gegner
g\p_x = Rnd(800,1600)
g\p_y = Rnd(20,540)
Next


habe jetzt nicht alles gepostet, ich wollte nur zeigen das ich das so gemacht habe, es funktioniert alles, nur bis auf den gegner der explodieren soll, wenn er getroffen wird, naja das werde ich ja auch noch hinbekommen, brauche nur ein bisschen zeit, aber trotzdem vielen dank für die antworten Laughing

Chrstian
 

jackie05

BeitragMi, Dez 28, 2005 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry nochmal, aber wenn ich das hier schreibe g.gegner = explo
dann kommt diese fehlermeldung "Illegale type conversion", wisst ihr vieleicht was da falsch ist, ich möchte einfach wenn ein gegner getroffen wird, das dieser gegner der wo getroffen wird durch ein anderes bild ersetzt wird, ich danke euch schonmal für die hilfe 8)

Christian

Living Dead

BeitragFr, Dez 30, 2005 11:58
Antworten mit Zitat
Benutzer-Profile anzeigen
hab das jetzt noch nie ausprobiert aber du könntest doch einfach ein Type für die explosion machen. Das ist x und y enthalten. Wenn dann ein gegner geroffn ist und sterben soll dann kopierst du seine x,y daten einfach. Also ich meine dann erstellst vom Explosionstype nen neues Teil und in dem Type sollte x,y,und zeit drinstehen. Also wie gesagt du erstellst eins davon und kopierst x und y vom Gegner dann löschst du den gegner und dann setzt du die Zeit welche ja auch im Type enthalten ist auf vielleicht 20. Dann machst du bei jedem HAuptschleifen durchlauf eine Abfrage für alle existenten Teile vom Typ explosion und machst bei allen die Zeit eins runter und malst das explosions Bild an die x und y Position und wenn die Zeit null ist dann löschst du den Type wieder. Das hätte den Vorteil das du die Explosion ganz leiht animieren könntest. Du liest einfach mit animimage die 20 einzelbilder ein und machst dann bei drawimage die Zeit einfach als Faktor für das zi zeichnene Bild. Falls du mit animimage noch nicht arbeiten kannst oder so dann mach einfach ein Feld mit 20 Elementen und in jedes Element zeichnest du ein anderes Bild ein. Und machst dann da die Zeit rein.
Das Leben ist der Weg.
Der Tod ist das Ziel.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group