Das Grundgerüst entsteht


Da ich keinen Ansatz für die KI1) hatte, dafür umso mehr Ideen für die GUI2) und auch wusste dass ich diese mit NCurses umsetzen will, hies das für mich, dass ich auch genau damit anfange.

connect4.hpp:
#define INIT \
initscr(); \
start_color(); \
cbreak(); \
noecho(); \
nonl(); \
intrflush(stdscr, FALSE); \
keypad(stdscr, TRUE); \
nodelay(stdscr,FALSE); \
clear();
 
#define REW \
refresh();\
endwin();\

const int ROW = 6;
const int COL = 7;
const char PL1 = 'O';
const char PL2 = 'X';
const int WIN = 4;



connect4.cpp:
#include <iostream>
#include <curses.h>
#include "connect4.hpp"
using namespace std;
 
class Connect4 {
 
  private:
 
  public:
 
};
 
int main(void) {
 
  Connect4 game;
 
  INIT
 
 
  REW
 
  return 0;
}



Was bedeutet das bisher?

Jetzt ist NCurses bereit um damit zu arbeiten.
Und die Konstanten3), sprich die Vorgaben sind auch schon definiert.

Gehen wir von Oben nach Unten vor.
Ich initialisiere alle NCurses Funktionen über #define INIT, das macht die Funktion main() bzw. die Datei dazu übersichtlicher.
Am Programmende muss NCurses auch wieder ordentlich beendet werden. dies geschieht über #define REW.

Die Initialisierung von NCurses

  • initscr() initialisiert das ncurses-Fenster.
  • start_color() Aktiviert die Farben für die ncurses-Konsole.
  • cbreak() deaktiviert das Puffern der Eingabe bis auf einige Tasten-Kombinationen
  • noecho() deaktiviert das Ausgeben von Zeichen bei der Eingabe.
  • nonl() interpretiert RETURN als CR
  • intrflush() deaktiviert das Löschen des Eingabe-Puffers bei Unterbrechungen.
  • keypad() aktiviert das Zehnertastenfeld für ein Fenster.
  • nodelay() deaktiviert das warten auf eine Eingabe, zB. bei getch
  • clear() löscht den gesamten stdscr.

Das Beenden von NCurses

  • refresh() läd das Hauptfenster neu um Veränderungen sichtbar zu machen.
  • endwin() beendet den ncurses Modus.

Die Konstanten

Hierzu gibt es wohl nicht viel zu sagen. Es werden einfach die Vorgaben als feste Variable umgesetzt. Also die Anzahl der Reihen und Spalten, sowie die Spielsteine der Spieler.
Und natürlich die Anzahl der Steine die in einer Reihe sein müssen um zu gewinnen.

const int ROW = 6;
const int COL = 7;
const char PL1 = 'O';
const char PL2 = 'X';
const int WIN = 4;


Somit ist das Grundgerüst erst einmal bereit um darauf aufzubauen.

Hier gehts zum nächsten Schritt.
Startseite.

1)
Künstliche Intelligenz
2)
Graphical user Interface | Grafische benutzer Oberfläche
3)
während des Programmablaufs unveränderbare Variablen