728x90
심심해서 평소에 만들고 싶었던 바둑판을 만들어 보려고 한다. 대국을 할 수 있는 바둑판이다.
1일차에서는 간단한 인터페이스와 흑,백이 둔 곳을 맵을 출력해서 보여지게 하는 작업과 2일차에 있을 돌을 따먹는 과정을 bfs로 어느정도 구현을 했다.
2일차에서는 돌을 따먹는 것을 구현한 후 인터페이스를 개선할 것이다.
계가 시스템과 패싸움 같은 부분을 구현 할 생각에 막막하지만 할 수 있을 거라 믿고 있다...
1일차 코드
#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
/* map 설명
검은돌은 9, 흰색돌은 7, 맨바닥은 0
*/
string map[20][20];
int b_catch = 0,w_catch = 0,cnt = 0;
bool b = false,w = false;
bool visit[20][20];
bool ck(int y,int x,string a){
if(y>19||x>19|x<1||y<1){return false;}
else if(map[y][x] == a){return false;}
else{return true;}
}
void set(void){
for(int i = 0;i<20;i++){
for(int j = 0;j<20;j++){
map[i][j] = "□";
}
}
}
void print_map(void){
for(int i = 1;i<=19;i++){
for(int j = 1;j<=19;j++){
cout << map[i][j];
}
cout << "\n";
}
}
bool bfs(int y, int x,string target){ //false = 잡지 못함, true = target을 잡음
queue<int> dx;
queue<int> dy;
dx.push(x);
dy.push(y);
while(!dy.empty()){
y = dy.front(); dy.pop();
x = dx.front(); dx.pop();
if(map[y][x] == "□"){return false;}
else if(map[y][x] == target){cnt++;} //잡은 돌 새기
if(visit[y][x]){continue;}
else{visit[y][x] = true;}
if(ck(y-1,x,target)){dx.push(x); dy.push(y-1);}
if(ck(y+1,x,target)){dx.push(x); dy.push(y+1);}
if(ck(y,x-1,target)){dx.push(x-1); dy.push(y);}
if(ck(y,x+1,target)){dx.push(x|1); dy.push(y);}
}
return true;
}
/*
void around(void){
}
*/
bool black(void){
int y,x;
pair<int,int> loc = {-1,-1};
bool check = false;
cout << "흑 둘 곳(-1 -1 입력시 기권) :\n";
cin >> y >> x;
if(y == -1 && x == -1){return true;}
map[y][x] = "○";
//around(y,x);
return false;
}
bool white(void){
int y,x;
cout << "백 둘 곳(-1 -1 입력시 기권) :\n";
cin >> y >> x;
if(y == -1 && x == -1){return true;}
map[y][x] = "●";
return false;
}
int main(void){
cout << "대국시작\n";
set();
print_map();
while(1){
b = black(); if(b){break;}
print_map(); cout << "\n";
w = white(); if(w){break;}
print_map(); cout << "\n";
}
if(b){cout << "백 승\n";}
else{cout << "흑 승\n";}
}
728x90
'59 Coding Group' 카테고리의 다른 글
[백준/C++][점화식(13699번)] (0) | 2020.12.27 |
---|---|
[12월 3주차 백준][피보나치 수 2(2748번)] (0) | 2020.12.20 |
[12월 3주차 백준][피보나치 수(2747번)] (0) | 2020.12.20 |
[12월 3주차 백준][2차원 배열의 합(2167번)] (0) | 2020.12.20 |
[12월 3주차 백준][나는 요리사다(2953번)] (0) | 2020.12.20 |