2D-Steuerung

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

AMD

Betreff: 2D-Steuerung

BeitragMi, Aug 22, 2007 23:04
Antworten mit Zitat
Benutzer-Profile anzeigen
HI
ich hab mich heute endlich mal an 2D gewagt^^
und ich hab jetzt ein Animationbild geladen also nen Panzer.
jetzt will ich den Panzer bewegen also es gibt schon ne Vorwärts/rückwärts-steuerung
und jetzt möchte ich das wenn man Pfeiltaste links oder rechts drückt das der Panzer sich um seine eigene Achse nach links und nach rechts dreht und dann auch in die richtung in die er sich gedreht hat fährt.

hier mal der code:

Code: [AUSKLAPPEN]
AppTitle "2D-PanzerGame"
Global Pos_y,Pos_x,Rotation
Graphics 640,480,32,2
SetBuffer BackBuffer()

Panzer = LoadAnimImage("Panzer.bmp",48,48,0,4)
MaskImage Panzer,255,255,255



While Not KeyHit(1)
Cls

;Tastenabfrage
i=(i+1) Mod 4

If KeyDown(208)
Pos_y=Pos_y+3
DrawImage Panzer,Pos_x,Pos_y,i
End If
If KeyDown(200)
Pos_y=Pos_y-3
DrawImage Panzer,Pos_x,Pos_y,i
End If
If KeyDown(203)
Rotation=Rotation-1
End If
If KeyDown(205)
Rotation=Rotation+1
End If
DrawImage Panzer,Pos_x,Pos_y,0
RotateImage Panzer,Rotation

Flip
Wend


ach ja und nicht das ihr glaubt ich sitz hier nur so rum und lass mich von euch bedienen^^ ich habs auch schon mal selbst probiert bin dann aber zu diesem ergebnis gekommen.

https://www.blitzforum.de/upload/file.php?id=1995

also der panzer hat sich mehr oder weniger gedreht nur i-wie is dann alles langsamer geworden und es verschwimmt alles.
Danke jetzt schon mal auf antworten
MfG
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341

Smily

BeitragMi, Aug 22, 2007 23:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach mal ganz oben
BlitzBasic: [AUSKLAPPEN]
TFormFilter 0


und dann solltest du die bilder im vornherein erstellen (am besten in einem dim)
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

bruce85

BeitragDo, Aug 23, 2007 0:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
Die einfachste lösung wäre 360 Bilder in einem Dim Feld zu speichern.
Hier mal ein beispiel:

Code: [AUSKLAPPEN]
Graphics 640,480,16,2
SetBuffer BackBuffer()

;Array für den Panzer
Dim Panzer(359)
Global Panzer_X# = 100
Global Panzer_y# = 100

TFormFilter 0

;360 Bilder laden
For Winkel=0 To 359
  Panzer(Winkel) = LoadImage("panzer.bmp")
  MidHandle Panzer(Winkel) ;Die dreh achse in die Mitte bestimmen
  MaskImage Panzer(Winkel),255,0,255
  RotateImage Panzer(Winkel),Winkel ;Das Bild wird jeweils einmal gedreht
Next

Repeat
  Cls

  ;Panzer nach rechts drehen
  If KeyDown(205) Then
    Winkel = Winkel + 1
  EndIf
  ;Panzer nach links drehen
  If KeyDown(203) Then
    Winkel = Winkel - 1
  EndIf
  ;Panzer nach vorne bewegen
  If KeyDown(200) Then
    ;Panzer in richtung Winkel bewegen
    Panzer_X# = Panzer_X# + Cos(Winkel)*1
    Panzer_Y# = Panzer_Y# + Sin(Winkel)*1
  EndIf
  ;Panzer nach hinten bewegen
  If KeyDown(208) Then
    ;Panzer in richtung Winkel bewegen
    Panzer_X# = Panzer_X# - Cos(Winkel)*1
    Panzer_Y# = Panzer_Y# - Sin(Winkel)*1
  EndIf

  If Winkel > 359 Then Winkel = 0
  If Winkel < 0 Then Winkel = 359

  ;Panzer zeichnen
  DrawImage Panzer(Winkel),Panzer_X#,Panzer_Y#

  Flip
Until KeyHit(1)

End


ist aber nicht die beste lösung da das ziemlich aufm Speicher geht, kommt drauf an wie gross der Panzer ist.

Ist halt nur ein beispiel.

MfG
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250
  • Zuletzt bearbeitet von bruce85 am Do, Aug 23, 2007 0:14, insgesamt 2-mal bearbeitet

kriD

Betreff: drehen

BeitragDo, Aug 23, 2007 0:06
Antworten mit Zitat
Benutzer-Profile anzeigen
dazu solltest du noch den befehl MIDHANDLE image benutzen..
damit du nach dem bildererstellen keine abgehackten panzer bekommst... (sonst wirds nämlich echt schwer, die bilder vernünftig in die mitte zu bekommen...)

also ca. so:
Code: [AUSKLAPPEN]

TFORMFILTER 0
bild=LOADIMAGE ("bild.bmb")
bild_breite=IMAGEWIDHT () ;bild ist ja quadratisch, deshalb nur die breite
MIDHANDLE bild

