--- 90 Lines Version without AI ----
#include <iostream>
#include <windows.h>
using namespace std;
char board[19*2][19] ={0},who[3][3]={"","흑","백"},stone[3][3]={"","○","●"};
int turn=1,memory[1000]=0,*pMemory=&memory[0],gibo=0,*pGibo=&gibo;
HANDLE hin=GetStdHandle(STD_INPUT_HANDLE), hout=GetStdHandle(STD_OUTPUT_HANDLE);
void Insert(int x, int y);
void Pop();
void Map();
void Gotoxy(int x, int y);
void Click();
void Check(int x, int y);
void main(){
Map();
while(1)
Click();
}
void Insert(int x, int y){
pMemory[*pGibo]=x;
pMemory[*pGibo+1]=y;
*pGibo=*pGibo+2;
}
void Pop(){
if(*pGibo>0){
Gotoxy(pMemory[*pGibo-2],pMemory[*pGibo-1]);
puts("╋");
board[pMemory[*pGibo-2]][pMemory[*pGibo-1]]=0;
*pGibo=*pGibo-2;
}
}
void Map(){
char view[19][19*2+1]={
"┏┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┓",
"┣╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋┫",
"┗┻┻┻┻┻┻┻┻┻┻┻┻┻┻┻┻┻┛"};
cout << view[0] <<endl;
for(int i=0;i<17;i++)
cout << view[1] << endl;
cout << view[2] << endl;
}
void Gotoxy(int x, int y){
COORD XY = x,y;
SetConsoleCursorPosition(hout, XY);
}
void Click(){
DWORD dw;
INPUT_RECORD rrec;
SetConsoleMode(hin,ENABLE_MOUSE_INPUT);
ReadConsoleInput(hin,&rrec,1,&dw);
switch(rrec.EventType)
case MOUSE_EVENT:
if(rrec.Event.MouseEvent.dwButtonState == FROM_LEFT_2ND_BUTTON_PRESSED)
Pop();
if(rrec.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED)
if(rrec.Event.MouseEvent.dwEventFlags == DOUBLE_CLICK){
int x = rrec.Event.MouseEvent.dwMousePosition.X;
if(x%2==1)
x=x-1;
int y = rrec.Event.MouseEvent.dwMousePosition.Y;
if(board[x][y]==0){
Gotoxy(x,y);
puts(stone[turn]);
board[x][y]=turn;
Insert(x,y);
Check(x,y);
turn++;
if(turn==3)
turn=1;
}
}
}
void Check(int x, int y){
int rawx=x,rawy=y,count=0;
while(board[x-2][rawx]==turn)x=x-2;
while(board[x+2][rawy]==turn){y=y+2;count++};
while(board[rawx][y]==turn)y=y-1;
while(board[rawx][y+1]==turn){y=y+1;count++};
if(count==5){
Gotoxy(4,20);
cout << who[turn] << "이 승리" << endl;
exit(0);
}
if(count==3||count==4){
Gotoxy(4,20);
cout << rawx <<","<<rawy<<"좌표가 위험"<<endl;
}