BASIC

Author Topic: Wann den SHOWSCREEN  (Read 10573 times)

Offline D2O

  • Prof. Inline
  • *****
  • Posts: 1061
    • View Profile
    • http://www.deuteriumoxid.com
Re: Wann den SHOWSCREEN
« Reply #45 on: 2014-Nov-16 »
Guten morgen,

das ganze vielleicht so?
Alles mit Array und seperaten Variablen,
3 Bilder/Karten,
2 davon in einem For Next zeichnen,
1 ausserhalb,
Berechnungen ausserhalb der For Next,

schaut dann so aus,
https://www.dropbox.com/sc/l51qapxixsbz9fx/AAAQg5PXp7tyGnrGs6Tx3Ymua

Code: GLBasic [Select]
// --------------------------------- //
// Project: Worebu
// Start: Friday, November 14, 2014
// IDE Version: 12.312

// 640 * 480 bei 60 FPS Standart GLB einstellung
 SETCURRENTDIR("Media") // go to media files

 // Systemmaus anzeigen
 SYSTEMPOINTER TRUE


GLOBAL i%                               // for next counter
GLOBAL bild%[]                          // für die ID's
DIM bild%[3]            // 0-2 = 3 Felder

GLOBAL winkel%,winkel2%  //Für die drehung
GLOBAL mx%,my%,bt1%,bt2%        // Mousedaten

GLOBAL karte_y%         // für die y position
GLOBAL rotocontrol = TRUE // soll gedreht werden dann TRUE





FOR i = 0 TO 2
        bild%[i] = GENSPRITE()
        LOADSPRITE i+".png",bild%[i] // Bilder haben den Namen 0.png,1.png...
NEXT

WHILE TRUE
// Berechnungen
        MOUSESTATE mx%,my%,bt1%,bt2%

// Berechnungen für Zeichnen 1 und 2
                INC winkel,1    // Pro schleifen durchgang (hier bei 60 FPS) winkel um 1" erhöhen
                //      Sicherheitsabfrage, da es nur 360° gibt, soll der zähler bei 359° wieder auf
                // 0° zurückgestellt werden
                IF winkel > 359 THEN winkel = 0

//Berechnungen für Zeichnen 3
                IF karte_y < 350        // Ist die position kleiner 350, weiter y bewegen
                        INC karte_y,1
                        ELSE    // ansonsten keine bewegung und keine drehung
                        rotocontrol = FALSE
                        winkel2 = 0
                ENDIF
        IF rotocontrol = TRUE   // solange TRUE, drehen
                        DEC winkel2,1
                        IF winkel2 < 0 THEN winkel2 = 359
        ENDIF




// 2 unterschiedliche Bilder in einer Forschleife zeichen
FOR i = 0 TO 1
// Zeichnen
//1
        ROTOSPRITE bild[0],50,50,winkel% // Bild wird auf der position 50,50 gedreht,
//2                                                                     // bei einer framerate vom 60 FPS
        ROTOSPRITE bild[1],mx,my,winkel% // hier hängt die Grafik an de Mouseposition
//3
NEXT

// ein Bild einzeln zeichnen
        ROTOSPRITE bild[2],200,karte_y,winkel2% // Grafik bewegt sich nach unten





SHOWSCREEN  // Gezeichnetes anzeigen
WEND


 
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Offline Worebu

  • Mr. Polyvector
  • ***
  • Posts: 169
  • Moin, Moin
    • View Profile
Re: Wann den SHOWSCREEN
« Reply #46 on: 2014-Nov-16 »
Danke für die Hilfe. ich glaube ich habe es. In "alten" Basic Dialekten hat man die Grafik irgendwo hingeschmissen und da lag sie, und man konnte in der Tatsturabrage eine "Warteschleife" einbauen (bis was einegeben wurde). Bei GLBasic MUSS ich immer Zeichnen oder Abfragen oder was immer, also in einer Schleife alles am laufen halten. Ich habe ja Beispiele und verschieden Lösungen bekommen, werde die mal anschauen und sehen welche besser passt.

