C 언어 는 간단 한 콘 솔 삼자 기 게임 을 실현 한다.

7532 단어 C 언어삼자 장기
C 언어 로 간단 한 콘 솔 삼자 기 게임 을 실현 하 다
우선,게임 의 기본 절 차 를 확인한다.
1.바둑판 을 만 들 고 초기 화 합 니 다.(바둑판 을 2 차원 배열 로 본다)
2.바둑판 을 인쇄 하여 표시 합 니 다.
3.유저 가 떨 어 집 니 다(유 저 는 행렬 좌 표를 입력 하 는 방식 으로 떨 어 집 니 다).
4.승부 관 계 를 판정한다.(플레이어 가 이기 면 게임 에서 퇴장 합 니 다.)
5.컴퓨터 낙 자(랜 덤 위치 낙 자).
6.승 부 를 판정한다(컴퓨터 가 이기 면 게임 을 종료 한다.그렇지 않 으 면 2 단계 로 돌아 가 계속 실행 합 니 다.)
첫 번 째 단 계 는 구조 menu()함 수 를 통 해 간단 한 상호작용 메뉴 와 게이머 의 상호작용 을 구축 하여 게임 을 시작 할 지 여 부 를 판단 합 니 다.

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int menu() {
 printf("====================
"); printf("1.
"); printf("0.
"); printf("====================
"); printf(" : "); int choice = 0; scanf("%d", &choice); return choice; } int main() { while (1) { int choice = menu(); if (choice == 1) { //game();// game 。 } else if (choice == 0) { printf("goodbye!
"); break; } } system("pause"); return 0; }
두 번 째 단 계 는 첫 번 째 단계 에서 호출 된 game()함 수 를 구성 합 니 다.game()함 수 는 핵심 기능 함수 로 그 주요 임 무 는 기본 절 차 를 완성 하 는 것 입 니 다.
1.init()함 수 를 초기 화 합 니 다.3*3 의 2 차원 배열 을 바둑판 으로 초기 화하 고 배열 요 소 를 모두 0 으로 초기 화 합 니 다.

void init(char chessBoard[MAX_ROW][MAX_COL]) {
 //            =    “  ”。
 for (int row = 0; row < MAX_ROW; row++) {
 for (int col = 0; col < MAX_COL; col++) {
 chessBoard[row][col] = ' ';
 }
 }
}
2.바둑판 인쇄 printChessBoard()함 수 를 구축 합 니 다.for 순환 으로 3*3 의 바둑판 을 인쇄 합 니 다.

void printChessBoard(char chessBoard[MAX_ROW][MAX_COL]) {
 //       。
 printf("+---+---+---+
"); for (int row = 0; row < MAX_ROW; row++) { printf("| %c | %c | %c |
", chessBoard[row][0], chessBoard[row][1], chessBoard[row][2]); printf("+---+---+---+
"); } }
3.플레이어 가 떨 어 진 플레이어 Move()함 수 를 구축 하고 유 저 는 행렬 좌 표를 입력 하 는 방식 으로 떨 어 집 니 다.이 과정 에서 1.게이머 가 입력 한 행렬 좌표 가 바둑판 의 합 리 적 인 위치 에 있 는 지 판단 해 야 한다.2.유저 가 입력 한 행렬 좌표 위치 에 이미 바둑 알 이 있 는 지 여부.

void playerMove(char chessBoard[MAX_ROW][MAX_COL]) {
 //      .                  。
 while (1) {
 printf("        (row col): ");
 int row = 0;
 int col = 0;
 scanf("%d %d", &row, &col);
 //              (          )。
 if (row < 0 || row >= MAX_ROW
 || col < 0 || col >= MAX_COL) {
 //        ,           。
 printf("          [0, 2]  
"); continue; } // 。 if (chessBoard[row][col] != ' ') { printf(" !
"); continue; } // 。 “X” 。 chessBoard[row][col] = 'x'; break; } }
4.컴퓨터 슬롯 을 제어 하기 위해 컴퓨터 Move()함 수 를 구축 합 니 다.컴퓨터 를 통 해 일련의 무 작위 수 를 만들어 서 바둑 알 이 바둑판 좌표 범위 안에 떨 어 지 는 것 을 제어 한다.

void computerMove(char chessBoard[MAX_ROW][MAX_COL]) {
 //     ,             。
 while (1) {
 int row = rand() % MAX_ROW;
 int col = rand() % MAX_COL;
 if (chessBoard[row][col] != ' ') {
 //                   。
 continue;
 }
 chessBoard[row][col] = 'o';
 break;
 }
}
이 함수 모듈 에서 컴퓨터 의 낙자 랜 덤 위치의 생 성 은 rand()함수 로 제어 된다.주의해 야 할 것 은 랜 덤 피 드 를 설정 해서'위조 랜 덤'의 출현 을 피해 야 한 다 는 것 이다.

srand((unsigned int)time(0));//            。
5.isWin()함 수 를 구축 하여 승리 여 부 를 판단 합 니 다.여기 서 이 함수 의 반환 결 과 를 약속 하 는 의 미 는'x'는 게이머 가 이 겼 음 을 나타 낸다.''o'는 컴퓨터 가 이 겼 다 는 뜻 이다.'승 부 를 가리 지 못 했다 는 뜻 이다.'q.화 기 를 나타 낸다.

char isWin(char chessBoard[MAX_ROW][MAX_COL]) {
 //       。
 for (int row = 0; row < MAX_ROW; row++) {
 if (chessBoard[row][0] != ' '
 && chessBoard[row][0] == chessBoard[row][1]
 && chessBoard[row][0] == chessBoard[row][2]) {
 return chessBoard[row][0];
 }
 }
 //       。
 for (int col = 0; col < MAX_COL; col++) {
 if (chessBoard[0][col] != ' '
 && chessBoard[0][col] == chessBoard[1][col]
 && chessBoard[0][col] == chessBoard[2][col]) {
 return chessBoard[0][col];
 }
 }
 //        。
 if (chessBoard[0][0] != ' '
 && chessBoard[0][0] == chessBoard[1][1]
 && chessBoard[0][0] == chessBoard[2][2]) {
 return chessBoard[0][0];
 }
 if (chessBoard[2][0] != ' '
 && chessBoard[2][0] == chessBoard[1][1]
 && chessBoard[2][0] == chessBoard[0][2]) {
 return chessBoard[2][0];
 }
 //       。           。
 //   isFull  。
 if (isFull(chessBoard)) {
 return 'q';
 }
 return ' ';
}
6.구조 isFull()함 수 는 바둑판 에 남 은 공간 이 있 는 지 판단 하여 바둑 인지 아 닌 지 를 판단 하 는 데 사용 된다.

int isFull(char chessBoard[MAX_ROW][MAX_COL]) {
 //  ”  “.      ,       。
 for (int row = 0; row < MAX_ROW; row++) {
 for (int col = 0; col < MAX_COL; col++) {
 if (chessBoard[row][col] == ' ') {
 //     “  ”      。
 return 0;
 }
 }
 }
 return 1;
}
마지막 으로 조합 에 따라 위의 몇 가지 기능 함 수 를 호출 하면 우 리 는 최종 game()함수 의 전체적인 구 조 를 얻 을 수 있다.

void game() {
 // 1.         
 char chessBoard[MAX_ROW][MAX_COL] = { 0 };
 init(chessBoard);//       
 char winner = ' ';
 while (1) {
 // 2.     
 printChessBoard(chessBoard);
 // 3.     (              )
 playerMove(chessBoard);
 // 4.       
 winner = isWin(chessBoard);
 if (winner != ' ') {
 break;
 }
 // 5.     (      ) 
 computerMove(chessBoard);
 // 6.       
 winner = isWin(chessBoard);
 if (winner != ' ') {
 break;
 }
 }
 printChessBoard(chessBoard);
 if (winner == 'x') {
 printf("   ,    !
"); } else if (winner == 'o') { printf(" , ! !
"); } else { printf(" , !
"); } }
캡 처 실행:
이 겼 다!

실패했어!

여기에 바둑 알 이 있다!

더 많은 재 미 있 는 클래식 게임 을 통 해 주 제 를 실현 하고 여러분 에 게 공유 합 니 다.
C++클래식 게임 모음
python 클래식 게임 모음
python 러시아 블록 게임 집합
JavaScript 클래식 게임 을 계속 합 니 다.
자바 클래식 게임 모음
javascript 고전 게임 모음
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기