Moorhuhn(Moorgeist)Geist springt und bleibt nicht wo er soll

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Fantomas

Betreff: Moorhuhn(Moorgeist)Geist springt und bleibt nicht wo er soll

BeitragDo, Jun 21, 2007 18:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo.Ich bin total neu bei Blitz(2,3)D und bastel grade an ne art Moorhuhn nur mit geister.
ich möchte das sich wenn ich auf den geist klicke der geist verschwindet und irgendwo anders wieder auftaucht.so wie es jetzt ist springt er allerdings wild durch den bildschirm.Víelleicht könnt ihr mir ja helfen..Bitte

;----------Voreinstellung-----------------------------
Graphics 800,600,32,2
SetBuffer BackBuffer()
framerate = CreateTimer(50)
SeedRnd MilliSecs()
;_____________________________________________________

;-----Variablen und Bilder laden----------------------
Global hg = LoadImage("grosserhg.jpg")
Global geist = LoadAnimImage("geistanim.png",50,50,0,8)
layer1 = LoadImage("layer1.png")
layer2 = LoadImage("layer2.png")
Global fadenkreuz = LoadImage("fadenkreuz.png")
MaskImage fadenkreuz,255,0,255
Global hg_pos_x = 1500
Global hg_pos_y = 0
Global layer1_pos_x = 3000
Global layer1_pos_y = 0
Global layer2_pos_x = 2250
Global layer2_pos_y = 0
Global maus_pos_x = 400
Global maus pos_y = 300
Dim geister(16)
Global geist_pos_x
Global geist_pos_y
Global nochlebende = 0
Global geist_animation
Global geistanzahl
;__________________________________________________________


;------------Hauptprogramm---------------------------------
Repeat
Gosub hintergrund
Gosub geist_pruefen
Gosub geist_anzahl
DrawImage geist,geist_pos_x,geist_pos_y,geist_animation
Gosub maus
Flip
Cls
Until KeyHit(1)


;-----------------------------------------------------------


;------------Routinen---------------------------------------
;-----Hintergrund-------
.hintergrund
TileBlock hg
Return
;-----------------------


;------Maus-------------
.maus
maus_pos_x = MouseX()
maus_pos_y = MouseY()
DrawImage fadenkreuz,maus_pos_x - 15,maus_pos_y - 15
FlushMouse
Return

;-----geist pruefen-----
.geist_pruefen
If geistanzahl = 1 Then
geist_erstellen
EndIf
Return
;________________________

;----geist anzahl prüfen--------
.geist_anzahl
If ImagesCollide(geist,geist_pos_x,geist_pos_y,geist_animation,fadenkreuz,maus_pos_x - 15,maus_pos_y - 15,0) And MouseHit(1) Then
geistanzahl = geistanzahl + 1
If geistanzahl > 3 Then geistanzahl = 0
EndIf
If geistanzahl = 1 And geistanzahl < 2 Then
geist_erstellen
EndIf
Return


;---Functionen----------
Function geist_erstellen()
random
End Function

Function random()
geist_pos_x = Rnd(0,800)
geist_pos_y = Rnd(0,400)
End Function
 

Lador

BeitragDo, Jun 21, 2007 19:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, das Problem liegt vllt daran, dass du ein Dim-Feld voller Geister hast (17), aber nur 2 Variablen, die die Position speichern. Für die Übersicht wären Types besser, aber wenn du nur wenige Positionen wie Position und Animationsvariablen speichern willst, reicht ein Dim-Feld aus, da es auch etwas schneller ist. Trotzdem empfehle ich dir Types!

Und dann frägst du eben jeden Gegner ab, ob seine Position mit der der Maus übereinstimmt.

Auch würde ich statt Gosub lieber nur mit Funktionen arbeiten. Und für "geist_erstellen()" brauchst du nicht noch einmal eine Funktion, die dir die Position erstellt. Das ist nur Platzverschwendung. Also einfach in die Funktion "geist_erstellen()" "geist_pos_x = Rnd(800)" und dasselbe mit y.

Für weitere Fragen bin ich jeder Zeit per PN oder ICQ (416 740 942) bereit.

MFG Lador

StepTiger

BeitragFr, Jun 22, 2007 0:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich möchte nebenbei mal anmerken, dass es auch Code-Tags gibt Wink
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Fantomas

Betreff: Problem mit Rand

BeitragDi, Jun 26, 2007 17:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke erstmal für die antworten.ich bin sogar schon bissel weiter.Das mit den Types und Arrays und Dims muss ich noch lernen.Habe nun aber das Problem das meine Geister nicht an unterschiedlichen Stellen auftauchen sobald das spiel startet,obwohl ich eigentlich alles nach bestem Wissen (bin noch noob seit 06.2007) gebastelt habe.

;-----------Voreinstellungen-------------------
Graphics 800,600,32,2
framerate = CreateTimer(50)
SetBuffer BackBuffer()
SeedRnd MilliSecs()
;______________________________________________


