Skip to content

Instantly share code, notes, and snippets.

@pauldwhitman
pauldwhitman / chessInCPart5-upLeft.c
Last active December 14, 2015 18:19
Part of the "Chess in C" blog post series. Calculates the possible up-left diagonal destinations of a bishop.
/* Calculate possible up-left diagonal destinations
* This requires the loop to iterate backwards as we are
* checking cells BEFORE the bishop */
for (i=7; i>=0; i--) {
for (j=7; j>=0; j--){
/* If 1) the cell to right is inbounds of the array and
* 2) the cell isn't not on the final row */
if ((j+1 != 8) && (i != 7)) {
/* ...AND the above-right cell has a bishop OR a breadcrumb ... */
if (board[i+1][j+1] == BISHOP || board[i+1][j+1] == POTENTIAL_MOVE_BISHOP) {
@pauldwhitman
pauldwhitman / chessInCPart5-iterateThroughBoardBackwards.c
Created March 10, 2013 11:13
Part of the "Chess in C" blog post series. This code iterates through the two-dimensional array board[][] backwards and zeroes out each element.
/* Iterate backward through board */
for (i = 7; i >= 0; i--) {
for (j = 7; j >= 0; j--) {
/* Zero out the square */
board[i][j] = 0;
}
}
@pauldwhitman
pauldwhitman / chessInCPart1-placeTwoBishops.c
Created March 10, 2013 11:07
Part of the "Chess in C" blog post series. Code to place two bishops on the board.
board[4][4] = BISHOP;
board[4][5] = BISHOP;
@pauldwhitman
pauldwhitman / chessInCPart1-iterateThroughAndZeroOutBoard.c
Created March 10, 2013 11:06
Part of the "Chess in C" blog post series. Iterates through each square of the two-dimensional board array and assigns a zero value to the element.
/* Zero out the board */
for (i = 0; i <= 7; i++) {
for (j = 0; j <= 7; j++) {
/* Zero out the square */
board[i][j] = 0;
}
}
@pauldwhitman
pauldwhitman / chessInCPart1-switchingOnBoardValue.c
Created March 10, 2013 11:04
Part of the "Chess in C" blog post series. Switching on the board value.
/* Get the board value */
boardValue = board[i][j];
/* And print the contents */
switch (boardValue) {
case EMPTY: printf(".");
break;
case KING: printf("K");
break;
case QUEEN: printf("Q");
break;
@pauldwhitman
pauldwhitman / chessInCPart1-nestedForLoop.c
Created March 10, 2013 11:02
Part of the "Chess in C" blog post series. The nested for loop.
for (i=0; i<=7; i++) {
/* And every column */
for (j=0; j<=7; j++) {
@pauldwhitman
pauldwhitman / chessInCPart1-drawBoard.c
Created March 10, 2013 11:00
Part of the "Chess in C" blog post series. The first iteration of the board printing code.
/* Print the board */
/* For every row */
for (i = 0;i <= 7; i++) {
/* And every column */
for (j = 0;j <= 7; j++){
/* Get the board value */
boardValue = board[i][j];
/* And print the contents */
switch (boardValue) {
case EMPTY: printf(".");
@pauldwhitman
pauldwhitman / chessInCPart1-macros.c
Created March 10, 2013 10:57
Part of the "Chess in C" blog post series. Introduction to macros.
#define EMPTY 0
#define KING 1
#define QUEEN 2
#define ROOK 3
#define KNIGHT 4
#define BISHOP 5
#define PAWN 6
#define BREADCRUMB 9
@pauldwhitman
pauldwhitman / chessInCPart1-createBoard.c
Created March 10, 2013 10:54
Part of the "Chess in C" blog post series. Creates a two-dimensional array called board which simulates a chess board.
int board[8][8];
@pauldwhitman
pauldwhitman / chessInCPart1-placePieces.c
Created March 10, 2013 10:51
Part of the "Chess in C" blog post series. Code to place one side worth of chess pieces on the board.
/* Set initial start positions */
board[0][0] = ROOK;
board[0][1] = KNIGHT;
board[0][2] = BISHOP;
board[0][3] = QUEEN;
board[0][4] = KING;
board[0][5] = BISHOP;
board[0][6] = KNIGHT;
board[0][7] = ROOK;
board[1][0] = PAWN;