TicTacToe - Konsolenanwendung - weiteres Fenster öffnen?



  • Hi ... habe da ein Problem wobei ihr mir vielleicht helfen könnt. Habe das gleiche Thema bereits bei ANSI C angesprochen - wurde aber an euch verwiesen. Also nehmt´s mir nicht krumm wenn ich den Thread einfach kopiere 🙂

    Bin mit meinem TicTacToe Spiel soweit fertig. Nun habe ich überlegt ob es Möglich wäre, ein weiteres Fenster zu programmieren - welches die offenstehenden Zugmöglichkeiten anzeigt. Versucht habe ich das via

    #define neuesfenster() system("start cmd /K")
    ...
    int main()
    _beginthread (möglichkeiten, 0, NULL);
    ...
    ...
    void möglichkeiten ( void *dummy)
    {
    neuesfenster();
    printf ("neues Fenster");
    _endthread();
    }
    

    Aber das funktioniert natürlich nicht so wie ich mir das gedacht habe. Wie auch? Ist es denn möglich die printf Anweisung auf das zweite Fenster umzulenken?

    Oder sollte ich das komplett anders machen? Für Tips wäre ich echt dankbar. (Klar ist der Aufwand für ein solches "Project" zu groß, aber ich bin eben Anfänger und möchte versuchen meine Ideen umzusetzen ...)



  • Hi!
    Mach das doch alles in ein Fenster rein. Du könntest zwei Puffer benutzen; einen für das Spielfeld und den anderen für die offenstehenden Zugmöglichkeiten. Die kannst du dann bei Bedarf wahlweise anzeigen lassen.



  • Wie genau meinst du das mit dem Puffer? Kannst du mir dazu den Syntax Beispiel geben?



  • Ja, kann ich. Vielleicht ist da etwas für dich dabei:

    #include <windows.h>
    #include <stdio.h>
    #include <conio.h>
    
    HANDLE hOut, hIn;
    unsigned char BigBuffer [] = {
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xda,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc2,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc2,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xbf,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0xdf,0xdc,0x20,0xdc,0xdf,0x20,0x20,0xb3,0x20,0x20,0x20,0xdc,0xdf,0xdc,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0xdb,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0xdb,0x20,0x20,0x20,0xdb,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0xdc,0xdf,0x20,0xdf,0xdc,0x20,0x20,0xb3,0x20,0x20,0x20,0xdf,0xdc,0xdf,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xc3,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xb4,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xc3,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc5,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xb4,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xb3,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xc0,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc1,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc1,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xd9,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xe,0x20,0x42,0x69,0x67,0x20,0x42,0x72,0x6f,0x74,0x68,0x65,0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x62,0x75,0x66,0x66,0x65,0x72,0x1d,0x64,0x65,0x6d,0x6f,0x20,0xe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
    };
    
    unsigned char b1[] = 
    {
    	'X', 'X', 'O',
    	'O', 'X', 'O',
    	'O', 'O', '?'
    };
    
    unsigned char b2[] = 
    {
    	'T', 'I', 'C',
    	'T', 'A', 'C',
    	'T', 'O', 'E'
    };
    
    unsigned char rubber[] = 
    {
    	' ', ' ', ' ',
    	' ', ' ', ' ',
    	' ', ' ', ' '
    };
    
    void emsg (   char* emsg )
    {
    	if ( NULL != emsg )
    		fprintf ( stderr, "%s\n", emsg );
    	getchar();
    	exit (1);
    }
    
    void gotoxy ( short x, short y )
    {
    	COORD pos;
    	pos.X =  x;
    	pos.Y =  y;
    	if ( ! SetConsoleCursorPosition( hOut, pos ) )
    		emsg( "gotoxy: SetConsoleCursorPosition failed." );
    } 
    
    void coninit ()
    {
    	hOut = GetStdHandle( STD_OUTPUT_HANDLE );
    	if ( NULL == hOut )
    		emsg ("init_console: GetStdHandle failed.");
    	hIn = GetStdHandle( STD_INPUT_HANDLE );
    	if ( NULL == hIn )
    		emsg ("init_console: GetStdHandle failed.");
    }
    
    void bufprint ( int x, int y, unsigned char* buf, int bufsizx, int bufsizy )
    {
    	int i, j;
    	gotoxy(x,y);
    
    	for ( i=0; i<bufsizy; i++ )
    	{	
    		for ( j=0; j<bufsizx; j++ )
    		{
    			putchar (buf[i*bufsizx+j]);
    		}
    		y++;
    		gotoxy(x,y);
    	}
    
    }
    
    int main (void)
    {
    	int i= 10;
    	int sl = 200;
    
    	coninit ();
    
    	while ( sl > 0 )
    	{
    		bufprint ( 5, 5, b2, 3, 3); 
    		Sleep(sl);
    		bufprint ( 5, 5, rubber, 3, 3); 
    		Sleep(sl);
    		sl -= i;
    		i+=4;
    	}
    
    	bufprint ( 5, 5, b2, 3, 3); 
    	gotoxy(20,5);
    	printf("This is a small buffer: ");
    	bufprint ( 45, 5, b1, 3, 3);
    	Sleep(3000);
    
    	gotoxy(10,15);
    	puts("And now be prepared for the BigBuffer - hit any key when ready.");
    	getch();
    
     	bufprint (0,0,BigBuffer,80,25 );
    
    	return 0;
    }
    

    Gruß,
    B.B.



  • Was ich nicht verstehe:

    Zeile 6 definiert ein Array von unbekannter Größe?



  • Die Größe berechnet der Compiler. Du kannst dir die Größe so anzeigen lassen:

    printf("%d\n", sizeof (BigBuffer));
    

Anmelden zum Antworten