-
Notifications
You must be signed in to change notification settings - Fork 0
/
drawing.c
96 lines (81 loc) · 2.28 KB
/
drawing.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <string.h>
#include "util.h"
#include "config.h"
#ifdef WIN32
#include "vendor/pdcurses/curses.h"
#include <windows.h>
#else
#include <curses.h>
#endif
/*
Standardeinstellungen fuer die Konsole laden
*/
void initStartScreen()
{
#ifdef WIN32
SetConsoleTitle(TEXT("Game of Life"));
#endif
initscr();
nodelay(stdscr, TRUE);
noecho();
/* Cursor verstecken */
curs_set(0);
/* Scrollen in der Console abschalten */
scrollok (stdscr, TRUE);
/* Farben in der Console starten */
start_color();
/* Farben definieren */
init_pair(1, COLOR_BLACK, COLOR_WHITE);
init_pair(2, COLOR_BLACK, COLOR_GREEN);
init_pair(3, COLOR_WHITE, COLOR_BLACK);
init_pair(4, COLOR_RED, COLOR_WHITE);
init_pair(5, COLOR_GREEN, COLOR_WHITE);
init_pair(6, COLOR_BLUE, COLOR_WHITE);
/* Console leeren */
clear();
}
/*
Diese Funktion aktualisiert die erste Zeile des Bildschirms mit den neuen Werten fuer die Iterationen pro Sekunde und der Nummer der aktuellen Iteration
*/
void updateHeadWin(WINDOW* headWin, GameOfLife GoL)
{
wclear(headWin);
wbkgd(headWin, COLOR_PAIR(1));
char appName[255];
sprintf(appName, "Game of Life v%s", VERSION);
waddstr(headWin, appName);
char interationString[255];
/*
Interationen per Sekunde weglassen bei stepByStep mode
*/
if (GoL.settings.stepByStep == 'y') {
sprintf(interationString, "%s:%i", "Interation", GoL.iteration);
} else {
sprintf(interationString, "%s:%i %s:%i", "Interation", GoL.iteration, "IPS", GoL.interationPerSecond);
}
/* Oben rechts in der Console Positionieren */
mvwaddstr(headWin, 0, COLS - strlen(interationString) - 1, interationString);
wrefresh(headWin);
}
/*
Die Funktion iteriert durch die aktuelle Iteration und gibt einzelnen Zellen aus
*/
void AusgabeSpielfeld(GameOfLife GoL, WINDOW* subWin)
{
int o, i;
for (o = 0; o < GoL.settings.sizeY; o++) {
for(i = 0; i < GoL.settings.sizeX; i++) {
mvwaddch(subWin, o, i, GoL.currentIteration[o][i]);
}
}
wrefresh(subWin);
}
void wmessage(WINDOW* messageWin, char* message)
{
wclear(messageWin);
waddstr(messageWin, message);
wrefresh(messageWin);
getchar();
wclear(messageWin);
wrefresh(messageWin);
}