Hintergrund Unter dem User bewegen
Übersicht BlitzBasic Beginners-CornerGehe zu Seite 1, 2, 3, 4 Weiter
Bobo2040Betreff: Hintergrund Unter dem User bewegen |
Mi, Jul 17, 2013 17:59 Antworten mit Zitat |
|
---|---|---|
Hi Ich hab noch nicht sonderlich viwl in BlitzBasic gemacht aber ich verusche mich an nem 2D spiel
und zwar funktioniert alles wie es soll also der User "Folgt" der maus bleibt aber dabei in der mitte des fensters stehen soll er auch ... aber ich möchte ,das die Map sich unter dem User bewegt und zwar dorthin wo der User hinklickt... also klickt er nach oben rechts dann soll die map sich unterihm bewegen ;D und zwar entgegengesetzt also die map soll dann nach unten links wandern damit es so aussieht als ob der User sich bewegt Aber wie kann ich das machen ? Mein Code bissher ... klappt eig. alles wies soll ... Code: [AUSKLAPPEN] Graphics 640,480,16,2 SetBuffer BackBuffer() ship_left_top = LoadImage("images/ship_left_top.png") ship_top = LoadImage("images/ship_normal.png") ship_right_top = LoadImage("images/ship_right_top.png") ;War die erste Reihe ship_left = LoadImage("images/ship_left.png") ship_normal = LoadImage("images/ship_normal.png") ship_right = LoadImage("images/ship_right.png") ;War die 2te Reihe ship_left_bottom = LoadImage("images/ship_left_bottom.png") ship_bottom = LoadImage("images/ship_bottom.png") ship_right_bottom = LoadImage("images/ship_right_bottom.png") ;Letzter Reihe ;Map map = LoadImage("images/map.png") ;Musik Abspielen *_* PlayMusic("sounds/bg_sound.mp3",1) Repeat Cls y=MouseY() ;Maus Koordinaten x=MouseX() If MouseDown(1) Then If y<160 And x<218 Then DrawImage ship_left_top,230,180 ElseIf y<160 And x<436 Then DrawImage ship_top,230,180 ElseIf y<160 And x<640 Then DrawImage ship_right_top,230,180 ElseIf y<320 And x<218 Then DrawImage ship_left,230,180 ElseIf y<320 And x<436 Then DrawImage ship_normal,230,180 ElseIf y<320 And x<640 Then DrawImage ship_right,230,180 ElseIf y<480 And x<218 Then DrawImage ship_left_bottom,230,180 ElseIf y<480 And x<436 Then DrawImage ship_bottom,230,180 ElseIf y<480 And x<640 Then DrawImage ship_right_bottom,230,180 EndIf Else DrawImage ship_normal,230,180 EndIf ;rawImage map,230,180 Flip Delay(5) Until KeyHit(1) End EDIT: Wie kann ich eig. die Hintergrund Grafik also Hintergrund Grafik machen? weil BB da ja nicht zwischen unterscheidet... weil momentan überlappen sich das schiff und der user -.- |
||
- Zuletzt bearbeitet von Bobo2040 am Mi, Jul 17, 2013 19:19, insgesamt einmal bearbeitet
Krusby |
Mi, Jul 17, 2013 18:40 Antworten mit Zitat |
|
---|---|---|
Was dir helfen könnte wären Robs Tutorials 1 - 6 zu RPG siehe mein Link !
Dort werden Grundlegende Sachen ganz gut erklärt auch Scrolling ! https://www.blitzforum.de/foru...light=robs |
||
Gewinner des BCC 76 |
Midimaster |
Mi, Jul 17, 2013 20:42 Antworten mit Zitat |
|
---|---|---|
Das ist im Grunde ganz einfach:
Du hast ein Koordinatensystem, die Welt ist darauf fest und unbeweglich. Der Spieler bewegt sich in dieser Welt. Die "Kamera" bewegt sich immer mit dem Spieler mit. Das sieht dann so aus, als ob der Untergrund sich bewegen würde. Wenn Du alles so aufbaust, muss man wenig darüber nachdenken und es funktioniert "wie von selbst". Beim Zeichnen wird von allen Koordinaten die Kamera immer abgezogen. Die Kamera befindet sich immer einen halben Bildschirm links und oben vom Spieler: BlitzBasic: [AUSKLAPPEN] Graphics 800,600 |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
Bobo2040 |
Mi, Jul 17, 2013 21:02 Antworten mit Zitat |
|
---|---|---|
Danke das ist echt nett von dir
Aber was bedeutet dieses "Maus" Nach repeat ? |
||
Kruemelator |
Mi, Jul 17, 2013 21:03 Antworten mit Zitat |
|
---|---|---|
Das ist ein Funktionsaufruf, das selbe wie Maus() | ||
Bobo2040 |
Mi, Jul 17, 2013 21:05 Antworten mit Zitat |
|
---|---|---|
Aso okay danke
Okay ich hab dann Noch ein Problem Und zwar wie kann ich jetzt für die Entsprechenden Koordinaten Andere Bilder fürs Schiffe ausgeben ? |
||
Bobo2040 |
Mi, Jul 17, 2013 22:31 Antworten mit Zitat |
|
---|---|---|
So ich habe das mal So abgeändert... aber sobald ich auf Run drücke Stürzt das Programm sofort ab -.-'
ICh weiß nicht wo mein Fehler ist kann mir jemand helfen bitte ? Oder mache ich das alles komplett Falsch... ? Ich Arbeite viel in PHP und habs halt so gemacht wie ichs in PHP gelöst hätte... Code: [AUSKLAPPEN] Graphics 640,480,16,2 SetBuffer BackBuffer() Global SpielerX=900 Global SpielerY=900 Global SpielerShip=LoadImage("/images/ship_normal.png") Repeat Maus KameraX=SpielerX-GraphicsWidth()/2; KameraY=SpielerY-GraphicsHeight()/2 Cls For i=0 To 20 For j=0 To 20 Text i*100-KameraX,j*100-KameraY,i+"/"+j Next Next DrawImage SpielerShip,SpielerX-KameraX-25,SpielerY-KameraY-25 ;Oval SpielerX-KameraX-25,SpielerY-KameraY-25,50,50,0 Flip Until KeyHit(1) Function Maus() y=MouseY() ;Maus Koordinaten x=MouseX() If MouseDown(1) Then If y<160 And x<218 Then SpielerX=SpielerX-10 SpielerY=SpielerY-10 SpielerShip=LoadImage("/images/ship_left_top.png") ElseIf y<160 And x<436 Then SpielerY=SpielerY-10 SpielerShip=LoadImage("/images/ship_normal.png") ElseIf y<160 And x<640 Then SpielerX=SpielerX+10 SpielerY=SpielerY-10 SpielerShip=LoadImage("/images/ship_right_top.png") ElseIf y<320 And x<218 Then SpielerX=SpielerX-10 SpielerShip=LoadImage("/images/ship_left.png") ElseIf y<320 And x<436 Then SpielerX=SpielerX+10 SpielerY=SpielerY-10 SpielerShip=LoadImage("/images/ship_normal.png") ElseIf y<320 And x<640 Then SpielerX=SpielerX+10 SpielerShip=LoadImage("/images/ship_right.png") ElseIf y<480 And x<218 Then SpielerX=SpielerX-10 SpielerY=SpielerY+10 SpielerShip=LoadImage("/images/ship_left_bottom.png") ElseIf y<480 And x<436 Then SpielerY=SpielerY+10 SpielerShip=LoadImage("/images/ship_bottom.png") ElseIf y<480 And x<640 Then SpielerX=SpielerX+10 SpielerY=SpielerY+10 SpielerShip=LoadImage("/images/ship_right_bottom.png") EndIf EndIf End Function |
||
XeresModerator |
Mi, Jul 17, 2013 22:41 Antworten mit Zitat |
|
---|---|---|
Bitte vermeide Doppelposts.
Wenn du ein Problem hast, dann schalte den Debugger ein und nenne uns die Zeile, wo der Fehler auftritt - ansonsten können auch wir ewig suchen. Benutze in deinem Code alle Load Funktionen nur ein mal vor der Hauptschleife. Würde dein Code ansonsten funktionieren, würdest du den Speicher per LoadImage so lange füllen bis er Platzt. Benutze beim Aufruf von Funktionen immer Klammern - dann ist Ersichtlich, dass es eine Funktion ist und man vermeidet eine Menge undurchschaubarer Probleme. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Bobo2040 |
Mi, Jul 17, 2013 23:38 Antworten mit Zitat |
|
---|---|---|
Er gibt mir die FehlerMeldung aus Invalid Image handle
Im Debug Log steht nix... DrawImage SpielerShip,SpielerX-KameraX-25,SpielerY-KameraY-25 <-- Das hat er rot makiert... aber ich weiß nicht wo jetzt der fehler ist... |
||
XeresModerator |
Do, Jul 18, 2013 0:24 Antworten mit Zitat |
|
---|---|---|
Ich würde den Slash am Anfang vom Bildpfad weglassen. Ins Debuglog kannst du schreiben, ob die Bilder tatsächlich geladen wurden:
BlitzBasic: [AUSKLAPPEN] Global SpielerShip=LoadImage("/images/ship_normal.png") Wenn das Bild geladen werden konnte, kommt da eine Zahl ungleich 0 raus. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Bobo2040 |
Do, Jul 18, 2013 0:35 Antworten mit Zitat |
|
---|---|---|
Okay es wird kein Bild geladen... hmm... ich weiß aber auch nicht warum -.-'
Ich glaube aber das es daran Liegt,das die var SpielerShip in ner Funktion gesetzt wird... muss ich die dann auch global machen ? wird die dann überhaupt übergeben ? Aber eig. sollte er falls nicht übergeben wurde die ganz normal gesetzte globale SpielerShip benutzen.. |
||
XeresModerator |
Do, Jul 18, 2013 0:38 Antworten mit Zitat |
|
---|---|---|
Was Global gesetzt wurde, ist auch Global verfügar - also auch in Funktionen. Der Fehler wird beim Pfad liegen; z.B. könntest du "bekannte dateierweiterungen ausblenden" in den windows ordneroptionen aktiviert haben und das Bild heißt nun "ship_normal.png.png" - oder der Unterordner ist falsch geschrieben, oder ... Das könntest du alles mit Filetype debuggen. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Bobo2040 |
Do, Jul 18, 2013 0:42 Antworten mit Zitat |
|
---|---|---|
Ne wenn ich das Bild ganz normal Zeichnen Lasse klappts -.- | ||
Midimaster |
Do, Jul 18, 2013 9:28 Antworten mit Zitat |
|
---|---|---|
Du hast ja 8 verschiedene Schiff-Bilder. Die lädst Du alle zu Anfang in 8 verschiedene Variablen SpielerShip_1 bis SpielerShip_8. In der Maus() Funktion weist Du dann der Variablen SpielerShip die jeweils richtige zu:
BlitzBasic: [AUSKLAPPEN] ; alle 8 Bilder laden: |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
Bobo2040 |
Do, Jul 18, 2013 10:43 Antworten mit Zitat |
|
---|---|---|
Hey cool danke ich probiers gleich mal aus
Okay danke es hat funktioniert... das wäre das letzte auf das ich gekommen wäre Aber 2 Fragen warum musste ich die "doppelt" in einer Variable aufrufen ? Also die Bilder also warum konnte ich nicht einfach SpielerShip ändern je nach dem was für ein Bild geladen wurde.... ? Und die 2. Frage ich möchte jetzt einen Hintergrund reinmachen aber wenn ich das BIld reinmache und Positioniert habe dann Dreht sich das Schiff ganz normal wie es soll aber es Bewegt sich nicht zur map... wie kann ich die map "fixieren" ? das das schiff auf der map fliegt ? |
||
- Zuletzt bearbeitet von Bobo2040 am Do, Jul 18, 2013 10:58, insgesamt einmal bearbeitet
JamaginBetreff: so gehts |
Do, Jul 18, 2013 10:48 Antworten mit Zitat |
|
---|---|---|
Hier ein kleiner Code wie es klappen könnte! Mit Types ginge es noch effizienter!
Code: [AUSKLAPPEN] Graphics 640, 480, 16, 2 SetBuffer BackBuffer() ; *** neu zugefügt *** Global frametimer = CreateTimer(60) Global clip_w% = 64 Global clip_h% = 64 Global ship_first% = 0 Global ship_frames% = 10 Global ship_aktuell% = 0 Global speedX# = 10 Global speedY# = 10 Global centerX% = GraphicsWidth ()/2 Global centerY% = GraphicsHeight ()/2 Global xleft% = centerX-102 Global xright% = centerX+102 ; *** ende zugefügt *** Global SpielerX = centerX Global SpielerY = centerY Global SpielerShip=LoadAnimImage("images/ships.png", clip_w, clip_h, ship_first, ship_frames) MaskImage SpielerShip, 10, 10, 10 Repeat Cls Maus() KameraX = SpielerX-GraphicsWidth()/2; KameraY = SpielerY-GraphicsHeight()/2 For i = 0 To 20 For j = 0 To 20 Text i * 100 - KameraX, j * 100 - KameraY, i + "/" + j Next Next DrawImage SpielerShip, SpielerX - KameraX - 25, SpielerY - KameraY - 25, ship_aktuell ;Oval SpielerX-KameraX-25,SpielerY-KameraY-25,50,50,0 Flip WaitTimer (frametimer) Until KeyHit(1) Function Maus() y = MouseY() ;Maus Koordinaten x = MouseX() Text 10, 10, "X = "+x Text 10, 25, "Y = "+y If MouseDown(1) Then ; Steuerung diagonal If y < 160 If x < xleft Then SpielerX = SpielerX - speedX SpielerY = SpielerY - speedY ; diagonal links rauf ship_aktuell = 6 ElseIf x > xright Then SpielerX = SpielerX + speedX SpielerY = SpielerY - speedY ; diagonal rechts rauf ship_aktuell = 7 EndIf ElseIf y > 320 If x < xleft Then SpielerX = SpielerX - speedX SpielerY = SpielerY + speedY ; diagonal links runter ship_aktuell = 8 ElseIf x > xright Then SpielerX = SpielerX + speedX SpielerY = SpielerY + speedY ; diagonal rechts runter ship_aktuell = 9 EndIf EndIf ; Steuerung normal If y > 160 And y < 320 Then If x < centerX Then SpielerX = SpielerX - speedX ; nach links ship_aktuell = 1 ElseIf x > centerX Then SpielerX = SpielerX + speedX ; nach rechts ship_aktuell = 2 EndIf ElseIf x > xleft And x < xright Then If y < centerY Then SpielerY = SpielerY - speedY ; nach oben ship_aktuell = 4 ElseIf y > centerY Then SpielerY = SpielerY + speedY ; nach unten ship_aktuell = 5 EndIf EndIf Else ship_aktuell = 0 EndIf End Function http://www.tz-steiner.com/test/ships.png Mit rechtsklick speichern unter... lg. Jamagin |
||
Bevor du etwas neues beginnst, erledige das alte |
Bobo2040 |
Do, Jul 18, 2013 11:01 Antworten mit Zitat |
|
---|---|---|
Habes Probiert geht aber nicht stürrztz sofort wieder ab ... ;D Danke aber auf jeden fall ^^
Finds echt cool das mir so viele so sehr helfen gibts nicht in jedem forum ! Aber ich versteh den code nicht so ganz... da ist das schiff doch immer nur in eine richtung und dreht sich nicht... ? Aber aus irgend einem grund geht dort sonst nichts ich kann bilder laden das wars keine Texte anzeigen lassen oder musik laufen lassen warum ? Bei dem davor gings auch und geht immer noch nur das schiff fliegt beim alten nciht bei dem hier schon... Also an der Musik oder so kanns nicht liegen weils ja beim anderen geht und beide daten liegen im selben ordner also ist auch der verweiß richtig ... er ruft es einfach nicht ab ... -.-' |
||
- Zuletzt bearbeitet von Bobo2040 am Do, Jul 18, 2013 11:15, insgesamt einmal bearbeitet
Jamagin |
Do, Jul 18, 2013 11:12 Antworten mit Zitat |
|
---|---|---|
du mußt das bild runterladen und in deinem ordner einen ordner namens Images anlegen und da das bild reinspeichern, dann geht's!!!!!!!
lg. Jamagin |
||
Bevor du etwas neues beginnst, erledige das alte |
Bobo2040 |
Do, Jul 18, 2013 11:16 Antworten mit Zitat |
|
---|---|---|
Hab ich probiert.... son voll noob bin ich schon nicht das ist mir klar das ist das bild unter images/ships.png abspeichern muss... aber das Programm stürtzt direkt ab ...
Ich benutze BlitzPlus vllt. hat das was damit zu tun... ist Version 1.47 also die aktuellste |
||
Jamagin |
Do, Jul 18, 2013 11:26 Antworten mit Zitat |
|
---|---|---|
Echt komisch!!!
Ich hab das jetzt auch mit BlitzPlus getestet und es klappt! lg. Jamagin |
||
Bevor du etwas neues beginnst, erledige das alte |
Gehe zu Seite 1, 2, 3, 4 Weiter
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group