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 고전 게임 모음
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.