DIM dreh_bild (359)

FOR i = 0 to 359

dreh_bild (i)=CREATEIMAGE (bild_breite,bild_breite)
SETBUFFER IMAGEBUFFER (bild (i))

ROTATEIMAGE bild,i
DRWIMAGE bild,bild_breite/2,bild_breite/2
;weil das bild ja so zu sagen in der mitte "angefasst" wird muss man "bild_breite/2" nehmen

SETBUFFER BACKBUFFER ()

NEXT


so in etwa solltes klappen^^

MfG kriD
Wenn ich du wäre, wäre ich lieber ich!

Who

BeitragDo, Aug 23, 2007 0:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst natürlich auch dein AnimImage verwenden indem du
Code: [AUSKLAPPEN]
While Not KeyHit(1)
   Cls

;Tastenabfrage
   If KeyDown(200) Then
      Pos_x = Pos_x + Cos(Rotation * 90) * 3 ; <- 3 ist die Bewegungsgeschwindigkeit
      Pos_y = Pos_y + Sin(Rotation * 90) * 3
   ElseIf KeyDown(208) Then
      Pos_x = Pos_x - Cos(Rotation * 90) * 3
      Pos_y = Pos_y - Sin(Rotation * 90) * 3
   EndIf
   If KeyHit(203) Then
      Rotation = Rotation - 1
      If Rotation < 0 Then Rotation = Rotation + 4
   ElseIf KeyHit(205) Then
      Rotation = (Rotation + 1) Mod 4
   EndIf

;Grafikausgabe
   DrawImage Panzer, Pos_x, Pos_y, Rotation

Flip
Wend

als Hauptschleife verwendest.
"Rotation" muss natürlich nur verändert werden, wenn man links oder rechts drückt. Und man sollte Steuerung und Grafik trennen.

MFG
Who
 

AMD

BeitragDo, Aug 23, 2007 12:56
Antworten mit Zitat
Benutzer-Profile anzeigen
ok danke @all
ich habs jetzt
es hat so lange gedauert weil ich versucht hab das ganze selbst um zu schreiben an statt einfach nur zu kopiern jetzt hab ich bestimmt wieder was gelernt Smile
also thx
MfG
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341
 

AMD

BeitragDo, Aug 23, 2007 13:13
Antworten mit Zitat
Benutzer-Profile anzeigen
sry wegen doppepost aber ich hab gleich noch n problem.
Ich will jetzt noch nen Hintergrund machen aber so bald der Panzer dann angezeigt wird wird der Hintergrund gelöscht wegen "CLS" aber wenn ich den begriff raus mache dann hinterlässt der Panzer so komische Spurn.
wie kann man des anders machen?
MfG
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341

Silver_Knee

BeitragDo, Aug 23, 2007 14:02
Antworten mit Zitat
Benutzer-Profile anzeigen
setz das cls nach dem flip dann sollte es laufen und nach graphics "SetBuffer backbuffer()"nicht vergessen
 

AMD

BeitragDo, Aug 23, 2007 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
funzt immer noch net

hier mal mein code:

Code: [AUSKLAPPEN]
TFormFilter 0
AppTitle "2D-PanzerGame"
Graphics 640,480,32,2
SetBuffer BackBuffer()


Dim Panzer(359)
Global Panzer_Y# = 100
Global Panzer_X# = 100

Hintergrund=LoadImage("Sand.jpg")
LoadImage ("Hintergrund")
DrawImage Hintergrund,1,1


For Rotation#=0 To 359
  Panzer(Rotation) = LoadAnimImage("Panzer.bmp",48,48,0,4)
  MaskImage Panzer(Rotation),255,255,255
  MidHandle Panzer(Rotation)
  RotateImage Panzer(Rotation),Rotation#
Next

Repeat


;Tastenabfrage
i=(i+1) Mod 4

If KeyDown(208)
    Panzer_X# = Panzer_X# - Cos(Rotation)*0.3
    Panzer_Y# = Panzer_Y# - Sin(Rotation)*0.3
DrawImage Panzer(Rotation),Panzer_X,Panzer_Y,i
End If
If KeyDown(200)
    Panzer_X# = Panzer_X# + Cos(Rotation)*0.3
    Panzer_Y# = Panzer_Y# + Sin(Rotation)*0.3
DrawImage Panzer(Rotation),Panzer_X,Panzer_Y,i
End If
If KeyDown(203)
Rotation#=Rotation#-0.3
End If
If KeyDown(205)
Rotation#=Rotation#+0.3
End If


  If Rotation > 359 Then Rotation = 0
  If Rotation < 0 Then Rotation = 359

DrawImage Panzer(Rotation),Panzer_X#,Panzer_Y#

Flip
Cls
Until KeyHit(1)
End
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341

BladeRunner

Moderator

BeitragDo, Aug 23, 2007 14:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst deinen Hintergrund selbstredend in der Hauptschleife einzeichnen, denn er soll ja in jedem Frame neu gezeichnet werden.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

AMD

BeitragDo, Aug 23, 2007 14:23
Antworten mit Zitat
Benutzer-Profile anzeigen
ah danke BladeRunner funktioniert supper Smile
MfG
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group