2D-Steuerung
Übersicht

AMDBetreff: 2D-Steuerung |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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
![]() |
kriDBetreff: drehen |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
setz das cls nach dem flip dann sollte es laufen und nach graphics "SetBuffer backbuffer()"nicht vergessen | ||
AMD |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ah danke BladeRunner funktioniert supper ![]() 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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group