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

FantomasBetreff: Moorhuhn(Moorgeist)Geist springt und bleibt nicht wo er soll |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich möchte nebenbei mal anmerken, dass es auch Code-Tags gibt ![]() |
||
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 ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
FantomasBetreff: Problem mit Rand |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 .-) |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group