Vielen Dank.
PC: Intel I7 3770K, 32GB DDR3, GTX1060 6GB,  480GB SSD, 1x2TB, 1x1TB, 2x ext. 1TB USB3.0, 1x ext. 2TB USB3.0, W10 x64 Pro, WaKü

Offline S.O.P.M.

  • Prof. Inline
  • *****
  • Posts: 529
    • View Profile
Re: Wann den SHOWSCREEN
« Reply #47 on: 2014-Nov-16 »
Quote
In "alten" Basic Dialekten hat man die Grafik irgendwo hingeschmissen und da lag sie, und man konnte in der Tatsturabrage eine "Warteschleife" einbauen (bis was einegeben wurde).
Genau das war meine Rede. Man hat die Grafik einmal gezeichnet und sie blieb, hier muss sie immer wieder gezeichnet werden. Man kann bei GLBasic zwar auch mit z. B. KEYWAIT dafür sorgen, dass das Programm anhält, doch das hätte dein Problem nicht gelöst. Ist dir auch der entscheidende Vorteil dieser Methode bewusst? ;)
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

Offline Worebu

  • Mr. Polyvector
  • ***
  • Posts: 169
  • Moin, Moin
    • View Profile
Re: Wann den SHOWSCREEN
« Reply #48 on: 2014-Nov-16 »
Das der Screen immer Aktuell ist oder das Schneller auf änderungen reagiert wird.
PC: Intel I7 3770K, 32GB DDR3, GTX1060 6GB,  480GB SSD, 1x2TB, 1x1TB, 2x ext. 1TB USB3.0, 1x ext. 2TB USB3.0, W10 x64 Pro, WaKü

Offline S.O.P.M.

  • Prof. Inline
  • *****
  • Posts: 529
    • View Profile
Re: Wann den SHOWSCREEN
« Reply #49 on: 2014-Nov-16 »
Wie es in der Hilfe so herrlich formuliert ist: "GLBasic benutzt versteckte Bildschirmseiten für flackerfreien Grafikaufbau." Diese Phrase gefällt mir bis heute saumäßig gut :good:
Durch diese Methode hat man einen sauberen Bildaufbau. Grafiken, die bspw. verschoben werden sollen, müssen vorher nicht mit der Farbe des Hindergrundes übermalt werden. Dadurch kann ein Flackern entstehen - jeder kennt das von früher. Die auf die versteckte Bildschirmseite gezeichneten Grafiken werden praktisch auf einen Schlag in den Vordergrund gebracht.

Eventuell könnte für dich der Befehl CLEARSCREEN -1 interessant sein. Damit werden Grafiken zwar auch nicht unmittelbar auf den sichtbaren Bereich gerendert, jedoch bleiben sie bei jedem Aufruf von SHOWSCREEN auch ohne erneutes Zeichnen erhalten. Das zumindest interpretiere ich selbst aus der Beschreibung. Allerdings solltest du diese Variante nicht verwenden, sondern dir die gebräuchliche Methode aneignen. Schließlich machst du es, wie es dir am liebsten ist.
« Last Edit: 2014-Nov-16 by S.O.P.M. »
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

Offline Worebu

  • Mr. Polyvector
  • ***
  • Posts: 169
  • Moin, Moin
    • View Profile
Re: Wann den SHOWSCREEN
« Reply #50 on: 2014-Nov-17 »
Wobei ich jetzt aber nicht sagen könnte

for i = 1 to 360
  rotosprite 1, 300,300, i
next

weil ich ja keinen Showscreen einbauen darf (soll). Dann müsste ich solche Sachen immer ohne Schleife machen, und einen Zähler mitlaufen lassen.

So nachdem Motto:

if i < 360
  rotosprite 1, 300,300, i
   inc i
