Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Bauchredner
Anmeldungsdatum: 11.01.2008 Beiträge: 57
|
Verfasst am: 15.01.2008, 20:54 Titel: Spielprogrammierung: Kein Flimmern, Steuerung |
|
|
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 |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 15.01.2008, 20:58 Titel: |
|
|
Wird sehr ausführlich in http://www.antonis.de/mfaq erklärt. _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Bauchredner
Anmeldungsdatum: 11.01.2008 Beiträge: 57
|
Verfasst am: 15.01.2008, 21:16 Titel: |
|
|
Sry, ich meine natürlich FreeBasic (als ich dort Free Basic eingegeben habe, kam nichts FreeBasic-artiges). |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 15.01.2008, 21:31 Titel: |
|
|
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.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 15.01.2008, 21:57 Titel: Re: Spielprogrammierung: Kein Flimmern, Steuerung |
|
|
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 |
|
 |
Bauchredner
Anmeldungsdatum: 11.01.2008 Beiträge: 57
|
Verfasst am: 15.01.2008, 21:59 Titel: |
|
|
Danke, die MonsterFAQ sieht sehr vielversprechend aus! |
|
Nach oben |
|
 |
Stormy

Anmeldungsdatum: 10.09.2004 Beiträge: 567 Wohnort: Sachsen - wo die schönen Frauen wachsen ;)
|
Verfasst am: 16.01.2008, 00:07 Titel: |
|
|
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 |
|
 |
Bauchredner
Anmeldungsdatum: 11.01.2008 Beiträge: 57
|
Verfasst am: 16.01.2008, 11:37 Titel: |
|
|
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 |
|
 |
Caran

Anmeldungsdatum: 11.03.2007 Beiträge: 290 Wohnort: Lörrach
|
Verfasst am: 16.01.2008, 22:10 Titel: |
|
|
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.
MfG Caran _________________ Eine Erkenntnis von heute kann die Tochter eines Irrtums von gestern sein. |
|
Nach oben |
|
 |
Bauchredner
Anmeldungsdatum: 11.01.2008 Beiträge: 57
|
Verfasst am: 17.01.2008, 17:27 Titel: |
|
|
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 |
|
 |
Stormy

Anmeldungsdatum: 10.09.2004 Beiträge: 567 Wohnort: Sachsen - wo die schönen Frauen wachsen ;)
|
Verfasst am: 17.01.2008, 17:49 Titel: |
|
|
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 |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 20.01.2008, 03:46 Titel: Re: Spielprogrammierung: Kein Flimmern, Steuerung |
|
|
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 |
|
 |
|