 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
frebas
Anmeldungsdatum: 20.06.2008 Beiträge: 245
|
Verfasst am: 28.08.2008, 09:19 Titel: end und fbgfx.bi klappt nicht richtig |
|
|
Code: | screen 20, 32, ,0
WINDOWTITLE "alpha"
setmouse ,,0
randomize timer
dim as any ptr player, map
DIM as integer xmap, ymap, frames, fps
dim as single startfps, endefps
map = imagecreate (613,560)
player = imagecreate (14,14)
bload "player.bmp", player
bload "map.bmp", map
xmap =0
ymap=0
sleep 1
startfps = timer
do
screenlock
cls
frames = frames + 1
if endefps-startfps > 1 then
fps=frames
frames = 0
startfps = timer
end if
'cls
put (xmap,ymap),map,pset
put (500,350),player,pset
print fps
print frames
if multikey(&h48) then ymap = ymap + 1 'oben
if multikey(&h4B) then xmap = xmap + 1 'links
if multikey(&h4D) then xmap = xmap - 1 'rechts
if multikey(&h50) then ymap = ymap - 1 'unten
if multikey(&h01) then end
screenunlock
sleep 1
endefps=timer
loop |
Dass die fbgfx.bi nicht richtig klappt ist ja nicht so schlimm, weil man das ja mit den scancodes auch machen kann. Aber dass das Programm so langsam läuft und sich bei end immer aufhängt (Windows: "Programm reagiert nicht") ist schon doof. Ja, die fbgfx.bi ist vorhanden. Jetzt habe ich mal die Aktuelle Version des Compilers installiert (0.20b) doch jetzt klappt gar nichts mehr ("...exe funktioniert nicht mehr")
edit: Mir ist jetzt aufgefallen dass es am screen befehl liegt
wenn ich folgendes "Programm" ausführen will kommt der Fehler:
|
|
Nach oben |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 28.08.2008, 11:49 Titel: |
|
|
Der Fehelr bei "End" kommt, weil du "End" vor "ScreenUnLock" ausführst. "ScreenUnLock: End" wäre da angebracht. |
|
Nach oben |
|
 |
frebas
Anmeldungsdatum: 20.06.2008 Beiträge: 245
|
Verfasst am: 28.08.2008, 14:10 Titel: |
|
|
Da wäre also schonmal 1 fehler geklährt, aber warum geht das nicht mit "screen" und was ist mit der "fbgfx.bi"? Ich habe gestern als ich noch die ältere version von FB installiert hatt auch mal ausprobiert ob meine anderen Programm noch klappen wenn ich sie neu compilliere, doch dort klappt die fbgfx.bi auch nicht mehr, weder mit dem neuen compiler noch mit dem alten. |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 28.08.2008, 16:21 Titel: |
|
|
?? Code: | #Include "fbgfx.bi"
SCREEN 20, 32, ,0
WINDOWTITLE "ALPHA"
SETMOUSE ,,0
randomize TIMER
DIM AS ANY PTR player, map
DIM AS INTEGER xmap, ymap, frames, fps
DIM AS SINGLE startfps, endefps
map = IMAGECREATE (613,560,&Hff0ff000)
player = IMAGECREATE (14,14,&Hff000ff0)
'BLOAD "player.bmp", player
'BLOAD "map.bmp", map
xmap = 0
ymap = 0
startfps = TIMER
DO
frames = frames + 1
IF endefps-startfps > 1 THEN
fps=frames
frames = 0
startfps = TIMER
END IF
SCREENLOCK
CLS
PUT (xmap,ymap),map,PSET
PUT (500,350),player,PSET
PRINT fps
PRINT frames
SCREENUNLOCK
IF MULTIKEY(FB.SC_UP) THEN ymap = ymap - 1 'oben
IF MULTIKEY(FB.SC_LEFT) THEN xmap = xmap - 1 'links
IF MULTIKEY(FB.SC_RIGHT) THEN xmap = xmap + 1 'rechts
IF MULTIKEY(FB.SC_DOWN) THEN ymap = ymap + 1 'unten
IF MULTIKEY(FB.SC_ESCAPE) THEN END
SLEEP 1
endefps=TIMER
LOOP | ohne Probleme unter FB0.20.0b mit -s gui kompiliert !
Kann es sein, dass deine Bilder größer als die dimensionierten Images sind? _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
frebas
Anmeldungsdatum: 20.06.2008 Beiträge: 245
|
Verfasst am: 28.08.2008, 16:56 Titel: |
|
|
Nein, alles richtig, es hat ja auch früher bei älteren Programmen geklappt, ich werde das mal auf einem anderen Rechner ausprobieren. |
|
Nach oben |
|
 |
frebas
Anmeldungsdatum: 20.06.2008 Beiträge: 245
|
Verfasst am: 28.08.2008, 17:01 Titel: |
|
|
Auf dem anderen rechner klappt alles normal.
Warum läuft das nur mit 65 fps auf einem rechner mit 2x 2,4 Ghz? Ist das Normal?
edit: sonst laufen solche programme immer schneller und wenn ich an 3d-spiele denke dann laufen die nicht viel langsamer(ich weiß dass es ein schlechter vergleich ist). |
|
Nach oben |
|
 |
