include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define BOARD_WIDTH 8
#define BOARD_HEIGHT 8
int cursorX=0, cursorY=0;
int turn;
int cells[BOARD_HEIGHT][BOARD_WIDTH] = {};
enum {
COLOR_NONE=-1,
COLOR_BLACK=0,
COLOR_WHITE=1,
COLOR_MAX
};
char colorNames[][5 + 1]{
"Black",
"White"
};
bool checkCanPut(int _color, int _x, int _y) {
return false;
}
void drawBoard() {
system("cls");
for (int y = 0; y < BOARD_HEIGHT; y++) {
for (int x = 0; x < BOARD_WIDTH; x++)
if ((x == cursorX) && (y == cursorY))
printf("◎");
else {
switch (cells[y][x]) {
case COLOR_NONE:printf("・"); break;
case COLOR_BLACK:printf("●"); break;
case COLOR_WHITE:printf("〇"); break;
}
}
printf("\n");
}
}
int main() {
for (int y = 0; y < BOARD_HEIGHT; y++)
for (int x = 0; x < BOARD_WIDTH; x++)
cells[y][x] = COLOR_NONE;
cells[3][3] = cells[4][4] = COLOR_WHITE;
cells[4][3] = cells[3][4] = COLOR_BLACK;
drawBoard();
bool cantPut = false;
while (1) {
switch (_getch()) {
case 'w':cursorY--; break;
case 's':cursorY++; break;
case 'a':cursorX--; break;
case 'd':cursorX++; break;
default:
if (!checkCanPut(turn, cursorX, cursorY)) {
cantPut = true;
break;
}
cells[cursorY][cursorX] = turn;
turn ^= 1;
break;
}
drawBoard();
if (cantPut)
printf("Can't put!\n");
else
printf("%s turn.\n", colorNames[turn]);
}
}
!は真なら偽、偽なら真ということはわかっているんですが、上のソースコードではどのような条件で cantPut = true; の処理になるのでしょうか?
bool cantPut = false;と関係はあるのでしょうか?
もう一つ
turn ^= 1; なんですが、Youtubeでは0だったら1,1だったら0に切り替えると仰っているのですが、
定義でint turn;//turn=0//で turn ^= 1; ^=演算子で1と0を入れ替える。
つまり^=演算子は数字の入れ替えができるという考えでいいのでしょうか?
長文ですみません<(_ _)>