endif

so mal als beispiel, ist das richtig?
PC: Intel I7 3770K, 32GB DDR3, GTX1060 6GB,  480GB SSD, 1x2TB, 1x1TB, 2x ext. 1TB USB3.0, 1x ext. 2TB USB3.0, W10 x64 Pro, WaKü

Offline kanonet

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1142
    • View Profile
    • My GLBasic code archiv
Re: Wann den SHOWSCREEN
« Reply #51 on: 2014-Nov-17 »
Exakt, eine FOR-Schleife wäre für soetwas falsch, die könntest du höchstens gebrauchen, wenn du durch ein Array mehrerer Elemente gehst und sie alle zeichnest - aber nicht, um ein einzelnes Element zu zeichnen.
Lenovo Thinkpad T430u: Intel i5-3317U, 8GB DDR3, NVidia GeForce 620M, Micron RealSSD C400 @Win7 x64

Offline Worebu

  • Mr. Polyvector
  • ***
  • Posts: 169
  • Moin, Moin
    • View Profile
Re: Wann den SHOWSCREEN
« Reply #52 on: 2014-Nov-17 »
Aber wenn ich jetzt 5 karten habe, muss ich 5 mal Drawsprite einbauen wenn die karten zeichen will die unten sind unten sind?
« Last Edit: 2014-Nov-18 by Worebu »
PC: Intel I7 3770K, 32GB DDR3, GTX1060 6GB,  480GB SSD, 1x2TB, 1x1TB, 2x ext. 1TB USB3.0, 1x ext. 2TB USB3.0, W10 x64 Pro, WaKü

Offline S.O.P.M.

  • Prof. Inline
  • *****
  • Posts: 529
    • View Profile
Re: Wann den SHOWSCREEN
« Reply #53 on: 2014-Nov-18 »
Selbstverständlich! Für jede darzustellende Kartengrafik ein DRAWSPRITE.
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

Offline kanonet

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1142
    • View Profile
    • My GLBasic code archiv
Re: Wann den SHOWSCREEN
« Reply #54 on: 2014-Nov-18 »
Wenn du alle Karten in einem Array hast und durch dieses mit FOR oder FOREACH läufst, dann musst du nur ein DRAWSPRITE schreien (natürlich werden trotzdem 5 Aufgerufen), das ist, was ich meinte damit den Code so zu gestallten, dass es egal ist, wie viele Karten du tatsächlich hast.
Lenovo Thinkpad T430u: Intel i5-3317U, 8GB DDR3, NVidia GeForce 620M, Micron RealSSD C400 @Win7 x64

Offline S.O.P.M.

  • Prof. Inline
  • *****
  • Posts: 529
    • View Profile
Re: Wann den SHOWSCREEN
« Reply #55 on: 2014-Nov-18 »
Ja natürlich meinte ich auch mehrere Aufrufe von DRAWSPRITE, nicht, dass der Befehl wegen mehrerer Karten auch mehrfach im Code steht ;)
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5009
  • O Rly?
    • View Profile
Re: Wann den SHOWSCREEN
« Reply #56 on: 2014-Nov-18 »
Sag ja, Basics...
Evtl. komm ich morgen dazu die ersten Tutorials zu machen
I <3 DGArray's :D

PC:
AMD RYzen 7 1700 @3.9Ghz, 16GB HyperX Fury 2666Mhz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Worebu

  • Mr. Polyvector
  • ***
  • Posts: 169
  • Moin, Moin
    • View Profile
Re: Wann den SHOWSCREEN
« Reply #57 on: 2014-Nov-18 »
da freuh ick mir jetzt schon.
PC: Intel I7 3770K, 32GB DDR3, GTX1060 6GB,  480GB SSD, 1x2TB, 1x1TB, 2x ext. 1TB USB3.0, 1x ext. 2TB USB3.0, W10 x64 Pro, WaKü