Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: [C] disegnare scacchi

  1. #1

    disegnare scacchi

    esiste qualche libreria in C per visualizzare i pezzi degli scacchi? grazie ciao

  2. #2
    In un'applicazione console? In una GUI? Su che sistema operativo?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    si scusa. su windows su console

  4. #4
    http://en.wikipedia.org/wiki/Chess_symbols_in_Unicode
    li puoi scrivere usando le versioni unicode delle funzioni di IO (wprintf, fputws, putwchar, ...)
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    mi potresti fare un iccolo esempio perche non so come usare queste funzioni e quali lbrerie includere. grazie

  6. #6
    ma con il C si puo usare unicode?

  7. #7
    Originariamente inviato da fdoubledd
    ma con il C si puo usare unicode?
    Sì, anche se il supporto a seconda della piattaforma è più o meno decente (e soprattutto, su Windows si tende ad usare wchar_t/UTF-16, su Linux char/UTF-8).

    Esempio:
    codice:
    #include <wchar.h>
    #include <stdio.h>
    #include <locale.h>
    
    /* 
     * Definisce un'enumerazione con i tipi di pezzi
     * Nota: l'ordine è importante, è lo stesso con cui compaiono
     * i corrispondenti caratteri Unicode
     */
    enum ChessPiecesT
    {
        King,
        Queen,
        Rock,
        Bishop,
        Knight,
        Pawn,
    };
    
    enum PlayerT
    {
        White=0x2654,   /* codice del carattere re bianco */
        Black=0x265a,   /* codice del carattere re nero   */
    };
    
    /* Fornisce il carattere per il pezzo desiderato */
    inline wchar_t PieceChar(enum PlayerT Player, enum ChessPiecesT Piece)
    {
        /* costruisce il codice del carattere corretto sommando al codice del primo pezzo
         * del giocatore l'offset del carattere desiderato */
        return (wchar_t)(Player + Piece);
    }
    
    /* Prima riga della scacchiera (per il nero) */
    enum ChessPiecesT TopRow[]={Rock, Knight, Bishop, Queen, King, Bishop, Knight, Rock};
    
    /* Stampa la prima riga della scacchiera */
    void PrintTopRow(enum PlayerT Player)
    {
        int i;
        for(i=0; i<8; i++)
            putwchar(PieceChar(Player, TopRow[Player==Black?i:(7-i)])); /* se ci è stato chiesto per il bianco inverte l'ordine dei pezzi */
        putwchar(L'\n');
    }
    
    /* stampa gli otto pedoni */
    void PrintPawns(enum PlayerT Player)
    {
        wchar_t pawnChar=PieceChar(Player, Pawn);
        int i;
        for(i=0; i<8; i++)
            putwchar(pawnChar);
        putwchar(L'\n');
    }
    
    int main()
    {
        setlocale(LC_CTYPE, "");
        PrintTopRow(Black);
        PrintPawns(Black);
        fputws(L"\n\n\n\n", stdout);
        PrintPawns(White);
        PrintTopRow(White);
        return 0;
    }
    (su Linux va, dovrebbe andare anche su Windows)
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    grazie ho provato ad eseguirlo ma non mi stampa i pezzi .si vede solo che stampa una matrice perche lascia un po di spazi.

  9. #9
    Al momento non ho una macchina Windows sottomano, puoi farmi uno screenshot?
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    scusa per la pessima qualita
    Immagini allegate Immagini allegate

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.