2017-08-08 4 views
1

J'essaie d'imprimer un jeu d'échecs que j'implémente en utilisant des tableaux de bits. Je n'arrive pas à visualiser comment afficher la grille 8x8 avec les pièces à jouer.Comment afficher un tableau de bits dérivé de littéraux binaires?

Voici le lien vers le tutorial Je suis (même si incomplet).

@white_pawn = 0b0000000000000000000000000000000000000000000000001111111100000000 
    @white_rook = 0b0000000000000000000000000000000000000000000000000000000010000001 
    @white_knight = 0b0000000000000000000000000000000000000000000000000000000001000010 
    @white_bishop = 0b0000000000000000000000000000000000000000000000000000000000100100 
    @white_king = 0b0000000000000000000000000000000000000000000000000000000000010000 
    @white_queen = 0b0000000000000000000000000000000000000000000000000000000000001000 

    @black_pawn = 0b0000000011111111000000000000000000000000000000000000000000000000 
    @black_rook = 0b1000000100000000000000000000000000000000000000000000000000000000 
    @black_knight = 0b0100001000000000000000000000000000000000000000000000000000000000 
    @black_bishop = 0b0010010000000000000000000000000000000000000000000000000000000000 
    @black_king = 0b0001000000000000000000000000000000000000000000000000000000000000 
    @black_queen = 0b0000100000000000000000000000000000000000000000000000000000000000 

    @all_pieces = @all_white | @all_black 

J'ai le binaire ci-dessus mis en place selon une position de jeu d'échecs par défaut dans lequel le MSB est le coin supérieur gauche et le bit de poids faible est le coin inférieur droit. Au fur et à mesure que le jeu progresse, les littéraux binaires ci-dessus changeront au fil du temps (ils sont actuellement aux emplacements d'échecs par défaut).

enter image description here

Le gestionnaire de jeu alors considérer tous les littéraux binaires mis à jour au-dessus du réimprimez le conseil d'administration, comme indiqué ci-dessus.

Quel serait un bon moyen de parcourir les littéraux et d'imprimer les carrés/pièces de jeu vides nécessaires selon les informations ci-dessus?

+0

Pouvez-vous donner plus d'explications sur la façon dont vous planifiez votre jeu d'échecs? – clabe45

+0

Je viens de mettre à jour la question avec un lien vers un tutoriel que j'utilise qui devrait être beaucoup plus clair. – Carrein

Répondre

1

Pour chaque type de pièce d'échecs (à savoir white_pawn, white_rook, black_pawn, black_rook, ...), effectuer une itération sur chaque bit du nombre binaire. Si le bit est 1, alors dessinez l'image de pièce d'échec appropriée, à (x, y); où

x = bit_index % board_width   # relative position to nearest-down chess board row 
y = (bit_index/board_width).floor # nearest-down chess board row