Drehen?

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Gameprogman

Betreff: Drehen?

BeitragDi, Dez 28, 2004 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Dez 28, 2004 16:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin,

Wie wärs mal wen du etwas genauer dein Problem beschreiben würdest?

Thx
DarkAngel
Deutscher Blitz Basic Chat

Gameprogman

BeitragDi, Dez 28, 2004 16:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei:
RotateImage Auto(winkel),winkel
kommt "Image does not exist"
Mehr weiß ich auch nicht...
www.bandradr.de ! Awesome !

Gameprogman

BeitragDi, Dez 28, 2004 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ähh

Ist die Frage so schwer?
Irgendwer wird doch mein Problem erkennen, oder?
www.bandradr.de ! Awesome !

MBC

BeitragDi, Dez 28, 2004 17:16
Antworten mit Zitat
Benutzer-Profile anzeigen
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! Wink

Gameprogman

BeitragDi, Dez 28, 2004 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok
also wenn ich jetzt den WIRKLICHEN Pfad angebe kommt um genau zusein:
Nichts
Ein schwarzer Screen
??????
www.bandradr.de ! Awesome !

Gameprogman

BeitragDi, Dez 28, 2004 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Dez 28, 2004 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
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! Wink

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Dez 28, 2004 17:45
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Dez 28, 2004 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Gut
Alles Klar jetzt.
Habe einfach nur sehr lange warten müssen dann ist das Programm gestartet.
Habe das jetzt mit einem Timer beschleinigt. Wink
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 Wink
www.bandradr.de ! Awesome !

MBC

BeitragDi, Dez 28, 2004 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
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! Wink

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Dez 28, 2004 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
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! Wink
[BB2D | BB3D | BB+]
 

GeGenesis

BeitragDi, Dez 28, 2004 19:48
Antworten mit Zitat
Benutzer-Profile anzeigen
also hier den code zum fahren
Code: [AUSKLAPPEN]

x=x+cos(winkel)*speed
y=y+sin(winkel)*speed

Gameprogman

BeitragDi, Dez 28, 2004 20:46
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Dez 28, 2004 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Dez 28, 2004 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Dez 28, 2004 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
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! Wink

Gameprogman

BeitragDi, Dez 28, 2004 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie geht copyimage? Embarassed
www.bandradr.de ! Awesome !

Hummelpups

BeitragDi, Dez 28, 2004 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Dez 28, 2004 21:36
Antworten mit Zitat
Benutzer-Profile anzeigen
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 !

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group