raph ael
Anmeldungsdatum: 12.04.2006 Beiträge: 472
|
Verfasst am: 28.08.2008, 22:05 Titel: |
|
|
65 fps? Klingt irgendwie normal... Das menschliche Auge erfasst sowieso nur 24 .
Und die meisten Monitore zeigen auch um die 60 fps an. _________________
Zitat: | 1000 Yottabytes sind absurd. 640 Yottabytes sollten genug für jeden sein. |
|
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 29.08.2008, 13:02 Titel: |
|
|
so ein einfacher sourcecode müsste trotzdem ein paar hundert fps generieren. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
frebas
Anmeldungsdatum: 20.06.2008 Beiträge: 245
|
Verfasst am: 29.08.2008, 14:31 Titel: |
|
|
Jojo hat Folgendes geschrieben: | so ein einfacher sourcecode müsste trotzdem ein paar hundert fps generieren. |
Mein ich ja
Ist da irgendwas falsch gemacht? Wie schnell ist das denn wenn ihr das compilliert? Kann das mal jemand ausprobieren? |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 29.08.2008, 15:53 Titel: |
|
|
258 FPS.
Und da wundert ihr euch noch
Ausserdem ist die FPS Berechnungsformel falsch, richtig ist:
Code: | FPS = 1/(Endzeit - Startzeit) |
Weiterhin ist Print in der Konsole genauso wie im grafischen Modus laaaaahm... |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 29.08.2008, 18:32 Titel: |
|
|
ich weiß nicht, wie du auf den code kommst, csde, aber er scheint mir falsch zu sein.
der quellcode weiteroben scheint jedoch logisch:
1) Zähle bei jedem Schleifendurchlauf die Zählvariable eins nach oben
2) nach einer sekunde, gib den wert an und setze wieder auf 0.
damit wird beschrieben, wie viele Frames pro Sekunde gezeichnet wurden. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 29.08.2008, 18:50 Titel: |
|
|
Code: | FPS = 1/(Endzeit - Startzeit) |
ist im Prinzip schon richtig, setzt aber
1) eine möglichst gleichmäßige Framedauer
2) eine ausreichende Genauigkeit für Startzeit und Endzeit
voraus. Mag sein, dass beides gegeben ist, aber die Zählvariante halte ich auf jeden Fall für sicherer.
Ich könnte mir vorstellen, dass die Berechnung in jeden Frame die Geschwindigkeit mehr drosseln würde als die verwendete Variante mit dem Zählen - nur die PRINT-Ausgabe sollte nur einmal in der Sekunde gemacht werden und nicht in jedem Frame. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 29.08.2008, 19:51 Titel: |
|
|
Weder SLEEP 1 noch das PRINT drücken die FPS wesentlich.
Code: | CLS
PUT (xmap,ymap),map,PSET | Diese beiden Zeilen brauchen am meisten Zeit. Da werden ca 4,3MB vom Prozessor zur Graka (bzw. Anzeigespeicher) geschaufelt.
REM die mal aus und FPS schnellt hoch. _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
frebas
Anmeldungsdatum: 20.06.2008 Beiträge: 245
|
Verfasst am: 31.08.2008, 19:16 Titel: |
|
|
28398 hat Folgendes geschrieben: | 258 FPS.
Und da wundert ihr euch noch
Ausserdem ist die FPS Berechnungsformel falsch, richtig ist:
Code: | FPS = 1/(Endzeit - Startzeit) |
Weiterhin ist Print in der Konsole genauso wie im grafischen Modus laaaaahm... |
Das mit dem sleep ist mir mittlerweile auch kalrgeworden, jetzt habe ich ca. 260 fps.
Und die berechnungsformel die nennst ist halt ziemlich rechenaufwendig. Bei meinem ersten Versuch ein Spiel oder zumindest was ähnliches zu ersxchaffen habe ich das auch zuerst so gemacht. Aber das mit dem zählen der Frames bis eine Sekunde vergangen ist ist besser. |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 31.08.2008, 20:28 Titel: |
|
|
Komisch, alle namhaften Spiele, die die FPS anzeigen können machen das so: Oblivion, Source-Engine (Half-Life 2, EP1, EP2, DM, CS:S, TF2, Portal), Goldsource-Engine (Half-Life 1, CS 1.6, TF, usw. usf.), Crysis, Quake III A (openArena) etc. |
|
Nach oben |
|
 |
frebas
Anmeldungsdatum: 20.06.2008 Beiträge: 245
|
Verfasst am: 01.09.2008, 16:10 Titel: |
|
|
28398 hat Folgendes geschrieben: | Komisch, alle namhaften Spiele, die die FPS anzeigen können machen das so: Oblivion, Source-Engine (Half-Life 2, EP1, EP2, DM, CS:S, TF2, Portal), Goldsource-Engine (Half-Life 1, CS 1.6, TF, usw. usf.), Crysis, Quake III A (openArena) etc. |
Vielleicht zählen diese Programme immer nur eine halbe Sekunde und verdoppeln den getählten Wert, aber woher willst du das wissen dass die das mit einer "Formel" errechnen? |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|