Drehen?
Übersicht

![]() |
GameprogmanBetreff: Drehen? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi
Ich hab mal mit der GTA Steuerung angefangen und jetzt hab ich aber ein Problem: Code: [AUSKLAPPEN] Graphics 800,600 SetBuffer BackBuffer() Dim Auto(359) TFormFilter 0 For winkel = 0 To 359 Auto(winkel)=LoadImage("blabla.bmp") RotateImage Auto(winkel),winkel MaskImage Auto(winkel),255,0,255 Next Global x#,y# Global geschwindigkeit#=1 While Not KeyHit(1) Cls If KeyDown(203) Then winkel= winkel -1 If KeyDown(205) Then winkel= winkel +1 If winkel > 359 Then winkel = 0 If winkel < 0 Then winkel = 359 If KeyDown(200) Then x = x + Cos(winkel)*geschwindigkeit y = y - Sin(winkel)*geschwindigkeit EndIf DrawImage Auto(winkel),x,y Flip Wend End Weiß wer die Lösung? |
||
www.bandradr.de ! Awesome ! |
![]() |
DA |
![]() Antworten mit Zitat ![]() |
---|---|---|
Moin,
Wie wärs mal wen du etwas genauer dein Problem beschreiben würdest? Thx DarkAngel |
||
Deutscher Blitz Basic Chat |
![]() |
Gameprogman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei:
RotateImage Auto(winkel),winkel kommt "Image does not exist" Mehr weiß ich auch nicht... |
||
www.bandradr.de ! Awesome ! |
![]() |
Gameprogman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ähh
Ist die Frage so schwer? Irgendwer wird doch mein Problem erkennen, oder? |
||
www.bandradr.de ! Awesome ! |
![]() |
MBC |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Bist du dir sicher, dass es die "blabla.bmp" auch gibt? Liegt sie im selben Verzeichnis wie der abgespeicherte(!) Programmcode? Alternativ kannste glaub ich auch den absoluten Pfad (also "C:\BlitzBasic\...\...\blabla.bmp") angeben. Dann sollte es eigentlich funktionieren, denke ich! Mfg MBC |
||
Computer sind auch nur Menschen! ![]() |
![]() |
Gameprogman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok
also wenn ich jetzt den WIRKLICHEN Pfad angebe kommt um genau zusein: Nichts Ein schwarzer Screen ?????? |
||
www.bandradr.de ! Awesome ! |
![]() |
Gameprogman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Halt jetzt geht's !WOW!
Aber wie macht man das, dass das Auto sich dann nach vorne Bewegt? (Vorne ist auf dem Standart bild oben) |
||
www.bandradr.de ! Awesome ! |
![]() |
MBC |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Schau dir mal in der Onlinehilfe den Befehl "HandleImage" an. Sollte genau das sein, was du brauchst! Übrigens kannst du ja dein Bild während des Drehens immer wieder einzeichnen, damit man sieht, das was passiert und so... /EDIT\ Ne, wart mal, ich glaub, da stimmt noch was nich so ganz... ich kenn mich da jetzt nicht gut aus, aber ists möglich, dass du Sin zu x addieren und Cos von y subtrahieren musst (also umgekehrt)? Und dafür, dass das Auto dann in die richtige Richtung fährt, würde ich der Einfachheit einfach das Bild in der Bilddatei so drehen, dass dat passt... Mit HandleImage kannste nur den Drehpunkt verändern (auch sehr nützlich, aber hier eigentlich im Mom. nicht zu gebrauchen.. tschuldigung... \EDIT/ Also dann... MfG MBC |
||
Computer sind auch nur Menschen! ![]() |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wahrscheinlich liegt die datei nicht im gleichen Ordner wie die BB datei....
oder der Name ist falsch! Und warum immer wieder das Bild laden, einmal reicht doch und dann mit copyimage Beispiel:Code: [AUSKLAPPEN] Dim Auto(359)
TFormFilter 0 Auto(0)=LoadImage("........bmp") If Auto(0) = 0 Then runtimeerror "Die Datei konnte nicht geladen werden !" MidHandle Auto(0) MaskImage Auto(0),255,0,255 For winkel = 1 to 359 Auto(winkel) = copyimage (Auto(0)) RotateImage Auto(winkel),winkel Next Habe noch eine Sicherheitsabfrage für das Bild eingebaut! |
||
[BB2D | BB3D | BB+]
|
![]() |
Gameprogman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gut
Alles Klar jetzt. Habe einfach nur sehr lange warten müssen dann ist das Programm gestartet. Habe das jetzt mit einem Timer beschleinigt. ![]() Dauert jetzt nur noch 5 sekunden statt 2minuten. Wie auch immer, ich habe trotzdem noch eine kleine Frage: Wie baut man einen Player2 ein der sich auch drehen kann. Bitte einen Bsp. Code, aus dem lernt sich am besten ![]() |
||
www.bandradr.de ! Awesome ! |
![]() |
MBC |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Also ich würd das so machen: 1. Möglichkeit: Der Player2 kann das gleiche Bild bekommen: Einfach alle Tastenabfragen und so mit jew. anderen Tasten und Variablen, das Bild dann einmal mit Auto(winkel1) und einmal mit Auto(winkel2) einzeichnen. 2. Möglichkeit: Der Gegner soll ein anderes Auto bekommen: Das andere Bild genauso wie das alte drehen (natürlich andere var.namen) und dann s. 1. Denke, so müsste das gehen. P.S.: Ich hoffe, dafür brauchste keinen Bsp.Code, steht ja prinzipiell alles im vorigen drin.... Mfg MBC |
||
Computer sind auch nur Menschen! ![]() |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
ist doch einfach, das gleiche mit Player2X# und Player2Y#
und die key abfrage auf joystick oder WASD! Wenn du 1Player hinbekommst dann sollte das wohl kein Prob. darstellen! ![]() |
||
[BB2D | BB3D | BB+]
|
GeGenesis |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also hier den code zum fahren
Code: [AUSKLAPPEN] x=x+cos(winkel)*speed y=y+sin(winkel)*speed |
||
![]() |
Gameprogman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Folgender Code:
Code: [AUSKLAPPEN] Graphics 800,600
SetBuffer BackBuffer() LALA=1 Power1=1500 Power2=1400 Dim Auto(359) Dim Auto2(359) TFormFilter 0 For winkel = 0 To 359 Auto(winkel)=LoadImage("alien2.bmp") Auto2(winkel)=LoadImage("alien3.bmp") MidHandle Auto(winkel) MidHandle Auto2(winkel2) RotateImage Auto2(winkel2) ,winkel2 MaskImage Auto2(winkel2) ,0as,0,255 RotateImage Auto(winkel) ,winkel MaskImage Auto(winkel) ,0,0,255 Next Global x#,y# X#=200 Y#=200 Global xq#,yq# xq=300 yq=400 Global geschwindigkeit#=5 While Not KeyHit(1) Cls If KeyDown(203) Then winkel= winkel -3 If KeyDown(205) Then winkel= winkel +3 If winkel > 359 Then winkel = 0 If winkel < 0 Then winkel = 359 If KeyDown(200) Then x = x + Cos(winkel)*geschwindigkeit y = y + Sin(winkel)*geschwindigkeit EndIf DrawImage Auto(winkel),x,y If KeyDown(30) Then winkel2= winkel2 -3 If KeyDown(32) Then winkel2= winkel2 +3 If winkel2 > 359 Then winkel2 = 0 If winkel2 < 0 Then winkel2 = 359 If KeyDown(17) Then xq = xq + Cos(winkel2)*geschwindigkeit yq = yq + Sin(winkel2)*geschwindigkeit EndIf DrawImage Auto2(winkel2),xq,yq Müsste doch gehen oder? Geht aber nicht Player2 bewegt sich zwar richtig, dreht sich aber nicht. |
||
www.bandradr.de ! Awesome ! |
![]() |
Ralf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
ich habe mal in Deinem Code dokumentiert was alles falsch ist! Zitat: For winkel = 0 To 359
Auto(winkel)=LoadImage("alien2.bmp"); alien2 und alien 3 solltest Du nur einmal vor der Schleife laden, benutze hier CopyImage Auto2(winkel)=LoadImage("alien3.bmp") MidHandle Auto(winkel) MidHandle Auto2(winkel2) ; Die Variabel Winkel 2 ist gar nicht vorhanden, also immer 0 RotateImage Auto2(winkel2) ,winkel2 ; Hier gilt das Gleiche. Du drehst das Auto immer um 0 Grad, also gar nicht. Richtig wäre hier die Variabel: Winkel MaskImage Auto2(winkel2) ,0as,0,255 ; Was ist 0as?? RotateImage Auto(winkel) ,winkel MaskImage Auto(winkel) ,0,0,255 Next Gruß Ralf |
||
- Zuletzt bearbeitet von Ralf am Di, Dez 28, 2004 21:07, insgesamt einmal bearbeitet
![]() |
Hummelpups |
![]() Antworten mit Zitat ![]() |
---|---|---|
in der for-next schleife läuft winkel hoch aber nicht winkel2. nimm bei beiden
winkel, dann drehst du beide Autos. Außerdem nimm mal automidhandle. Dann ersparst du dir jedesmal das Midhandle. musst es nur wieder ausstellen. Edit: Mist zu spät IMurDOOM |
||
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus |
![]() |
MBC |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi nochmal!
Ersetz alle winkel2 in der for-next-Schleife (und nur dort!) durch winkel. Warum? Ganz einfach: In der F-N-Schleife wird ja nur die Var. winkel hochgezählt, aber nicht winkel2. Das zweite Bild wird dann zwar auch "gedreht!, aber ständig um 0°, was man ja nich wirklich sieht. Jedenfalls gehts mit der Methode wie oben beschrieben. Viel Spaß!!! MfG MBC Edit: Mist, auch zu spät! |
||
Computer sind auch nur Menschen! ![]() |
![]() |
Gameprogman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie geht copyimage? ![]() |
||
www.bandradr.de ! Awesome ! |
![]() |
Hummelpups |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nachgucken: www.Robsite.de
oder im code schlau lesen. Edit: Ich weiß nicht ganz genau wie funktioniert aber wenn du ein Bild lädst, schreibt er die Bildgröße, Farbwerte usw. in den RAM. Lädst du es nun noch einmal, muss dieses umrechnungsverfahren noch einmal stattfinden. Anstatt das noch einmal zu machen - es ist ja das selbe Bild - wird nach der Speicheradresse geguckt und ausgelesen, wieviel Bit dieses Bild im Speicher reserviert bzw. benutzt. Diese Bits werden von einem Punkt im RAM zu einem anderen Punkt im RAM kopiert. Dieses Bild hat dann natürlich auch eine andere Speicheradresse. Bits im RAM zu verschieben, kopieren, löschen geht natürlich schneller als erst noch auf die Festplatte zuzugreifen. IMurDOOM |
||
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus |
![]() |
Gameprogman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe jetzt in der Onlinehilfe Nachgelesen und bemerkt dass dann das gleiche Bild nochmal gemalt wird.
Ich will aber zwei verschiedene Bilder. |
||
www.bandradr.de ! Awesome ! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group