cooper-union-ece-160/non-class/sos/main.c

55 lines
1.8 KiB
C

#include <stdio.h>
int so(void len) {
return sizeof(len) / sizeof(len[0]);
}
void printBoard (char[][] arr, int p1score, int p2score) {
for (int i = 0; i < so(arr); i++) {
for (int j = 0; j < so(arr[0]); j++) {
printf("%c ", arr[i][j]);
}
printf("\n");
}
}
int checkP(char[][] arr, int x, int y, char c) {
if (x >= 0 && x < so(arr) && y >= 0 && y < so(arr[0]))
return arr[x][y] == c;
return 0;
}
int points(char[][] arr, int x, int y) {
if (arr[x][y] == 's')
return
checkP(arr, x, y + 1, 'o') && checkP(arr, x, y + 2, 's') + // top
checkP(arr, x + 1, y + 1, 'o') && checkP(arr, x + 2, y + 2, 's') + // top right
checkP(arr, x + 1, y, 'o') && checkP(arr, x + 2, y, 's') + // right
checkP(arr, x + 1, y - 1, 'o') && checkP(arr, x + 2, y - 2, 's') + // bottom right
checkP(arr, x, y - 1, 'o') && checkP(arr, x, y - 2, 's') + // bottom
checkP(arr, x - 1, y + 1, 'o') && checkP(arr, x - 2, y + 2, 's') + // bottom left
checkP(arr, x - 1, y, 'o') && checkP(arr, x - 2, y, 's') + // left
checkP(arr, x - 1, y - 1, 'o') && checkP(arr, x - 2, y - 2, 's');
return
checkP(arr, x - 1, y, 's') && checkP(arr, x + 1, y, 's') +
checkP(arr, x - 1, y - 1, 's') && checkP(arr, x + 1, y + 1) +
checkP(arr, x + 1, y - 1, 's') && checkP(arr, x - 1, y + 1, 's') +
checkP(arr, x, y + 1, 's') && checkP(arr, x, y - 1, 's');
}
void initBoard (char[][] arr, int ncol, int nrow) {
arr = calloc(ncol, sizeof(char) * nrow);
for (int i = 0; i < ncol; i++) {
arr[i] = calloc(nrow, sizeof(char));
for (int j = 0; j < so(arr[0]); j++) {
arr[i][j] = '-';
}
}
}
int main () {
char[][] arr;
initBoard(arr, 5, 5);
}