zufälliges Bewegen vom Gegner [gelöst]
Übersicht

damagerIIBetreff: zufälliges Bewegen vom Gegner [gelöst] |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
kann mir jemand vielleicht helfen das sich das objekt gegner zufällig auf der x achse im bild bewegt?:
Code: [AUSKLAPPEN] Global Hero = LoadImage("shuttle.bmp")
Global laser = LoadImage("shot2.bmp") Global gegner = LoadImage("hero2.bmp") MaskImage hero,0,0,0 MaskImage laser,255,255,255 MaskImage gegner,0,0,0 Global hero_x = 500, hero_y = 600, shot_counter = 0 Global gegner_x = 500, gegner_y = 50 Global time1 Global time2 Type shot Field shot_x Field shot_y End Type time1=MilliSecs() Repeat Cls time2=MilliSecs() moveHero() createLaser() Flip Until KeyHit(1) Function moveHero() If KeyDown(203) Then hero_x = hero_x - 3 If KeyDown(205) Then hero_x = hero_x +3 ;rauf und runter If KeyDown(200) Then hero_Y = hero_y -3 If KeyDown(208) Then hero_y = hero_y +3 DrawImage hero, hero_x, hero_y End Function Function createlaser() If KeyHit(57) Then shot_counter = shot_counter +1 End If If shot_counter = 1 Then info.shot = New shot info\shot_x = hero_x +40 info\shot_y = hero_y shot_counter = 0 End If For info.shot = Each shot info\shot_y = info\shot_y -8 DrawImage laser,info\shot_x,info\shot_y Next DrawImage gegner, gegner_x, gegner_y End Function Danke schonmal im vorraus mfg damagerII ![]() |
||
- Zuletzt bearbeitet von damagerII am Fr, Dez 04, 2009 15:52, insgesamt 2-mal bearbeitet
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
niemand wird dir hier code schreiben...
schau dir die befehle SeedRnd und Rand bzw Rnd an der Rest sollte dann klar sein. |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi
bitte benütze die Codetags! Code: [AUSKLAPPEN] [code]Hier kommt Code[/code]
Schau dir mal Rnd ![]() ![]() ![]() Pseudocode Code: [AUSKLAPPEN] if millisecs()>time+300 ;wenn 300 millisecs vergangen sind
time=millisecs() richtung=rand(1,2) ; die Richtung bestimmen endif speed=rand(1,5) ;Zufällige Geschwindigkeit errechnen if richtung=1 playerx=playerx+speed ;Falls vor 300 ms richtung=1 war den player nach rechts bewegen endif if richting=2 playerx=playerx-speed ; Falls vor 300 ms richtung=2 war den player nach links bewegen endif Edit: Zu spät ![]() mfg ozzi |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
damagerIIBetreff: thx |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok danke ![]() |
||
damagerII |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich habe es ausprobiert aber leider nicht hinbekommen... ![]() Zitat: if millisecs()>time+300 ;wenn 300 millisecs vergangen sind
time=millisecs() richtung=rand(1,2) ; die Richtung bestimmen endif speed=rand(1,5) ;Zufällige Geschwindigkeit errechnen if richtung=1 playerx=playerx+speed ;Falls vor 300 ms richtung=1 war den player nach rechts bewegen endif if richting=2 playerx=playerx-speed ; Falls vor 300 ms richtung=2 war den player nach links bewegen endif |
||
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
"richting"?
Ich empfehle dir, IDEal zu nutzen. Dann merkst du nämlich schnell, ob alles richtig geschrieben ist. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
damagerII |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich werde es ausprobieren könnte von vorteil sein ![]() naja mein problem ist das ich nicht verstehe wie ich den code: Zitat: if millisecs()>time+300 ;wenn 300 millisecs vergangen sind
time=millisecs() richtung=rand(1,2) ; die Richtung bestimmen endif speed=rand(1,5) ;Zufällige Geschwindigkeit errechnen if richtung=1 playerx=playerx+speed ;Falls vor 300 ms richtung=1 war den player nach rechts bewegen endif if richting=2 playerx=playerx-speed ; Falls vor 300 ms richtung=2 war den player nach links bewegen endif in mein game einzubauen: Code: [AUSKLAPPEN] Global Hero = LoadImage("shuttle.bmp")
Global laser = LoadImage("shot2.bmp") Global gegner = LoadImage("hero2.bmp") MaskImage hero,0,0,0 MaskImage laser,255,255,255 MaskImage gegner,0,0,0 Global hero_x = 500, hero_y = 600, shot_counter = 0 Global gegner_x = 500, gegner_y = 50 Global time1 Global time2 Type shot Field shot_x Field shot_y End Type time1=MilliSecs() Repeat Cls time2=MilliSecs() moveHero() createLaser() Flip Until KeyHit(1) Function moveHero() If KeyDown(203) Then hero_x = hero_x - 3 If KeyDown(205) Then hero_x = hero_x +3 ;rauf und runter If KeyDown(200) Then hero_Y = hero_y -3 If KeyDown(208) Then hero_y = hero_y +3 DrawImage hero, hero_x, hero_y End Function Function createlaser() If KeyHit(57) Then shot_counter = shot_counter +1 End If If shot_counter = 1 Then info.shot = New shot info\shot_x = hero_x +40 info\shot_y = hero_y shot_counter = 0 End If For info.shot = Each shot info\shot_y = info\shot_y -8 DrawImage laser,info\shot_x,info\shot_y Next DrawImage gegner, gegner_x, gegner_y End Function ich weiß nicht genau was ich anstatt richtung oder player einsetzen muss, wenn man es in mein game einbauen will??? ![]() |
||
Lion |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wie wärs mit gegner_x, gegner_y?
Und richtung kannste doch so lassen, verwendest die variable doch nirgends anders. abgesehen von meiner empfehlung für types bei den gegnern kannste das doch einfach übernehmen und in die hauptschleife packen |
||
Intel Core 2 Quad 4x2.66 ghz - 4gb ddr2 - nvidia GeForce GTX660 2gb
Intel Atom 1x1.83 ghz - 2gb ddr2 - intel GMA 3150 256mb AMD A10-5750M 4x2.5 ghz - 8 gb ddr4 - AMD R9 M290x |
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wär glaube ich ganz gut, wenn du dir mal ein paar Grundlagentutorials anschauen würdest ![]() |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
damagerII |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke euch beiden ![]() ich habe den code jetzt eingebaut: Code: [AUSKLAPPEN] Global Hero = LoadImage("shuttle.bmp")
Global laser = LoadImage("shot2.bmp") Global gegner = LoadImage("hero2.bmp") MaskImage hero,0,0,0 MaskImage laser,255,255,255 MaskImage gegner,0,0,0 Global hero_x = 500, hero_y = 600, shot_counter = 0 Global gegner_x = 500, gegner_y = 50 Global time1 Global time2 Global leben = 0 Global leben2 = 0 Type shot Field shot_x Field shot_y End Type time1=MilliSecs() Repeat Cls time2=MilliSecs() moveHero() createLaser() collidegegner() moveFeind() Flip Until KeyHit(1) Function moveHero() If KeyDown(203) Then hero_x = hero_x - 3 If KeyDown(205) Then hero_x = hero_x +3 If KeyDown(200) Then hero_Y = hero_y -3 If KeyDown(208) Then hero_y = hero_y +3 DrawImage hero, hero_x, hero_y End Function Function moveFeind() If MilliSecs()>time+300 ;wenn 300 millisecs vergangen sind time=MilliSecs() richtung=Rand(1,2) ; die Richtung bestimmen EndIf speed=Rand(1,5) ;Zufällige Geschwindigkeit errechnen If richtung=1 gegner_x=gegner_x+speed ;Falls vor 300 ms richtung=1 war den player nach rechts bewegen EndIf If richting=2 gegner_x=gegner_x-speed ; Falls vor 300 ms richtung=2 war den player nach links bewegen EndIf End Function Function createlaser() If KeyHit(57) Then shot_counter = shot_counter +1 End If If shot_counter = 1 Then info.shot = New shot info\shot_x = hero_x +40 info\shot_y = hero_y shot_counter = 0 End If For info.shot = Each shot info\shot_y = info\shot_y -8 DrawImage laser,info\shot_x,info\shot_y Next Text 0,0, leben2 + "%" DrawImage gegner, gegner_x, gegner_y End Function Function collidegegner() For info.shot = Each shot If ImagesCollide(gegner, gegner_x, gegner_y, 0, laser, info\shot_x, info\shot_y, 0) Then leben2=leben2+5 EndIf If leben2=150 Then End EndIf Next End Function und es klappt, der gegner bewegt sich... nur hat sich dadurch folgendes problem ergeben: der gegner bewegt sich die ganze zeit in eine richtung (bis jetzt immer nach rechts) und verlässt dann auch das fenster (also ist nicht mehr zu sehen). Wie bekomme ich das hin das er vor dem map ende stoppt und sich auch nach links bewegt???? ![]() |
||
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. mpmxyz hat Folgendes geschrieben: "richting"? ->IDEal + immer lokale Variablen mit Local deklarieren
2. Wenn der Gegner zu weit rechts bzw links ist und er aber in diese Richtung geht, sollte die Richtung geändert werden 3. "Richtung" und "time" müssen Global sein, da sie nämlich sonst nur temporär bzw. lokal in der Funktion erstellt werden und danach wieder verschwinden. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
damagerII |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hey danke jetzt klappts perfekt ![]() |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nach dem Bewegen schaust du einfach ob player_x kleiner ist als zmb 800 und grösser als 0, falls dem nicht so ist setzt du den Player zurück und änderst die Variable Richtung!
Achja vermeide doubbleposts, benutze den Editieren Button. mfg ozzi |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
damagerIIBetreff: okay |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group