Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Omok/은지

From ZeroWiki
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

const up = 0x48;
const down = 0x50;
const right = 0x4d;
const left = 0x4b;
const esc = 0x1b;
const space = 0x20;

void checkomok(int, int, char);
void checkcount(int check[], int , char);

char board[19][19];

int main()
{
 int i,j;
 clrscr();

for(i=0; i<19; i++)
{
	for(j=0; j<19; j++)
	{
		board[i][j] = '+';
		printf("%c ", board[i][j]);
	 }
	 printf("\n");
 }

 int key;
 int user = 1;
 int x = 1; int y = 1;
 gotoxy(x,y);

 do{
 key = getch();
 if (key == NULL)
 {
	key = getch();
	if (key == up)
	{      if(y > 1)
			gotoxy(x,--y);
	}
	else if (key == down)
	{       if (y <= 18)
			gotoxy(x,++y);
	}
	else if (key == right)
	{       if (x <= 36 )
			gotoxy(++++x, y);
	}
	else if (key == left)
	{       if (x > 1)
			gotoxy(----x, y);
	}
       else
		printf ("error");
  }

 if (key == space)
  {	if (user == 1 && board[x/2][y-1] == '+')
	 {
		printf("@");
		board[x/2][y-1] = '@';
		checkomok(x/2, y-1,'@');
		user = 2;
	 }
	else if (user == 2 && board[x/2][y-1] == '+')
	{
		printf("*");
		board[x/2][y-1] = '*';
		checkomok(x/2,y-1, '*');
		user = 1;
	}
  }
}while(key != esc);

return 0;
}

void checkomok(int row, int col, char mark)
{
 int count;
 int check[4] = {0, };
	if (board[row-1][col] == mark || board[row+1][col] == mark)
	{
		count = 1;
		if (board[row-1][col] == mark)
	       {
			while(board[row-1][col] == mark)
			{
			    row--;   count++;
			}
		}
		if (board[row+1][col] == mark)
		{
			 row = row + count-1;
			while(board[row+1][col] == mark)
			{
			     row++;  count++;
			}
		}
		check[0] = count;

	}

       if (board[row][col-1] == mark || board[row][col+1] == mark)
       {
		count = 1;
		if (board[row][col-1] == mark)
	       {
			while(board[row][col-1] == mark)
			{
			    col--;   count++;
			}
		}
		if (board[row][col+1] == mark)
		{
			col = col + count-1;
			while(board[row][col+1] == mark)
			{
			     col++;  count++;
			}
		  }
		check[1] = count;
	}

	if (board[row+1][col-1] == mark || board[row-1][col+1] == mark)
       {
		count = 1;
		if (board[row+1][col-1] == mark)
	       {
			while(board[row+1][col-1] == mark)
			{
			    row++; col--;  count++;
			}
		}

		if (board[row-1][col+1] == mark)
		{
			col = col + count-1;
			row = row - count+1;
			while(board[row-1][col+1] == mark)
			{
			    row--; col++;  count++;
			}
		  }
		check[2] = count;
	}

	if (board[row+1][col+1] == mark || board[row-1][col-1] == mark)
       {
		count = 1;
		if (board[row+1][col+1] == mark)
	       {
			while(board[row+1][col+1] == mark)
			{
			   row++; col++; count++;
			}
		}
		if (board[row-1][col-1] == mark)
		{       row = row - count+1;
			col = col - count+1;
			while(board[row-1][col-1] == mark)
			{
			     row--; col--;  count++;
			}
		  }
		check[3] = count;
	}

	checkcount(check, 4, mark);


  }

  void checkcount(int check[], int size, char mark)
  {
     for(int i=0; i<size; i++)
     {
	if ( check[i] == 5)
	 {
	      gotoxy(1,22);
	      printf("%c ", mark);
	      printf("is win!!\n");
	      getch();
	      exit(1);
	 }
     }
  }
----
["Omok"]