Forum moved to if-forum.org
Autor Nachricht
<  Statuszeile Inform 6
Kris
BeitragVerfasst am: Mo, 29 Jun 2015 - 22:07  Antworten mit Zitat
Kompassleser
Kompassleser


Anmeldungsdatum: 21.02.2004
Beiträge: 198
Wohnort: Rheinmain

Hallo,

ich baue gerade die cyoa.h etwas um (eine einfache extension um cyoas zu erstellen), soll nix großes werden, ich will einfache Geschichten für einen Leseanfänger erstellen mit einfachen Auswahlmöglichkeiten die Geschichte voranzubringen.

D.h. eine spiel.inf und die cyoa.h sind dann alles, keine verblib, parserm usw.
Nun hätte ich aber gerne eine Statuszeile um z.B. Punkte und den aktuellen Ort anzuzeigen.

Ich habe versucht, die DrawStatusline mit den dazugehörigen Subs aus der parserm zu extrahieren, das ging aber völlig schief. Man muss sie völlig auseinander nehmen, viele Variablen/Globals wie z.B. location gibt es ja nicht.

Gibt es eine einfache Möglichlkeit für eine Statuszeile? Oder gibt es eine andere Extention um cyoas zu schreiben? Ich meine, mit menu.h ging sowas auch, aber das alles ist schon etwas länger her bei mir.

Kris
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Hannes
BeitragVerfasst am: Di, 30 Jun 2015 - 12:09  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 25.03.2010
Beiträge: 660

Wenn du etwas anzeigen willst, muss es ja logischerweise vorher irgendwo gespeichert sein. Wenn es bei dir keine location-Variable gibt, wie willst du dann den Ort ausgeben? Solche strukturellen Fragen solltest du dir stellen, bevor du über technischen Lösungen grübelst.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Kris
BeitragVerfasst am: Di, 30 Jun 2015 - 12:53  Antworten mit Zitat
Kompassleser
Kompassleser


Anmeldungsdatum: 21.02.2004
Beiträge: 198
Wohnort: Rheinmain

Die Struktur habe ich, nur heißt die location bei mir eben curr_situation, genauso habe ich natürlich eine Variable für die Punktzahl usw.

Meine Frage zielte auf eine isolierte Routine für eine Statuszeile die man dann nach belieben anpassen kann.

Hat jemand schonmal sowas irgendwo gesehen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ChristianB
BeitragVerfasst am: Di, 30 Jun 2015 - 21:16  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg

Wenn Du Deine eigene DrawStatusLine() schreiben möchtest, kommst Du, glaube ich, an Z-Maschinen-Assembly (oder GLK für Glulx) nicht vorbei. Ich habe damit noch nie was gemacht, aber vielleicht findest Du bei der Auflistung der Opcodes einen Anfang (z.B. SPLIT_WINDOW):

http://inform-fiction.org/zmachine/standards/z1point0/sect15.html#split_window
_________________
Worichtung willst du ingehen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Kris
BeitragVerfasst am: Fr, 3 Jul 2015 - 8:37  Antworten mit Zitat
Kompassleser
Kompassleser


Anmeldungsdatum: 21.02.2004
Beiträge: 198
Wohnort: Rheinmain

Hallo Christian,

vielen Dank für den Hinweis. Das ist mir momentan dann erst mal zu viel Aufwand, wäre aber mal eine Projekt für längere Winterabende ;-)

Dann gibt es noch keine Statuszeile sondern Punkteausgabe u.ä. auf Tastendruck.

Viele Grüße

Kris
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ChristianB
BeitragVerfasst am: Fr, 3 Jul 2015 - 10:55  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg

Jetzt bin ich neugierig geworden und habe mal probiert, die wichtigsten Opcodes für eine Statuszeile aus dem DM4, §42, S. 308 ff. zusammenzustellen:

Code:
[ Main;
    DrawStatusLine();
    print "^^^Nix los hier!";
];

! Wie in DM4 §42, S. 308 beschrieben

[ DrawStatusLine;
    @split_window 2; ! Zwei Zeilen für die Statusleiste
    @set_window 1;   ! Wähle Fenster 1 aus (1 = oberes Fenster, 0 = unteres Fenster)
    @set_cursor 1 1; ! Setze Cursor an Position (1,1) (oben links)
    style reverse;   ! Inverse Farben für den Text
    font off;        ! Proportionalschrift aus
    @buffer_mode 1;  ! Zeilenumbruch nur nach Wörtern
    @erase_window 1; ! Fenster 1 löschen
   
    ! Statuszeile auf voller Breite mit Leerzeichen füllen
    HFill(' ', 0->33);
    @set_cursor 1 1; ! Cursor auf erste Position der ersten Zeile setzen
    print "Status: Laaaangweilig!";
    @set_cursor 2 1; ! Cursor auf erste Position der zweiten Zeile setzen
    HFill(' ', 0->33);
    @set_cursor 2 1;
    print "Der Bildschirm hat ", 0->32, " Zeilen und ", 0->33, " Spalten.";
   
    ! Und dann wieder alles zurücksetzen
   
    style roman;     ! Normaler Schrift-Stil
    font on;         ! Proportionalschrift an
    @set_colour 1 1; ! 1 = Default
    @set_window 0;   ! Aktuelles Fenster: Unten
];

[ HFill ch rows      i;
    for (i = 0 : i < rows : i++) {
        print (char) ch;
    }
];

Mit @set_colour kann man auch noch Farben ändern usw. Kapitel 42 im DM4 erzählt eigentlich alles Wichtige. (Und das Kapitel ist nicht so lang wie eine Winternacht. Aber interessanter.)
_________________
Worichtung willst du ingehen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Hannes
BeitragVerfasst am: Fr, 3 Jul 2015 - 11:37  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 25.03.2010
Beiträge: 660

Hier ist eine Routine, die ich mal benutzt habe:

Code:
[ DrawStatusLine width posa;
   @split_window 1; @set_window 1; @set_cursor 1 1; style reverse;
   width = 0->33; posa = width-30;
   spaces width;
   @set_cursor 1 2;
   print (string) "bla";
   @set_cursor 1 posa;
   print (string) "blubb";
   @set_cursor 1 1; style roman; @set_window 0;
];


D.h. der erste String ist links oben, der zweite rechts oben.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Kris
BeitragVerfasst am: Mo, 20 Jul 2015 - 9:46  Antworten mit Zitat
Kompassleser
Kompassleser


Anmeldungsdatum: 21.02.2004
Beiträge: 198
Wohnort: Rheinmain

Hallo,

zuerst mal Sorry, dass ich mich nicht mehr gerührt habe, ich hatte dann doch mal über die OP-Codes gelesen, aber bei dieser Hitze habe ich nicht weiter daran arbeiten wollen und frönte anderen Hobbies.

Danke euch beiden, dass Ihr geschaut und geschrieben habt. Ich werde jetzt wohl doch eine Statuszeile einbauen, das gibt dann doch ein wenig Textadventure-Feeling.

Gruß

Kris
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Alle Zeiten sind GMT + 1 Stunde (MEZ)

Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Seite 1 von 1
if-de :: Forum Foren-Übersicht  >  Inform & Glulx

Neues Thema eröffnen   Neue Antwort erstellen


 
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.



Kontakt: Administrator

Powered by phpBB and NoseBleed v1.05