Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Spielprogrammierung: Kein Flimmern, Steuerung

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Bauchredner



Anmeldungsdatum: 11.01.2008
Beiträge: 57

BeitragVerfasst am: 15.01.2008, 20:54    Titel: Spielprogrammierung: Kein Flimmern, Steuerung Antworten mit Zitat

Ich hätte gerne mal ein Codebeispiel mit Erklärung zum Thema "Spiel soll nicht flimmern" und "Wie bastelt man eine Steuerung". Bitte auch die Codewörter und nicht nur das allgemeine Geschehen im Code erklären.

Ich hatte schon einen Test mit meinen FB-Kenntnissen gemacht, was das Flimmern anbelangt mit dem Schwarzes-viereck-über-vorheriges-Bild-kleb
Prinzip (und natürlich das nächte Bild wieder versetzt hinstellen). Ich weiss aber nicht, wie man es besser macht und Flimmern tut es je nach Geschwindigkeit auch.

Ich kenne das Select Case, aber ich weiss noch von QuickBasic, dass der Spielverlauf dann nicht weiter geht, bis man eine Taste drückt.

Ich bedanke mich zum Voraus für die Hilfe
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 15.01.2008, 20:58    Titel: Antworten mit Zitat

Wird sehr ausführlich in http://www.antonis.de/mfaq erklärt.
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Bauchredner



Anmeldungsdatum: 11.01.2008
Beiträge: 57

BeitragVerfasst am: 15.01.2008, 21:16    Titel: Antworten mit Zitat

Sry, ich meine natürlich FreeBasic (als ich dort Free Basic eingegeben habe, kam nichts FreeBasic-artiges).
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 15.01.2008, 21:31    Titel: Antworten mit Zitat

Neinnein, ist schon i.O. so.
Die Techniken und Befehle sind größtenteils die gleichen. Ein Blick dort hinein sollte dich zu mehrere verschiedenen Lösungswegen bringen. zwinkern
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 15.01.2008, 21:57    Titel: Re: Spielprogrammierung: Kein Flimmern, Steuerung Antworten mit Zitat

Bauchredner hat Folgendes geschrieben:
Bitte auch die Codewörter .. im Code erklären.
Hmmm, das sollte eigentlich nicht nötig sein, wenn du dir die Referenz nicht nur runtergeladen hast, sondern beim Stöbern in fremdem Code auch benutzt..
Bei FBEdit läßt sich unter Optionen auch der Pfad zur Hilfe-Datei eintragen, sodaß die auch dort zur Verfügung steht.
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Bauchredner



Anmeldungsdatum: 11.01.2008
Beiträge: 57

BeitragVerfasst am: 15.01.2008, 21:59    Titel: Antworten mit Zitat

Danke, die MonsterFAQ sieht sehr vielversprechend aus!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Stormy



Anmeldungsdatum: 10.09.2004
Beiträge: 567
Wohnort: Sachsen - wo die schönen Frauen wachsen ;)

BeitragVerfasst am: 16.01.2008, 00:07    Titel: Antworten mit Zitat

Um flimmern zu verhindern, solltest du screenlock und screenunlock verwenden. Hier ein kleines Beispiel dazu:

Code:
#include "fbgfx.bi"

SCREENRES 640,480,32
DIM AS INTEGER X, Y, size
X = 320: Y = 240: size = 50
DO
    ' Darstellung
   
    SCREENLOCK
    CLS   
    LINE (X-size/2,Y-size/2)-(X+size/2, Y+size/2),RGB(255,255,255),BF
    LOCATE 1: PRINT X, Y
    SCREENUNLOCK   
   
    ' Steuerung
   
    IF MULTIKEY(fb.SC_UP) THEN Y -= 1
    IF MULTIKEY(fb.SC_DOWN) THEN Y += 1
    IF MULTIKEY(fb.SC_LEFT) THEN X -= 1
    IF MULTIKEY(fb.SC_RIGHT) THEN X += 1
   
LOOP UNTIL MULTIKEY(fb.SC_ESC)


