Raketen genau vor einem bild anzeigen, das ist schwer?!

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Blitzkrieg Bop

Betreff: Raketen genau vor einem bild anzeigen, das ist schwer?!

BeitragSo, Apr 18, 2004 13:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Also, wie mache ich das, wenn ich eine Rake darstellen will, die immer genau vor der SPieler position sein soll, egal wie sich der spieler bewegt?
(bewegung nur von links nach recht sund oben nach unten!)
ich habe es wie folgt probiert, das geht aber nicht...

Code: [AUSKLAPPEN]

   Function rakete_gegner()
   rg.rgegner = New rgegner
   rg\x = ImageWidth(rgegner)+205
   rg\y = ImageHeight(rgegner)+200
   End Function


also, die rakete soll immer genau vor dme gegner starten, egal wie der sich bewegt! danke!
~ Hey Ho Let's Go ~
 

Blitzkrieg Bop

BeitragSo, Apr 18, 2004 14:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Sad
~ Hey Ho Let's Go ~
 

Omenaton_2

BeitragSo, Apr 18, 2004 14:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Nehmen wir mal an, die Welt wird von oben gezeigt, da du geschrieben hast, es gäbe links, rechts, oben, unten.

Du solltest die Ausrichtung der Figuren (Gegner und Held) in einer Variable speichern.
Wenn die Figur nach oben ausgerichtet ist, (SELECT CASE) dann wird die Raketenposition auf Gegner_Y - 1 gesetzt, nach unten y+1, links x-1 und rechts x+1. (1 ist nicht unbedingt 1, es kann die Größe der Raketengrafik sein.)

Was die Ausrichtung angeht. Du weißt wie am Anfang (beim ersten Zeichnen) die Ausrichtung ist, dann je nach dem in welche Richtung sich das Objekt bewegt, ändert sich die Ausrichtung.

Ich rate dir lieber mehr mit Koordinaten als mit ImageWidth und sowas zu arbeiten.
 

Blitzkrieg Bop

BeitragSo, Apr 18, 2004 14:56
Antworten mit Zitat
Benutzer-Profile anzeigen
hm, ich glaub du hast recht, doch dien beispiekl hab ich net gechekct! bitte code beispiel ?! Embarassed Rolling Eyes
~ Hey Ho Let's Go ~
 

girgl

BeitragSo, Apr 18, 2004 18:11
Antworten mit Zitat
Benutzer-Profile anzeigen
servus bob
du speicherst einfach die aktuelle position deines spielers in ner variable und setzt die gleich der position der rakete.Je nachdem wie die spielrichtung is,addierst du nen wert der x-oder y-achse hinzu

Beispiel:
Code: [AUSKLAPPEN]
;Raumschiff bewegt sich von links nach rechts
SpielerX=50 ;X-Position
SpielerY=300;
RaketeX=SpielerX+20
RaketeY=SpielerY
Drawimage Rakete,RaketeX,RaketeY


Mit RaketeX=SpielerX+20 wird erreicht,dass die rakete immer 20 pixel vor dem raumschiff gezeichnet wird.

Das alles musste natürlich in die hauptschleife packen,da sich ja die position des raumschiffs ständig ändern kann
 

Blitzkrieg Bop

BeitragSo, Apr 18, 2004 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
so könnte ich das auch! aber es geht darum, das ich das mit Types darstelle!
~ Hey Ho Let's Go ~

Flachzange

BeitragSo, Apr 18, 2004 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
gib mal den ganzen code...dann kann ich das da gleich reinschreiben!
sonst wird das hier wieder so ein Endlos-Thread! Exclamation
I'm no superman...!

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Apr 18, 2004 23:02
Antworten mit Zitat
Benutzer-Profile anzeigen
dann mach doch noch ein typefield mit der richtung und beim umsetzen orientierst du die an diese Type\richtung
und verzweigst passend mit select je nach Richtung und setzt die werte neu
[BB2D | BB3D | BB+]
 

Blitzkrieg Bop

BeitragSo, Apr 18, 2004 23:24
Antworten mit Zitat
Benutzer-Profile anzeigen
ralli, ich versteh kein wort, der code steht dea oben!!!
~ Hey Ho Let's Go ~

Flachzange

BeitragMo, Apr 19, 2004 10:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich dich jetzt richtig verstanden habe, dann sollte es das hier sein:
Wink


Code: [AUSKLAPPEN]


Global PlayerDirection=1
Global PlayerX=0
Global PlayerY=0

Type rgegner
Field x=0
Field y=0
Field dir=1
End Type

while not keyhit(1)

if keyhit(203) then
  PlayerDirection=1
  PlayerX=PlayerX-1
endif

if keyhit(205) then
  PlayerDirection=2
  PlayerX=PlayerX+1
endif

if keyhit(200) then
  PlayerDirection=3
  PlayerY=PlayerY-1
endif

if keyhit(208) then
  PlayerDirection=4
  PlayerY=PlayerY+1
endif

if keyhit(57) then rakete_gegner()

handle_rockets()

wend
   
Function rakete_gegner()
   rg.rgegner = New rgegner

   Select PlayerDirection
   case 1
   rg\x = PlayerX-205
   rg\y = PlayerY
   rg\dir=1
   case 2
   rg\x = PlayerX+205
   rg\y = PlayerY
   rg\dir=2
   case 3
   rg\x = PlayerX
   rg\y = PlayerY-200
   rg\dir=3
   case 4
   rg\x = PlayerX
   rg\y = PlayerY+200
   rg\dir=4
   end select 
End Function



Function handle_rockets()

; Raketen weiter steuern nach abschuss...

