2017-12-16 10 views
0

Ich benutze ncurses, um ein Spiel auf c zu erstellen, aber das Fenster, das ich basierend auf den Spieleinstellungen (LINES AND COLS) erstellt habe, ist zu klein und es ist schwer zu sehen, was im Spiel passiert. Gibt es eine Möglichkeit, die Größe des Fensters zu erhöhen (ohne die LINES und COLS zu ändern), um das Fenster besser sichtbar zu machen und den Benutzern zu ermöglichen, zu sehen, was im Spiel passiert?Ncurses Fenster zoom

Code:

void drawGame(RESPONSE resp) { 
int i, j; 
WINDOW *game_win; 
init_pair(2, COLOR_WHITE, COLOR_GREEN); 
game_win = newwin(resp.width, resp.height, 1, 1); 
wbkgd(game_win, COLOR_PAIR(2)); 
keypad(game_win, TRUE); 
noecho(); 
curs_set(FALSE); 

for (int i = 0; i < resp.width; ++i) { 
    for (int j = 0; j < resp.height; ++j) { 
     if (resp.maze[i][j].type == indestrutiveBlock) 
      mvwaddch(game_win, i, j, '#'); 
     if (resp.maze[i][j].type == destrutiveBlock) 
      mvwaddch(game_win, i, j, '*'); 
     if (resp.maze[i][j].type == object) 
      mvwaddch(game_win, i, j, '@'); 
     if (resp.maze[i][j].type == enemy) 
      mvwaddch(game_win, i, j, 'e'); 
     if (resp.maze[i][j].type == emptyBlock) 
      mvwaddch(game_win, i, j, '.'); 
    } 
} 

wrefresh(game_win); 
} 
+1

In Bei den meisten Betriebssystemen ist es dem Benutzer überlassen, die Schriftgröße der Konsole nach seinen Wünschen einzustellen. Es ist jenseits von Ncurses-Zwecken. – usr2564301

+0

Sie könnten 'SIGWINCH' behandeln. Lesen Sie [Signal (7)] (http://man7.org/linux/man-pages/man7/signal.7.html) & [Signal-Sicherheit (7)] (http://man7.org/linux/ man-pages/man7/signal-safety.7.html) –

+0

BTW, für ein Spiel würde ich über eine GUI, z [libsdl] (https://www.libsdl.org/), [GTK] (http://gtk.org/) –

Antwort

0

Sie Video-Highlights wie fett verwenden könnten, oder umgekehrt (oder auch andere Farben) für den Text dieser Anrufe gezogen werden:

  mvwaddch(game_win, i, j, '.'); 

Der letzte Parameter ist mehr als ein Charakter, kann es Fahnen mit ihm kombiniert haben, zum Beispiel

  mvwaddch(game_win, i, j, '.' | A_REVERSE | A_BOLD); 
+0

Die Highlights halfen ein wenig, aber ich meinte, wenn es keinen Weg gibt, wie ein Zoom zu machen auf dem Fenster. Entschuldigung für mein schlechtes Englisch: D – Kelve

+0

nein - es gibt keine Möglichkeit, das zu tun. Deshalb haben wir Video-Highlights :-) –