;-------------Variablen------------------------
start_button = LoadAnimImage("start_button.png",100,30,0,1)
MaskImage start_button,255,0,255
Global layer1 = LoadImage("schloss.JPG")
Global layer2 = LoadImage("layer2.png")
MaskImage layer2,255,0,255
Global layer3 = LoadImage("layer3.png")
MaskImage layer3,255,0,255
Global geist1 = LoadAnimImage("geistanim.png",50,50,0,8)
;Global geist2 = LoadAnimImage("")
;Global geist3 = LoadAnimImage("")
Global fadenkreuz = LoadImage("fadenkreuz.png")
MaskImage fadenkreuz,255,0,255
Global geist1_erstellt
Global geist2_erstellt
Global geist3_erstellt
btn_pos_x = 350
btn_pos_y = 300
Global start = 0
;----------------------------------------------


;-------------Vorprogramm----------------------
Repeat
DrawImage start_button,btn_pos_x,btn_pos_y,0
Gosub maus
If ImagesCollide(start_button,btn_pos_x,btn_pos_y,0,fadenkreuz,maus_pos_x - 15,maus_pos_y - 15,0)And MouseDown(1) Then
start = 1
geist1_bedingung = 1
geist2_bedingung = 1
geist3_bedingung = 1
EndIf
Flip
Cls
Until start = 1
;----------------------------------------------
Flip
;---------------Hauptprogramm------------------
Repeat
For anim_geist = 0 To 7
If anim_geist = 7 Then anim_geist = 0
WaitTimer framerate
Gosub layer1
Gosub layer2
Gosub layer3
Gosub geist1_bedingung
Gosub geist2_bedingung
Gosub geist3_bedingung

Gosub maus
Flip
Cls
Next
Until KeyHit(1) = 1

;----------------------------------------------


;--------------Routinen------------------------


;--------------Layer1--------------------------

.layer1
TileImage layer1, layer1_pos_x, y
If KeyDown(203) = 1 Or maus_pos_x < 50 Then layer1_pos_x = layer1_pos_x + 2
If KeyDown(205) = 1 Or maus_pos_x > 750 Then layer1_pos_x = layer1_pos_x - 2
If layer1_pos_x > 0 Then layer1_pos_x = 0
If layer1_pos_x < -400 Then layer1_pos_x = -400
Return

;----------------------------------------------

;--------------Layer2--------------------------

.layer2
DrawImage layer2,layer2_pos_x,y
If KeyDown(203) = 1 Or maus_pos_x < 50 Then layer2_pos_x = layer2_pos_x + 4
If KeyDown(205) = 1 Or maus_pos_x > 750 Then layer2_pos_x = layer2_pos_x - 4
If layer2_pos_x > 0 Then layer2_pos_x = 0
If layer2_pos_x < -800 Then layer2_pos_x = -800
Return

;----------------------------------------------

;--------------Layer3--------------------------

.layer3
DrawImage layer3,layer3_pos_x,y
If KeyDown(203) = 1 Or maus_pos_x < 50 Then layer3_pos_x = layer3_pos_x + 8
If KeyDown(205) = 1 Or maus_pos_x > 750 Then layer3_pos_x = layer3_pos_x - 8
If layer3_pos_x > 0 Then layer3_pos_x = 0
If layer3_pos_x < -1600 Then layer3_pos_x = -1600
Return

;----------------------------------------------

;-----------------Maus-------------------------
.maus
maus_pos_x = MouseX()
maus_pos_y = MouseY()
DrawImage fadenkreuz,maus_pos_x - 15,maus_pos_y - 15
FlushMouse
Return

;---------------------------------------------

;--------Geist1 Bedingung---------------------
.geist1_bedingung
If geist1_bedingung = 1 Then
geist1_erstellen
EndIf
DrawImage geist1,geist1_pos_x,geist_2_pos_y,anim_geist
geist1_pos_x = geist1_pos_x + 1
Return
;---------------------------------------------

;--------Geist2 Bedingung---------------------
.geist2_bedingung
If geist2_bedingung = 1 Then
geist2_erstellen
EndIf
DrawImage geist1,geist2_pos_x,geist2_pos_y,anim_geist
geist2_pos_x = geist2_pos_x + 2
Return
;---------------------------------------------

;--------Geist3 Bedingung---------------------
.geist3_bedingung
If geist3_bedingung = 1 Then
geist3_erstellen
EndIf
DrawImage geist1,geist3_pos_x,geist3_pos_y,anim_geist
geist3_pos_x = geist3_pos_x + 4
Return
;---------------------------------------------

;--------------Functionen----------------------

;--------Function geist1 erstellen------------
Function geist1_erstellen()
geist1_pos_x = Rnd(0,-1200)
geit1_pos_y = Rnd(0,400)
geist1_bedingung = 0
Return
End Function

;---------------------------------------------

;--------Function geist2 erstellen------------
Function geist2_erstellen()
geist2_pos_x = Rnd(0,-2400)
geit2_pos_y = Rnd(0,400)
geist2_bedingung = 0
Return
End Function

;---------------------------------------------

;--------Function geist3 erstellen------------
Function geist3_erstellen()
geist3_pos_x = Rnd(0,-4800)
geit3_pos_y = Rnd(0,400)
geist3_bedingung = 0
Return
End Function

;---------------------------------------------


Vielen Dank schonmal im Vorraus .-)

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group