end function

I'm no superman...!
 

Blitzkrieg Bop

BeitragMo, Apr 19, 2004 12:52
Antworten mit Zitat
Benutzer-Profile anzeigen
hm , kannst du mir die variablen und den code nochmal erklären, ich steig net ganz durch! danke
übrigens: der rg\x wert, wird später per zufall bestimmt. würde dieser wert festliegen , könnte ich das prob glaube ich slesbt lösen, aber nun erklär mal den code bitte danke
~ Hey Ho Let's Go ~

Flachzange

BeitragMo, Apr 19, 2004 14:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hä was soll denn das fürn Sinn machen wenn die Koordinaten der Rakete zufällig festgelegt werden? Ich denke die sollen vor dem Player erscheinen? Naja der Code erklärt sich doch wohl von selber oder?

Über die Variable PlayerDirection lasse ich feststellen in welche Richtung sich der Player bewegt (1: links, 2: rechts, 3: hoch, 4: runter)

ich frage dann über keyhit() die gedrückte pfeiltaste ab und verschiebe den player je nach dem nach links, rechts, oben oder unten und lege die Bewegungsrichtung in PlayerDirection neu fest.

In rakete_gegner() prüfe ich dann welche Bewegungsrichtung vorliegt und lasse die neu erstellte Rakete dementsprechend vor dem Player positionieren. Außerdem weise ich der Rakete eine eigene Bewegungsrichtung zu (rg\dir), die der Playerrichtung entspricht, um die Rakete in ihrer weiteren Flugbahn noch steuern zu können.

Naja und dann in Handle_Rockets() werden dann die einzelnen Raketentypes der Reihe nach durchgegangen um sie weiter zu bewegen oder um auf Kollision zu prüfen oder was auch immer du damit dann vor hast! Alles Klaro?
I'm no superman...!

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Apr 19, 2004 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
genau so hattee ich das auch gedacht!
[BB2D | BB3D | BB+]
 

Blitzkrieg Bop

BeitragMo, Apr 19, 2004 16:05
Antworten mit Zitat
Benutzer-Profile anzeigen
hmpf, also ich weiß nicht ob ich das so hinkriege! denn:
ich hab das ein bisschen falsch beshcrieben und mache es nun anschaulich:

Die Raketen gehören zu Gegner Schiffen. Diese Gegner Schiffe stelle ich als Types dar und sie werden per Zufall (rand) poitioniert. Hier taucht das Problem auf, Denn hätte ich von anfang an eine feste variabel meintwegen: x = 50 und y = 50 für das Shciff, könnte ich das selber.
Die Rakete soll nun, wenn das Gegnerschiff schiesst, genau vorne beim gegner herauskommen. Alles klar? DAnke für dne Code Zange, aber ich weiß nicht genau wie ich dne enutzen soll, wenn für das Gegner schiff keine feste , sondern eine zufalssvariabel benutzt wird Rolling Eyes
~ Hey Ho Let's Go ~
 

Apocalyptic

BeitragMo, Apr 19, 2004 16:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast doch die Position, nachdem du sie mit Rand() festgelegt hast, oder springen die Schiffe irgendwo auf dem Bildschirm rum?
Suum cuique

[ www.ffs-net.de.vu ] [ Raycaster ]
 

Blitzkrieg Bop

BeitragMo, Apr 19, 2004 16:23
Antworten mit Zitat
Benutzer-Profile anzeigen
und wie genau geht dsa nun, wenn da in ner function steht:
rg\x = rand(100,200)
rg\y = rand(200,300)
~ Hey Ho Let's Go ~
 

Blitzkrieg Bop

BeitragMo, Apr 19, 2004 16:37
Antworten mit Zitat
Benutzer-Profile anzeigen
also das prob ist eigentlich, wie kann ich machen, das das geht:
Code: [AUSKLAPPEN]


   Function gegner()
   g.gegner = New gegner
   g\x =  Rand(50,600)
   g\y =  Rand(100,500)
   End Function
   
   Function rakete_gegner()
   rg.rgegner = New rgegner
   rg\x = g\x ;<<<
   rg\y = g\y ;<<<
         End Function


Also wie kann ich das Prob kösen, das ich 2 Types halt abfragen kann?
~ Hey Ho Let's Go ~

Hubsi

BeitragMo, Apr 19, 2004 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Machs nicht in einer Function sondern lege den Schuss in der Schleife an in der die Gegner abgearbeitet werden. Ich denke da liegt der Hase im Pfeffer.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Blatolo

BeitragMo, Apr 19, 2004 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Type gegner
   Field x,y
End Type

Type rakete
   Field x,y
End Type

gegner.gegner=New gegner
gegner\x=Rand(50,600)
gegner\y=Rand(100,500)
schuss(gegner.gegner)

For rakete.rakete=Each rakete
   rakete\y=rakete\y+1
Next

Function schuss(gegner.gegner)
   rakete.rakete=New rakete
   rakete\x=gegner\x
   rakete\y=gegner\y
End Function


Sollte ungefähr das sein was du brauchst.
Musst halt die vari Namen anpassen.
Soll ja nur das Prinzip zeigen.
EInfach ne function machen die den gegner von dem der Schuss ausgeht als Parameter übernimmt.

Markus2

BeitragMo, Apr 26, 2004 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Em, gib deinem Schiff doch mal nen Winkel damit es weiß wo es
hinschießen soll .

Raketen Beispiel ist auch im CodeArchiv .

Sonnst hätte ich noch ein Mini Netzwerkgame wo Schiffe als
Linie rum fahren und Raketen abschießen können .

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group