C 언어 실현 간단 한<삼자 기>사례
모두 가 알 고 있 는 바 와 같이 삼자 기 바둑판 은 사실 하나의 9 개의 격자 이기 때문에 우 리 는 먼저 2 차원 배열 을 정의 하여 바둑 알 을 보관 하 는 것 을 실현 해 야 한다.각 격자 마다 우 리 는 세 개의 작은 칸,예 를 들 어'X'를 차지 하고 구분자 가 있어 야 바둑 알 을 나 눌 수 있다 고 규정 한다.
바둑판 초기 화
바둑판 이 시 작 될 때 바둑판 은 반드시 비어 있어 야 하기 때문에 우 리 는 먼저 배열 을 초기 화하 고 모든 요 소 를''로 설정 한 다음 에 바둑판 의 기능 을 실현 해 야 한다.바둑판 의 초기 화 코드 는 다음 과 같다.
void InitBoard(char board[ROW][COL], int row, int col)
{
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
board[i][j] = ' ';
}
}
}
바둑판바둑판 은 2 차원 배열 이 고 모든 요 소 는 구분자 로 구분 해 야 하 며 횡행 은'|',세로 열 은'―'를 사용한다.한 줄 에 세 개의 원소 가 있 기 때문에 두 개의'|'을 사용 하고 세 개의 열 이 있 기 때문에 두 개의'-'를 사용한다.그리고'-'가 차지 하 는 줄 에 도'|'을 넣 어야 한다.바둑판 의 실현 코드 는 다음 과 같다.
void ShowBoard(char board[ROW][COL], int row, int col)
{
printf("=====================
");
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
//
printf(" %c ", board[i][j]);
//
if (j < col - 1)
{
printf("|");
}
}
//
printf("
");
// 2
if (i < row - 1)
{
for (int j = 0; j < col; j++)
{
printf("---");
//
if (j < col - 1)
{
printf("|");
}
}
printf("
");
}
}
printf("=====================
");
}
이 두 단 계 를 완성 한 후 바둑판 의 실현 은 완성 되 었 다.정착 의 실현
바둑판 이 실 현 된 후에 그 다음은 낙자 이다.우 리 는 두 가지 함 수 를 써 야 한다.하 나 는 게이머 의 낙자 이 고 하 나 는 컴퓨터 의 낙자 이다.
플레이어
게이머 의 타 자 는 배열 요소 의 대 가 를 통 해 이 루어 집 니 다.대 가 를 통 해 우 리 는'X'로 바 꿀 수 있 습 니 다.(나 는 게이머 의 타 자 를'X'로 규정 합 니 다)그리고 게이머 의 타 자 는 1~3 만 채 울 수 있 는 규정 이 있 습 니 다.규정 을 초과 하면 우 리 는 게이머 의 타 자 를 규범화 시 키 지 않 고 게이머 의 타 자 는 배열 이'가 아 닌 곳 에 떨 어 질 수 없습니다.유 저 는 배열 이'가 아 닌 곳 에 떨 어 질 수 없습니다.우 리 는 유저 에 게 정확 한 타 자 를 제시 해 야 한다.이상,우 리 는 while 순환 을 써 서 게이머 들 이 정확하게 떨 어 질 수 있 도록 해 야 합 니 다.그리고 if 판단 문 구 를 순환 해서 써 서 게이머 들 이 정확 한 떨 어 질 지 여 부 를 판단 해 야 합 니 다.그리고 게이머 들 이 정확 한 떨 어 질 때 이 순환 은 계속 존재 합 니 다.코드 는 다음 과 같 습 니 다.
다음은 내 연 코드 필름 을 보 여 드 리 겠 습 니 다.
void playermove(char board[ROW][COL], int row, int col)
{
while (1)
{
printf(" :
");
int x = 0;
int y = 0;
scanf_s("%d%d", &x,&y);
if (x >= 1 && x <= 3 && y >= 1 && y <= 3)
{
//x o
if (board[x - 1][y - 1] == ' ')
{
board[x - 1][y - 1] = 'x';
break;
}
else
{
printf("
");
}
}
else
{
printf("
");
}
}
}
컴퓨터 소켓컴퓨터 타 자 는 게이머 와 비슷 하지만 컴퓨터 타 자 는 제시 문 이 적 고 함수-rand 함 수 를 하나 더 사 용 했 습 니 다.그리고 게임 의 재 미 를 위해 srand(unsigned)time(NULL)(이것 은 제 가 main 함수 에 넣 겠 습 니 다)를 전 달 했 습 니 다.랜 덤 으로 피 드 를 세 어 컴퓨터 가 떨 어 지 는 곳 마다 다 르 게 한다.이 를 사용 하지 않 으 면 컴퓨터 가 떨 어 지 는 곳 과 순서 가 같다.
void ComputerMove(char board[ROW][COL], int row, int col)
{
while (1)
{
int x = rand()%row;//[0,1,2]
int y = rand() % col;
if (board[x][y] == ' ')
{
board[x][y] = 'O';
break; //break while
}
}
}
승 부 를 판단 하 다승 부 를 판단 하려 면 우 리 는 두 걸음 으로 나 누 어야 한다.한 걸음 은 무승부 이 고 한 걸음 은 잠 을 자고 이 기 는 것 을 판단 하 는 것 이다.
무승부 로 판 가름 하 다
무승부 의 판단 방법 은 바둑판 이 아직 남아 있 는 지 아 닌 지 를 판단 하 는 것 이다.바둑 을 두 는 과정 에서 우 리 는 바둑판 에''가 없 으 면 누가 이 길 것 인 지 를 판단 하지 않 았 다.이때 우 리 는 무승부 로 판단 했다.
static int IsFull(char board[ROW][COL], int row, int col)
{
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
if (board[i][j] == ' ')
{
return -1;//
}
}
}
return 1;//
}
누가 이 길지 판단 하 다누가 우 리 를 이 길지 판단 하 는 데 는 세 가지 방법 이 있 고,각각의 방법 은 두 가지 다른 상황 을 써 야 한다.1.줄 이 같다.모든 줄 은'X'또는'O'이 고 우 리 는'X'가 게이머 에 게 이 기 는 것 을 규정 한다.'O'컴퓨터 를 위해 이기 기;2.열 이 같다.판단 상황 은 첫 번 째 와 비슷 하 다.3.경사 가 같 고 경사 가 같다 고 판단 할 때 아래 표 의 변화 에 주의해 야 한다.
char IsWin(char board[ROW][COL], int row, int col)
{
//
for (int i = 0; i < row; i++)
{
if (board[i][0] == board[i][1] && board[i][1] == board[i][2]
&& board[i][0] != ' ')
{
return board[i][0];
}
}
//
for (int j = 0; j < col; j++)
{
if (board[0][j] == board[1][j] && board[1][j] == board[2][j]
&& board[0][j] != ' ')
{
return board[0][j];
}
}
if (board[0][0] == board[1][1] && board[1][1] == board[2][2]
&& board[0][0] != ' ')
{
return board[0][0];
}
if (board[0][2] == board[1][1] && board[1][1] == board[2][0]
&& board[0][2] != ' ')
{
return board[0][2];
}
//
if (IsFull(board, row, col) == 1)
{
return 'Q';//
}
return ' ';//
}
게임 의 실현게임 메뉴
프로그램 이 시작 되 었 습 니 다.우 리 는 게이머 들 이 게임 에 들 어 갈 지 여 부 를 선택 할 수 있 도록 메뉴 를 만들어 야 합 니 다.
다음은 내 연 코드 필름 을 보 여 드 리 겠 습 니 다.
void menu()
{
printf("**********************
");
printf("******0.exit**********
");
printf("******1.paly**********
");
printf("**********************
");
}
게임 에 들어가다게이머 들 이 먼저 떨 어 지고 매번 떨 어 진 후에 바둑판 을 다시 인쇄 해 야 합 니 다.그리고 매번 떨 어 진 후에 우 리 는 승부 와 무승부 여 부 를 판단 합 니 다.이렇게 3 자 바둑 게임 을 썼 습 니 다!!
다음은 내 연 코드 필름 을 보 여 드 리 겠 습 니 다.
void game()
{
printf("
");
char board[ROW][COL] = { 0 };
InitBoard(board, ROW, COL);
ShowBoard(board, ROW, COL);
char ret;
while (1)
{
PlayerMove(board, ROW, COL);
//
ret = IsWin(board, ROW, COL);
if (ret != ' ')
{
break;
}
ShowBoard(board, ROW, COL);
ComputerMove(board, ROW, COL);
ret = IsWin(board, ROW, COL);
if (ret != ' ')
{
break;
}
ShowBoard(board, ROW, COL);
}
if (ret == 'X')
{
printf("
");
}
else if (ret == 'O')
{
printf("
");
}
else if (ret == 'Q')
{
printf("
");
}
}
주 함수
int main()
{
//
srand((unsigned)time(NULL));
int input;
do
{
menu();
printf(" :
");
scanf_s("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("
");
break;
default:
break;
}
} while (input != 0);
return 0;
}
여기 서 C 언어 가 간단 한 을 실현 하 는 사례 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 C 언어 인 에 관 한 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.