C 언어 는 간단 한 삼자 기 종목 을 실현 한다.
삼자 기 는 흑백 바둑 의 일종 이다.삼자 기 는 민간 전통 놀이 로 구 궁 기,동그라미 포크,용 한 마리,정자 기 등 이 라 고도 부른다.정사각형 대각선 을 연결 하여 양쪽 에 세 개의 바둑 알 을 차례대로 놓 고 자신의 세 개의 바둑 알 을 한 줄 로 만 들 면 상대방 이 지 는 것 이다.하지만 비 기 는 경우 가 많다.
다 중 파일 형식
게임 을 실현 하기 위해 서 는 먼저 test.c game.c game.h 세 개의 파일 을 만들어 야 합 니 다.
test.c 는 주로 게임 의 테스트 를 진행한다.
game.c 는 주로 게임 내부 의 일부 함수 의 구체 적 인 실현 을 진행한다.
game.h 는 주로 성명,매크로 정의 입 니 다.
게임 논리
1.게임 의 간단 한 메뉴 를 인쇄 합 니 다.
2.바둑판 초기 화.
3.바둑판 인쇄.
4.플레이어 가 바둑(키보드 입력 좌표)을 두 고 바둑판 을 인쇄 하여 승 패 를 판단 한다.
5.컴퓨터 바둑(랜 덤 좌표)은 바둑판 을 인쇄 하여 승 부 를 판단 한다.
게임 구현
1.인쇄 메뉴
화면 에 간단 한 메뉴 를 인쇄 하여 게이머 들 의 선택 을 알려 줍 니 다.
void menu()
{
printf("**************************
");
printf("******** 1.play ********
");
printf("******** 0.exit ********
");
printf("**************************
");
}
2.바둑판 초기 화
3x3 의 배열 을 빈 칸 으로 초기 화 합 니 다.
void InitBoard(char board[ROW][COL], int row, int col)
{
int i = 0;
for (i = 0; i < row; i++)
{
int j = 0;
for (j = 0; j < col; j++)
{
board[i][j] = ' ';
}
}
}
3.바둑판 인쇄화면 에 현재 바둑판 을 인쇄 하여 게이머 들 이 다음 단계 로 가 려 는 단 계 를 선택 하 게 합 니 다.
void DisplayBoard(char board[ROW][COL], int row, int col)
{
int i = 0;
for (i = 0; i < row; i++)
{
int j = 0;
for (j = 0; j < col; j++)
{
printf(" %c ", board[i][j]);
if (j < col - 1)
printf("|");
}
printf("
");
if (i < row - 1)
{
for (j = 0; j < col; j++)
{
printf("---");
if (j < col - 1)
printf("|");
}
}
printf("
");
}
}
4.플레이어 바둑유 저 는 키보드 에 좌 표를 입력 합 니 다.입력 한 합 법 적 인 범 위 는 1<=x,y<=3 입 니 다.유저 의 입력 에 따라 대응 하 는 배열 의 값 을 별표'*'로 부여 합 니 다.
void PlayerMove(char board[ROW][COL], int row, int col)
{
printf(" :>
");
int x = 0;
int y = 0;
while (1)
{
scanf("%d%d", &x, &y);
if (x >= 1 && x <= 3 && y >= 1 && y <= 3)
{
if (board[x - 1][y - 1] == ' ')
{
board[x - 1][y - 1] = '*';
break;
}
else
{
printf(" ,
");
}
}
else
{
printf(" ,
");
}
}
}
5.컴퓨터 바둑임 의 수 를 생 성하 고 대응 하 는 배열 의 할당 값 은 우물 번호'\#'입 니 다.
void ComputerMove(char board[ROW][COL], int row, int col)
{
int x = 0;
int y = 0;
printf(" :>
");
x = rand() % row;
y = rand() % col;
while (1)
{
x = rand() % row;
y = rand() % col;
if (board[x][y] == ' ')
{
board[x][y] = '#';
break;
}
}
}
6.승 부 를 판단 한다1.유저 가 이기 면 별표 로 돌아 갑 니 다
2.컴퓨터 가 이 겨 서 우물 번호 로 돌아간다
3.무승부 복귀 P
4.바둑판 을 가득 채 우 고 게임 을 계속 하 다 C 로 돌아 가기
char Iswin(char board[ROW][COL], int row, int col)
{
int i = 0;
//
for (i = 0; i < row; i++)
{
if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][1] != ' ')
{
return board[i][1];
}
}
//
for (i = 0; i < col; i++)
{
if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] != ' ')
{
return board[1][i];
}
}
//
if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ')
{
return board[1][1];
}
if (board[2][0] == board[1][1] && board[1][1] == board[0][2] && board[1][1] != ' ')
{
return board[1][1];
}
if (IsFull(board, ROW, COL))
{
return 'P';
}
return 'C';
}
7.바둑판 이 꽉 찼 는 지 판단
int IsFull(char board[ROW][COL], int row, int col)
{
int i = 0;
int j = 0;
for (i = 0; i < row; i++)
{
for (j = 0; j < col; j++)
{
if (board[i][j] == ' ')
return 0;
}
}
return 1;
}
구체 코드test.c
#include "game.h"
void menu()
{
printf("**************************
");
printf("******** 1.play ********
");
printf("******** 0.exit ********
");
printf("**************************
");
}
void game()
{
char board[ROW][COL];
//
InitBoard(board, ROW, COL);
//
DisplayBoard(board, ROW, COL);
//
while (1)
{
PlayerMove(board, ROW, COL);
DisplayBoard(board, ROW, COL);
if (Iswin(board, ROW, COL) != 'C')
{
break;
}
ComputerMove(board, ROW, COL);
DisplayBoard(board, ROW, COL);
if (Iswin(board, ROW, COL) != 'C')
{
break;
}
}
if (Iswin(board, ROW, COL) == '*')
{
printf("
");
}
else if (Iswin(board, ROW, COL) == '#')
{
printf("
");
}
else
{
printf("
");
}
}
int main()
{
int input = 0;
do
{
printf(" :
");
menu();
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("
");
break;
default:
printf("
");
break;
}
} while (input);
return 0;
}
game.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"
void InitBoard(char board[ROW][COL], int row, int col)
{
int i = 0;
for (i = 0; i < row; i++)
{
int j = 0;
for (j = 0; j < col; j++)
{
board[i][j] = ' ';
}
}
}
void DisplayBoard(char board[ROW][COL], int row, int col)
{
int i = 0;
for (i = 0; i < row; i++)
{
int j = 0;
for (j = 0; j < col; j++)
{
printf(" %c ", board[i][j]);
if (j < col - 1)
printf("|");
}
printf("
");
if (i < row - 1)
{
for (j = 0; j < col; j++)
{
printf("---");
if (j < col - 1)
printf("|");
}
}
printf("
");
}
}
void PlayerMove(char board[ROW][COL], int row, int col)
{
printf(" :>
");
int x = 0;
int y = 0;
while (1)
{
scanf("%d%d", &x, &y);
if (x >= 1 && x <= 3 && y >= 1 && y <= 3)
{
if (board[x - 1][y - 1] == ' ')
{
board[x - 1][y - 1] = '*';
break;
}
else
{
printf(" ,
");
}
}
else
{
printf(" ,
");
}
}
}
void ComputerMove(char board[ROW][COL], int row, int col)
{
int x = 0;
int y = 0;
printf(" :>
");
x = rand() % row;
y = rand() % col;
while (1)
{
x = rand() % row;
y = rand() % col;
if (board[x][y] == ' ')
{
board[x][y] = '#';
break;
}
}
}
int IsFull(char board[ROW][COL], int row, int col)
{
int i = 0;
int j = 0;
for (i = 0; i < row; i++)
{
for (j = 0; j < col; j++)
{
if (board[i][j] == ' ')
return 0;
}
}
return 1;
}
char Iswin(char board[ROW][COL], int row, int col)
{
int i = 0;
//
for (i = 0; i < row; i++)
{
if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][1] != ' ')
{
return board[i][1];
}
}
//
for (i = 0; i < col; i++)
{
if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] != ' ')
{
return board[1][i];
}
}
//
if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ')
{
return board[1][1];
}
if (board[2][0] == board[1][1] && board[1][1] == board[0][2] && board[1][1] != ' ')
{
return board[1][1];
}
if (IsFull(board, ROW, COL))
{
return 'P';
}
return 'C';
}
game.h
#pragma once
#include <stdio.h>
#define ROW 3
#define COL 3
void InitBoard(char board[ROW][COL], int row, int col);
void DisplayBoard(char board[ROW][COL], int row, int col);
void PlayerMove(char board[ROW][COL], int row, int col);
void ComputerMove(char board[ROW][COL], int row, int col);
char Iswin(char board[ROW][COL], int row, int col);
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.