warum so unscharfes bild bei bewegung

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Kleinenbremer

Betreff: warum so unscharfes bild bei bewegung

BeitragDo, Nov 13, 2008 16:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leute, hab seit langem mal wieder mit BB angefangen, um für unsre WG nen Spaß-Flugsimulator/Ballern/Rennen zu programmierne. leider viel mir bereits bei einem Test der Flugphysik auf. Vielleicht liegts an meinem TFT (Syncmaster 940Bm 2 jahre alter samsung). aber bei anderen spielen (unter windows und linux) ist das bild auch bei bewegung scharf. Wenn ich das auf dem Röhrenmonitor von meinem Kumpel laufen lasse, ist es ohne timer scharf, mit unscharf. bei mir auf tft immer unscharf....
Habe ich etwas falsch programmiert?: Ihr könnt den code testen, wenn ihr ins verzeichnis ein ca 50*50 bild kopiert. wie gesagt, ist nur zum testen...
Ich habe übrigens das ganze mit,ohne,mit selbstgebauten timer,... probiert.

fliegen tut man mit pfeiltasten (gas geben hoch, steuern links/rechts)

Code: [AUSKLAPPEN]

;########################
;die grafikeinstellungen
Graphics 1024,768,0,1
SetBuffer BackBuffer()
timer=CreateTimer(50)
ClsColor 100,100,255

;
;das laden des flugzeugbildes
TFormFilter 1
image=LoadImage("plane.bmp")
Dim images(71)
For z=0 To 71
images(z)=CopyImage(image)
MidHandle images(z)
RotateImage images(z),5*z
Next

;Der Player Typ, mit koordinaten, beiwerten,geschwindigkeiten..
Type pl
 Field x#,y#
 Field sx#,sy#
 Field angle#
 Field s#
 Field g#
 Field rs#
 Field a#
 Field ca#,cw#
 Field direction#
End Type

;hier wird er erstellt.
Global pl1.pl=New pl
pl1\g#=0.1
pl1\s#=0.1
pl1\rs#=4
pl1\ca#=0.6
pl1\x=400
pl1\y=400
pl1\cw#=0.001
pl1\angle=45


While Not KeyHit(1)
;steuern
If KeyDown(200) Then
 pl1\sx#=pl1\sx#+Cos(pl1\angle#)*pl1\s#
  pl1\sy#=pl1\sy#+Sin(pl1\angle#)*pl1\s#
EndIf

If KeyDown(203) Then
 pl1\angle#=pl1\angle#-pl1\rs#
End If

If KeyDown(205) Then
 pl1\angle#=pl1\angle#+pl1\rs#
End If

;Berechnen...noch sehr unübersichtlich, aber interessiert hier ja auch nicht
pl1\rs#=4*Cos(diff#)

diff#=pl1\angle#-pl1\direction#
If diff#<-180 Then diff#=diff#+360
If diff#>180 Then diff#=diff#-360

;widerstand#=(0.9999-0.0001*Abs(diff#)/90)^(pl1\sx#^2+pl1\sy#^2)
widerstand#=(pl1\sx#^2+pl1\sy#^2)*pl1\cw#

pl1\sy#=pl1\sy#+pl1\g#-pl1\a#*Cos(-(pl1\direction#))+widerstand#*Sin(pl1\direction#+180)
pl1\sx#=pl1\sx#+pl1\a#*Sin(pl1\direction#)+widerstand*Cos(pl1\direction#+180)

;pl1\sx#=pl1\sx#*widerstand#
;pl1\sy#=pl1\sy#*widerstand#

pl1\direction#=(ATan2(pl1\sy#,pl1\sx#))


pl1\a#=(pl1\sx#^2+pl1\sy#^2)^0.5*pl1\ca#*Sin(-2*diff#+5)/20

While KeyDown (28)
Wend

pl1\y#=pl1\y#+pl1\sy#
pl1\x#=pl1\x#+pl1\sx#


If pl1\x>1280 Then pl1\x=0
If pl1\x<0 Then pl1\x=1280
;zeichnen
If pl1\angle#<-180 Then pl1\angle#=pl1\angle#+360
If pl1\angle#>180 Then pl1\angle#=pl1\angle#-360
wnumber=Int((pl1\angle#+360)Mod 360 /5)
wnumber=wnumber Mod 72


;ab hier dürften die Probleme beginnen#######
DrawImage images(wnumber),pl1\x#,pl1\y#


Color 255,255,255
Text 10,10,pl1\direction#
Text 10,30,diff#
Text 10,50,pl1\angle#

Color 0,255,0
Line pl1\x,pl1\y,pl1\x+20*Cos(pl1\direction#),pl1\y#+20*Sin(pl1\direction#)
Color 255,255,255
Line pl1\x,pl1\y,pl1\x+20*Cos(pl1\direction#+diff#),pl1\y#+20*Sin(pl1\direction#+diff#)

WaitTimer (timer)
Flip
;Delay (20-(MilliSecs()-time))
Wend
;###########

;danke für tips...!!

Xeres

Moderator

BeitragDo, Nov 13, 2008 17:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ähm.. du schaltest TFormFilter extra ein bevor du ein Bild drehst? Normalerweise macht man diesen Part extra ohne Kantenglättung.
Wenn du einen Timer verwendest, benutze auch "Flip 0"
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

DerHase

BeitragDo, Nov 13, 2008 17:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist die native Auflösung von dem TFT 1024 *768? Weil wenn man einen TFT nicht in seiner nativen Auflösung verwendet wird das Bild unscharf.
Play Satyr!
 

Kleinenbremer

BeitragFr, Nov 14, 2008 13:27
Antworten mit Zitat
Benutzer-Profile anzeigen
hey,
tformfilter hab ich vergessen wieder zu ändern, war nur nen test.
Die Auflösung habe ich beim code geändert, falls einer den testen will. mein monitor hat 1280*1024, was auch bei mir normalerweise im code steht.

flip 0, muss ich mal testen, wenn ich zu hause bin.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group