Falls du Hinweise zu den Befehlen suchst:
http://www.freebasic.net/wiki/wikka.php?wakka=KeyPgScreenlock
http://www.freebasic.net/wiki/wikka.php?wakka=KeyPgScreenunlock
http://www.freebasic.net/wiki/wikka.php?wakka=KeyPgMultikey
_________________
+++ QB-City +++ Die virtuelle Stadt für jeden Freelancer - Join the community!
Projekte: QB-City,MysticWorld (RPG), 2D-OpenGL-Tutorial
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Bauchredner



Anmeldungsdatum: 11.01.2008
Beiträge: 57

BeitragVerfasst am: 16.01.2008, 11:37    Titel: Antworten mit Zitat

Sehr vielen Dank, jetzt kanns richtig losgehen mit Programmieren!

Aber trotzdem nochmals eine Frage:
Wie kann ich die Sache langsamer bewegen lassen und wie kann ich das Programm mit Auflösung 230x200 in Vollbild betrachten?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 16.01.2008, 22:10    Titel: Antworten mit Zitat

Ja das geht:
Code:

screenres(230, 200, 32, ,1)

Die "1" ist wichtig, sie gibt an ob es im Vollbild angezeigt wird. "32" ist die Farbtiefe. Genauer wirds natürlich in der Referenz beschrieben, auf die auch ich verweise. zwinkern

MfG Caran
_________________
Eine Erkenntnis von heute kann die Tochter eines Irrtums von gestern sein.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Bauchredner



Anmeldungsdatum: 11.01.2008
Beiträge: 57

BeitragVerfasst am: 17.01.2008, 17:27    Titel: Antworten mit Zitat

Danke für die Hilfe!

Um das Bild langsamer bewegen zu können, geht y-0.5 ja nicht. Was kann ich da machen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Stormy



Anmeldungsdatum: 10.09.2004
Beiträge: 567
Wohnort: Sachsen - wo die schönen Frauen wachsen ;)

BeitragVerfasst am: 17.01.2008, 17:49    Titel: Antworten mit Zitat

Schreib mal ein SCREENSYNC nach SCREENUNLCOCK. Mit diesem Befehl wird so lange gewartet, bis der aktuelle Framebuffer fertig gezeichnet wird. Damit regeln sich die fps an die Hz (Bildwiederholung) des Bildschirms ein. Bei mir sind das zB 85 im Fenstermodus und 100 im Vollbild.

Alternativ kannst du deine Bewegung fps-unabhängig gestalten: Siehe in diesem Beitrag von mir

Edit: Achja.. Y-0.5 geht deswegen nicht, weil Y ein Integer ist. Mit Integer-Variablen kannst du nur ganze Zahlen behandeln. Die Lösung ist denkbar einfach: Du nimmst anstelle von Integer den Single- oder Double-Typ, der Kommazahlen in einfacher bzw. doppelter Genauigkeiten verwalten kann.
_________________
+++ QB-City +++ Die virtuelle Stadt für jeden Freelancer - Join the community!
Projekte: QB-City,MysticWorld (RPG), 2D-OpenGL-Tutorial
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 20.01.2008, 03:46    Titel: Re: Spielprogrammierung: Kein Flimmern, Steuerung Antworten mit Zitat

Bauchredner hat Folgendes geschrieben:

Ich kenne das Select Case, aber ich weiss noch von QuickBasic, dass der Spielverlauf dann nicht weiter geht, bis man eine Taste drückt.
Ich bedanke mich zum Voraus für die Hilfe

Du kannst ja mal in den Quellcode von Muhbbles (meinem Snake-klon) da hab ich den Spielverlauf, d.h. die Verarbeitung der Koordinaten usw in eine do-loop schleife gesteckt und mit inkey nach einer taste gerfragt, wurde keine taste gedrückt, ging das spiel trotzdem weiter.
die Auswertung hab ich mit case gemacht

mein Muhbbles projekt findest du Hier
_________________
// nicht mehr aktiv //
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz