Author Topic: Wann den SHOWSCREEN  (Read 10570 times)

Offline D2O

  • Prof. Inline
  • *****
  • Posts: 1061
    • View Profile
    • http://www.deuteriumoxid.com
Re: Wann den SHOWSCREEN
« Reply #30 on: 2014-Nov-14 »
Hey ihr geilen Schnitten :D

Wieder geht keiner auf meinen Vorschlag ein...  :S
Nö, ist bald Weihnachten  :D  :booze:

Edit://
@S.O.P.M.,
hmmm, Du hast eigendlich recht.
Die Hilfe ist nicht unbeding die beste und ja, vieleicht muten wir Worebu etwas zuviel mit den Types, bzw. SELF zu.

@Worebu,
nimms uns nicht übel, im Grunde meinen wir es nur gut mit Dir.
Also gib nicht auf, GLB ist ansich nicht so schwer, man kann sich da schon "Durchkämpfen", es gibt durchaus schwierigere
Sprachen.
Ich selber bin auch nicht der beste, habe hier immer wieder pausen von 6 bis 9 Monaten drin und muss dann auch immer wieder mal nachfragen, bzw. vieles nachlesen/auffrischen.

Wenns Probleme mit Deinem Code gibt, grenze das ganze ein, schreibe kleine theoretisch Lauffähige Code's
und poste sie, so können wir relativ schnell nachvollziehen was nicht funktioniert.
Aber nicht unter dem Motto "Copy & Paste" und den rest machen die schon.
Ok?
« Last Edit: 2014-Nov-14 by D2O »
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 backslider

  • Community Developer
  • Prof. Inline
  • ******
  • Posts: 892
    • View Profile
Re: Wann den SHOWSCREEN
« Reply #31 on: 2014-Nov-14 »
Quote
Diese Aussage ist schon ein wenig irreführend und nur wahr, wenn man sie entsprechend interpretiert. Ich habe den Code selbst ausprobiert und weiß, warum er sich nicht compilieren lässt. Es ist jedoch nicht mal nur 1 grundsätzlicher Fehler drin, so viel schon vorweg.

Die Aussage ist immer wahr, eventuell wurde meine Aussage missverstanden.
Wenn du ein Objekt vom Typen Auto hast mit der Eigenschaft PS, dann ist diese niemals, egal wie man interpretiert, GLOBAL.

Sie ist über das Objekt vom Typen Auto aufrufbar, ja. Aber eine globale Variable ist was anderes.

Aber zum Rest deiner Aussagen gebe ich dir Recht S.O.P.M.! :)

Offline kanonet

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1142
    • View Profile
    • My GLBasic code archiv
Re: Wann den SHOWSCREEN
« Reply #32 on: 2014-Nov-14 »
Functions in Types und self ist ein geeignetes Mittel um manche Dinge einfacher oder angenehmer zu gestalten - es ist aber nicht zwingend nötig und eigentlich auch nicht klassisch Basic. Gernot hat es auch nur wegen starker Nachfrage im Forum implementiert, aber eben nicht wirklich dokumentiert. Implementierung und Beispiel gibt es hier.

Generell ist es gut, dass wir es haben - grundsätzlich kann aber auch alles was mit OOP geschrieben wird, auch ohne geschrieben werden. Warum das jetzt hier in die Diskussion eingeführt werden musste, verstehe ich nicht, Worebu ist definitiv noch am Anfang des Lernprozesses und hat noch einiges vor sich, es war daher sicher keine so übermäßig gute Idee ihm auch gleich noch mit einem schlecht dokumentierten Feature wie OOP zu kommen.

@Worebu: von der Diskussion um self mal abgesehen, ist dein ursprüngliches Problem jetzt soweit gelöst?
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 #33 on: 2014-Nov-14 »
@S.O.P.M - Danke das auch mal eine die Lanze für einen Newbie bricht.

Ich habe die Hilfe in ein Word Doc konvertiert um richtig suchen zu können und Word hat das Wort SELF nicht gefunden. Soviel zu "keiner" Eigeninitiative. Ein anderes Problem ist auch, allerdings nicht von GLBasic, das jeder anders programmiert oder seinen Code sauberhält. Ich habe mit Tuts über z.B. Blitzbasic angeschaut und ausprobiert und kann nur sagen ... oh mein Gott. Der Editor ist ein Witz und von lesbar keine Spur. Man kann nicht mal die Fontgrösse ändern .... mann hatte ich Kopfschmerzen. Aber der Vorschlag von SchranzOr wird von mir natürlich gerne angenommen. Und was die Outdated Befehle angeht gibs da was drüber, damit einer wie ich die gleich weglässt und nicht benutzt ?
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 #34 on: 2014-Nov-14 »
Auch in der Hilfe als chm sollte man problemlos suchen können, aber als word gehts sicher auch.
Als outdated fallen mir spontan ein: LET und BLACKSCREEN, eventuell auch noch LOADBMP/USEASBPM, wobei ich nicht ganz weiß, warum Schranz0r die dazu zählt.
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 #35 on: 2014-Nov-14 »
Quote from: backslider
Die Aussage ist immer wahr, eventuell wurde meine Aussage missverstanden.
Wenn du ein Objekt vom Typen Auto hast mit der Eigenschaft PS, dann ist diese niemals, egal wie man interpretiert, GLOBAL.
Sie ist über das Objekt vom Typen Auto aufrufbar, ja. Aber eine globale Variable ist was anderes.
Alles klar. Es war, wie ich vermutet habe, eine reine Verständnissache. Richtig verstanden, ist die Aussage demnach immer wahr. Für mich ist eine globale Variable eine Variable, deren Wert von jeder Stelle im Programm aus gelesen werden kann. In deinem nicht ausführbaren Codebeispiel ist noch gar nicht festgelegt, ob die Typinstanzen global oder lokal sind.
« Last Edit: 2014-Nov-14 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 #36 on: 2014-Nov-14 »
Erstmal Dank an alle.

@SchranzOr für ein TUT wäre ich wohl zuhaben, apropo geile Schnitten, kennen wir uns ;-)

@D20: Von Cut and Paste kann bei meiner Frage nicht Rede sein.

@kanonet: Da muss ich erstmal alles ausprobieren, TYPES oder FUNCTION oder nicht.

In diesem Sinne, ersmal Gute Nacht.



« Last Edit: 2014-Nov-14 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 Marmor

  • Community Developer
  • Prof. Inline
  • ******
  • Posts: 908
  • 96A285CC
    • View Profile
    • my youtube channel
Re: Wann den SHOWSCREEN
« Reply #37 on: 2014-Nov-14 »
<a href="http://www.youtube.com/watch?v=GDE4rsLVB9A" target="_blank">http://www.youtube.com/watch?v=GDE4rsLVB9A</a>


@ Worebu 
bleib dran , ich glaub wenn du erstmal das grundprinzip verinnerlichst hast merkst du das es fetzt.

Offline Worebu

  • Mr. Polyvector
  • ***
  • Posts: 169
  • Moin, Moin
    • View Profile
Re: Wann den SHOWSCREEN
« Reply #38 on: 2014-Nov-16 »
Ich wieder. Um euch zu beruhigen. Es hat sich nichts geändert. Ich habe immer noch das selbe Problem. Ich habe den ganzen Samstag damit verbracht habe es zu lösen. Ich weiss immer noch nicht wo der SHOWSCREEN hinkommt. Code posten hat ja keinen Sinn (wegen Cut & Paste). Ich wills ja begreifen. GLBasc macht was es will.

Mein Aufbau:

Daten laden (grafik)

While

   For Next Schleife mit Aufruf der Funktion

Showscreen
Wend

Ich Zeichne den Hintergrund, Rotate heist ich drehe die erste Karte. Eine Schleife von X grad. Ist die Karte unten zeichne ich sie neu (wie empfohlen). Da ich aber 5 Karten habe kommt die nächste und alles wird wieder gelöscht. Kann mir einer Erkären wo das Ding hinkommt damit ich auch mal was sehe? Vom technische funktioniert alles bekomme keine Fehlermeldung. Wäre Dankbar wenn mir mal jemand den Knoten aus meinem Kopf machen könnte. 
« Last Edit: 2014-Nov-16 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 kanonet

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1142
    • View Profile
    • My GLBasic code archiv
Re: Wann den SHOWSCREEN
« Reply #39 on: 2014-Nov-16 »
Also solange du nur eine Karte hast, funktioniert es wie es soll, aber dir fehlt noch der Schritt von einer zu mehreren Karten?
Ich Zeichne den Hintergrund, Rotate heist ich drehe die erste Karte. Eine Schleife von X grad. Ist die Karte unten zeichne ich sie neu (wie empfohlen). Da ich aber 5 Karten habe kommt die nächste und alles wird wieder gelöscht. Kann mir einer Erkären wo das Ding hinkommt damit ich auch mal was sehe?
Naja du musst jedes SHOWSCREEN alles neu zeichnen, sonst ist es weg. D.h. ist die erste Karte unten angekommen und kommt die zweite, dann musst du jedes SHOWSCREEN nicht nur die zweite Karte zeichnen, sondern eben auch noch die erste, und den Hintergrund. Zeichnest du nur die zweite Karte, dann ist eben auch nur die zweite Karte zu sehen. Klingt doch logisch oder?

Wenn du das jetzt für jede Karte einzeln schreibst, dann funktioniert das zwar, aber ist natürlich ein Riesenaufwand, der mit jeder weiteren Karte weiter steigt. Du solltest dir also (sobald es mir zwei Karten klappt) überlegen, wie du den Code generalisieren kannst, so dass es egal ist, ob die 1 Karte zeichnest, oder 52. Stichwort wären hier Arrays, eventuell Plus Types.

GLBasc macht was es will.
Das ist so nicht korrekt: GLBasic macht was du ihm sagst. Und zwar exakt so wie du es ihm sagst. Aber das heißt eben, dass du ihm jeden noch so kleinen Schritt haarklein vorkauen musst. :nana:
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 #40 on: 2014-Nov-16 »
Idealerweise läuft jedes GLBasic Programm in einer großen Hauptschleife ab. SHOWSCREEN muss in dieser Schleife ganz ans Ende bzw. dann auftauchen, nachdem alle Grafiken gezeichnet wurden. Du hast es schon an die richtige Stelle gesetzt, Worebu. Das Verständnisproblem liegt nach meiner Auffassung immer noch darin, bei jedem Frame, also jedem Schleifendurchlauf, stets alles zeichnen zu müssen, was auch angezeigt werden soll. Das war ja damals bei den alten Basicsprachen nicht so - wie z.B. bei QBasic, welches ich intensiv genutzt hatte. Du musst deinen Code so organisieren, dass zu jedem Zeitpunkt alles gezeichnet wird, was sichtbar sein soll. Dies hinzubekommen bedarf wahrscheinlich weiterer Hilfestellung. Arrays sind da der richtige Weg, wie schon erwähnt wurde.
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 #41 on: 2014-Nov-16 »
Guten Morgen,  da ich die Rotation in einer FOR NEXT Schleife habe muss SHOWSCREEN da auch mit rein?, nach jedem PRINT Befehl ein SHOWSCREEN? Also reicht eigentlich ein SHOWSCREEN nicht.

@kanonet: zb.: Ich habe auf dem Screen eine Überschrift mit PRINT, sobald ich anfange die Karte zu drehen wird PRINT gelöscht, ist die Karte unten zeichne ich sie an die letzten koordinaten, jetzt kommt die zweite Karte (habe ja 5) wird die erste karte gelöscht.  Zum Schluss habe ich die letzte, fünfte Karte unten an der Zielposition liegen und das Programm ist durch. Ich habe das in einer FUNCTION in einer anderen Datei geschrieben (TYPE). Wie gesagt keine Fehlermeldung.
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 Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5009
  • O Rly?
    • View Profile
Re: Wann den SHOWSCREEN
« Reply #42 on: 2014-Nov-16 »
Nein, in eine "For-Schleife" kommt NIEMALS ein SHOWSCREEN, zumindest ist mir kein Einsatz dafür bekannt...

SHOWSCREEN ist im Normalfall IMMER über WEND.

Dein Code ist mit Sicherheit einfach nur falsch!
Du drehst bestimmt komplett(360°) bis du überhaupt das Showscreen wieder triffst...
Wenn ja, dann falsch!

Du musst Rotationen pro Frame ausführen, sonst wird das nix.
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 S.O.P.M.

  • Prof. Inline
  • *****
  • Posts: 529
    • View Profile
Re: Wann den SHOWSCREEN
« Reply #43 on: 2014-Nov-16 »
Quote
Guten Morgen,  da ich die Rotation in einer FOR NEXT Schleife habe muss SHOWSCREEN da auch mit rein?, nach jedem PRINT Befehl ein SHOWSCREEN? Also reicht eigentlich ein SHOWSCREEN nicht.
Genau da scheint das Problem zu liegen. Du rufst SHOWSCREEN dann doch an der falschen Stelle auf. Andere Formulierung, um es vielleicht besser zu verdeutlichen, was passiert. Folgender Satz ist absolut entscheidend für das grundlegende Verständnis mit SHOWSCREEN: Du siehst auf dem Bildschirm immer genau das - und nur das - was seit dem letzten Aufruf von SHOWSCREEN bis zum erneuten Aufruf von SHOWSCREEN gezeichnet wurde. Würdest du nach jedem PRINT einen SHOWSCREEN aufrufen, dann würde dir auch immer nur der Text des einen PRINT angezeigt werden. Möchtest du mehrere PRINT's angezeigt bekommen, musst du sie alle nacheinander, ohne SHOWSCREEN dazwischen, aufrufen. Möchtest du zu diesem Text oder mehreren Texten weitere Grafikausgaben, müssen die ebenfalls alle noch aufgerufen werden, bevor das nächste SHOWSCREEN kommt. Ist das verständlicher?
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 #44 on: 2014-Nov-16 »
Quick and Dirty:

Code: GLBasic [Select]
TYPE TKarte
        rotation%
        spr_id%
ENDTYPE


LOCAL Karte1 AS TKarte
LOCAL Karte2 AS TKarte


CREATESCREEN 1, 1, 50, 100
USESCREEN 1
        DRAWRECT 0,0, 50, 100,  RGB(0xff, 0x00, 0x00)
USESCREEN -1

Karte1.spr_id = 1
Karte2.spr_id = 1


WHILE TRUE
       
        INC Karte1.rotation
        IF Karte1.rotation >= 359 THEN Karte1.rotation = 0

        DEC Karte2.rotation
        IF Karte2.rotation <= -359 THEN Karte2.rotation = 0
       
        ROTOSPRITE Karte1.spr_id, 100,100, Karte1.rotation     
       
        ROTOSPRITE Karte2.spr_id, 300,100, Karte2.rotation     
       
        PRINT Karte1.rotation, 10 ,10
        PRINT Karte2.rotation, 10 ,30
       
SHOWSCREEN
WEND
END

Evtl. wirds dir so klar?!
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