No older revisions available
No older revisions available
Turbo C ¶
~cpp
#include <iostream.h>
#include <conio.h>
void board_display();
void put();
void check();
char board[19][19];
int key, x = 9, y = 9;
char turn = '@';
int winner = 0;
int main()
{
board_display();
gotoxy(x*3+1, y+1);
while(winner == 0)
{
gotoxy(x*3+1, y+1);
key = getch();
if (key == 0x20)
if (board[x][y] == '+')
{
put();
check();
if (winner != 0)
break;
}
if (key == 0x1b)
return 0;
if(key == 0x00)
{
key = getch();
if (key == 0x48)
if (y != 0)
y--;
if (key == 0x50)
if (y != 18)
y++;
if (key == 0x4b)
if (x != 0)
x--;
if (key == 0x4d)
if (x != 18)
x++;
continue;
}
}
gotoxy(1,20);
cout << "Winner is ";
if(winner == 1)
cout << "Black!n";
else if(winner == 2)
cout << "White!n";
getch();
return 0;
}
void board_display()
{
clrscr();
for (int i = 0 ; i < 19 ; i++)
{
for (int j = 0 ; j < 19 ; j++)
{
board[i][j] = '+';
cout << board[i][j] << " ";
}
cout << endl;
}
}
void put()
{
board[x][y] = turn;
cout << board[x][y];
}
void check()
{
int cx, cy, num;
num = 0;
cx = x, cy = y;
while (board[cx-1][cy] == turn)
cx--;
while (board[cx+1][cy] == turn)
{
cx++;
num++;
}
if (num < 4)
{
num = 0;
cx = x, cy = y;
}
while (board[cx][cy-1] == turn)
cy--;
while (board[cx][cy+1] == turn)
{
cy++;
num++;
}
if (num < 4)
{
num = 0;
cx=x, cy=y;
}
while (board[cx-1][cy-1] == turn)
{
cx--, cy--;
}
while (board[cx+1][cy+1] == turn)
{
cx++, cy++;
num++;
}
if (num < 4)
{
num = 0;
cx=x, cy=y;
}
while (board[cx+1][cy-1] == turn)
{
cx++;
cy--;
}
while (board[cx-1][cy+1] == turn)
{
cx--;
cy++;
num++;
}
if (turn == '@')
turn = 'O';
else
turn = '@';
if (num == 4)
{
if (turn == '@')
winner = 2;
if (turn == 'O')
winner = 1;
}
winner == 0;
}
C++ ¶
~cpp
#include <iostream>
using namespace std;
class Board{
private:
int m_Board[19][19];
int turn;
int x, y;
int countStone;
int check_X, check_Y;
public:
Board(){
turn = 0;
for (int i = 0 ; i < 19 ; i++)
for (int j = 0 ; j < 19 ; j++)
m_Board[i][j] = 0;
}
void showBoard(){
system("cls");
for (int i = 0 ; i < 19 ; i++){
for (int j = 0 ; j < 19 ; j++)
cout << m_Board[i][j] << " ";
cout << endl;
}
}
void inputPosition(){
cout << "Input the position (x, y) : ";
cin >> x >> y;
if (x < 0 || x >= 19 || y < 0 || y >= 19){
cout << "잘못 입력하셨습니다.\n";
system("pause");
}
else if (m_Board[x][y] != 0){
cout << "이미 놓은 자리입니다.\n";
system("pause");
}
else {
m_Board[x][y] = (turn % 2) + 1;
turn++;
}
}
bool checkOmok(){
int checkDirection[4][2] = {{1,1},{1,0},{0,1},{-1,1}};
for (int i = 0 ; i < 4 ; i++){
countStone = 0;
for (int j = 0 ; j < 2 ; j++){
checkDirection[i][0] *= -1, checkDirection[i][1] *= -1;
check_X = x + checkDirection[i][0];
check_Y = y + checkDirection[i][1];
while (m_Board[check_X][check_Y] == (turn % 2)){
countStone++;
check_X += checkDirection[i][0];
check_Y += checkDirection[i][1];
}
}
if (countStone == 4)
return true;
}
return false;
}
void showEndMsg(){
cout << turn % 2 << " 승리.\n";
}
};
int main(){
Board bd;
while (!bd.checkOmok()){
bd.showBoard();
bd.inputPosition();
}
bd.showBoard();
bd.showEndMsg();
return 0;
}
----
보드 객체가 너무 만능인거 아냐? ㅋㅋ -
창섭
----
Omok