C 언어 판 삼자 기 게임
먼저 흐름 도 에서 보 듯 이:
설명:우선 우 리 는 1/0 을 입력 하여 게임 에 들 어 갈 지 여 부 를 판단 합 니 다.1 로 입력 하면 게임 에 들 어 갑 니 다.0 으로 입력 하면 게임 종료;다른 값 으로 입력 할 때,우 리 는 다시 입력 하 는 것 을 알려 줍 니 다.그래서 여 기 는 switch 로 이 루어 집 니 다.
우 리 는 바둑판 을 돌 이 켜 보면 마치 2 차원 배열 과 같 기 때문에 우 리 는 바둑판 디자인 과 바둑판 에 값 을 부여 할 때 모두 2 차원 배열 을 사용 할 것 이다.우리 의 확장 성 을 강하 게 하기 위해 서,우 리 는 줄 과 열의 값 을 정의 하기 위해 매크로 를 사용 합 니 다.
앞으로 의 판 단 을 위해 서 우 리 는 바둑판 에 있 는 값 을 모두',즉 바둑판 의 초기 화 입 니 다.여기 서 우 리 는 IntBoard()함수 로 이 루어 집 니 다.이어서 우 리 는 바둑판 을 실현 할 것 이다.
우 리 는 첫 번 째 줄 은 데 이 터 를 놓 고 두 번 째 줄 은 경계선 이 고 세 번 째 줄 은 데 이 터 를 놓 으 며 네 번 째 행 위 는 경계선 이 고 다섯 번 째 줄 은 데 이 터 를 놓 으 며 여섯 번 째 줄 은 인쇄 하지 않 는 다 고 상상 할 수 있다.같은 이치 로 열 을 디자인 할 수 있 습 니 다.저 희 는 DisplayBoard()함수 로 이 루어 집 니 다.
다음은 바둑 을 두 는 부분 입 니 다.이것 은 순환 과정 입 니 다.우 리 는 while()순환 을 사용 하여 실 현 될 것 입 니 다.승 패 를 판단 하 는 IsWin()함수 로 while()순환 의 계속 과 끝 을 제어 할 것 입 니 다.
게이머 들 이 바둑 을 두 는 과정 에서 키보드 로 좌 표를 입력 하고 입력 한 후에 우 리 는 먼저 입력 한 좌표 가 바둑판 의 범 위 를 초과 하 는 지 판단 해 야 한다.만약 에 합 법 적 이면 그 다음 에 입력 한 좌표 가 비어 있 는 지,비어 있 으 면 떨 어 질 수 있 는 지,아니면 제시 문 구 를 인쇄 하고 다시 입력 해 야 한다.만약 에 합 법 적 이지 않 으 면 제시 하고 다시 입력 해 야 한다.
플레이어 가 탈락 한 후에 우 리 는 먼저 승패 가 발생 했 는 지 판단 해 야 한다.만약 에 승패 무승부 가 발생 하면 우 리 는 게임 을 끝 낼 것 이다.만약 에 모두 발생 하지 않 았 다 면 우 리 는'C'로 돌아 가 게임 을 계속 할 것 이다.우 리 는 IsWin()함수 로 실현 할 것 이다.
컴퓨터 에서 바둑 을 두 면 우 리 는 rand()함 수 를 사용 할 수 있다.우리 가 생 성 한 숫자 는 반드시 바둑판 범위 내 에 있어 야 하기 때문에 우 리 는 그것 을 우리 가 정의 한 줄 이나 열 에 모 아서 컴퓨터 입력 의 유효성 을 확보 할 수 있다.그 다음 에 우 리 는 게이머 와 마찬가지 로 컴퓨터 의 낙하자 가 비어 있 는 지 아 닌 지 를 판단 해 야 한다.
마찬가지 로 컴퓨터 가 떨 어 진 후에 도 IsWin()함수 로 승 부 를 판단 해 야 한다.
대체적인 게임 디자인 은 바로 이 렇 습 니 다.그 다음 에 우 리 는 코드 로 이 루어 집 니 다.이번 우리 의 실현 은 test.c game.c 로 나 뉘 어 각각 이 루어 집 니 다.그 중에서 test.c 는 주체 이 고 game.c 는 함수 의 정의 이 며 game.h 는 함수 의 성명 입 니 다.
여 기 는 test.c 의 내용 입 니 다:
#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
//
void menu()
{
printf("1,play 0.exit");
}
void game() {
char ret = 0;
char board[ROW][COL] = { 0 };
//
IntBoard(board, ROW, COL);
Displayboard(board, ROW, COL);
//
while (1) {
PlayerMove(board, ROW, COL);
Displayboard(board, ROW, COL);
//
ret = IsWin(board, ROW, COL);
if (ret != 'C') {
break;
}
ComputerMove(board, ROW, COL);
Displayboard(board, ROW, COL);
ret = IsWin(board, ROW, COL);
if (ret != 'C') {
break;
}
}
if (ret == '*')
printf("
");
else if (ret == "#")
printf("
");
else
printf("
");
}
void test() {
int input = 0;
srand((unsigned int)time(NULL));
do {
menu();
printf(" :>
");
scanf("%d", &input);
switch (input) {
case 1:
printf("
");
game();
break;
case 0:
printf("
");
break;
default:
printf(" ,
");
break;
}
} while (input);
}
int main() {
test();
return 0;
}
game.c:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include"game.h"
void IntBoard(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++) {
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) {
int x = 0;
int y = 0;
printf(" ");
while (1) {
printf(" ");
scanf("%d%d", &x, &y);
if (x >= 1 && x <= row && y >= 1 && y <= col) {
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("
");
while (1) {
x = rand() % row;
y = rand() % col;
if (board[x][y] == ' ') {
board[x][y] = '#';
break;
}
}
}
// 1
// 0 ;
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][0] != ' ') {
return board[i][0];
}
}
//
for (i = 0; i < col; i++) {
if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] != ' ')
return board[0][i];
}
if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board != ' ')
return board[0][0];
if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ')
return board[1][1];
//
if (isFULL(board, ROW, COL) == 1) {
return 'Q';
}
return 'C';
}
game.h:
#pragma once
#define _CRT_SECURE_NO_WARNINGS 1
#define ROW 3
#define COL 3
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void IntBoard(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);
// “*”
// “#”
// “Q”
// “C”
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에 따라 라이센스가 부여됩니다.