C 언어 는 간이 판 삼자 기 게임 을 실현 한다.
다 중 파일 이란 무엇 입 니까?
대부분의 대형 프로젝트 의 헤더 파일 과 원본 파일 이 매우 많 습 니 다.우 리 는 모든 코드 를 같은 파일 에 쓸 수 없습니다.이렇게 하면 코드 의 읽 기와 유지 에 불편 합 니 다.보통 서로 다른 기능 에 따라 코드 를 여러 소스 파일 과 헤더 파일 에 각각 씁 니 다.
게임 소개
삼자 기 는 간단 한 2 인 게임 으로 쌍방 이 3X3 의 바둑판 에서 돌아 가면 서 떨 어 지고 한 직선 에 세 개의 연속 적 이 고 같은 바둑 알 이 나 올 때 바로 이긴다.이 프로그램 은 게이머 들 로 하여 금 먼저 자 리 를 잡 게 하고,컴퓨터 는 바둑판 에 랜 덤 으로 자 리 를 잡 게 한다.게임 종료 시 승 부 를 표시 합 니 다.유 저 는 게임 을 계속 할 지 여 부 를 선택 할 수 있 습 니 다.
코드 구현
chess.h
보통 우 리 는 헤더 파일 에 유형의 정의,구조 체 정의,매크로 정의,함수 성명,include 포함 등 내용 을 씁 니 다.
#ifndef _CHESS_H_
#define _CHESS_H_
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include<windows.h>
#pragma warning(disable:4996)
#define ROW 3
#define COL 3
#define BLACK_PIECE 'X'
#define WHITE_PIECE 'O'
void InitBoard(char board[ROW][COL], int row, int col);
void ShowBoard(char board[ROW][COL], int row, int col);
void PlayerMove(char board[ROW][COL], int row, int col);
int ComputerMove(char board[ROW][COL], int row, int col);
char CheckWin(char board[ROW][COL], int row, int col);
#endif
chess.c원본 파일 에는 chess.h 라 는 헤더 파일 이 포함 되 어 있 기 때문에 이 chess.c 파일 에 서 는 헤더 파일 에 정 의 된 내용 을 사용 할 수 있 습 니 다.사용자 정의 형식,사용자 정의 함수,표준 입 출력 함수 등 을 사용 할 수 있 습 니 다.
include 의 경로 문 제 는<>를 사용 하여 포 함 된 헤더 파일 을 지정 할 때 컴 파일 러 는 시스템 헤더 파일 라 이브 러 리 에서 찾 고''를 사용 하여 포 함 된 헤더 파일 을 사용 하면 컴 파일 러 는 현재 프로그램 디 렉 터 리 에서 찾 습 니 다.include 에 포 함 된 파일 은 절대적 인 경로 일 수도 있 고 상대 적 인 경로 일 수도 있 습 니 다.한 마디 로 하면 헤더 파일 의 저장 경로 와 현재 원본 파일 의 관계 가 정확 하면 됩 니 다.
#include "chess.h"
//
void InitBoard(char board[][COL], int row, int col)
{
for (int i = 0; i < row; i++){
for (int j = 0; j < col; j++){
board[i][j] = ' ';
}
}
}
void ShowBoard(char board[][COL], int row, int col)
{
printf(" | 1 | 2 | 3 |
");
int i = 0;
for (; i < row; i++){
printf("----------------
");
printf(" %d | %c | %c | %c |
", i + 1, board[i][0], board[i][1], board[i][2]);
}
printf("----------------
");
}
//
void PlayerMove(char board[][COL], int row, int col)
{
int x = 0;
int y = 0;
printf("
");
printf("---------- ----------
");
printf("
");
while (1){
printf(" <x,y>:");
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] = 'X';
break;
}
else{
printf(" , !
");
}
}
else{
printf(" !
");
}
}
}
//
int ComputerMove(char board[][COL], int row, int col)
{
int x = 0;
int y = 0;
printf("
");
printf("---------- ----------
");
printf("
");
while (1){
for (x = 0; x <= 2; x++){ // , !
for (y = 0; y <= 2; y++){
if (board[x][y] == ' '){
board[x][y] = 'X';
if (CheckWin(board, ROW, COL) == 'X'){
board[x][y] = 'O'; // , while ,
Sleep(500);
return 0;
}
else{
board[x][y] = ' '; //
}
}
}
}
if (board[1][1] == ' '){ // ,
board[1][1] = 'O';
Sleep(500);
return 0;
}
else{ // , 。
for (x = 0; x <= 2; x += 2){
for (y = 0; y <= 2; y += 2){
if (board[x][y] == ' '){
board[x][y] = 'O';
Sleep(500);
return 0;
}
}
}
}
x = rand() % row; // ,0―2
y = rand() % col;
if (board[x][y] == ' '){
board[x][y] = 'O';
Sleep(1000);
break;
}
printf("
");
}
}
static 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;
}
// BLACK_PIECE 'X'
// WHITE_PIECE 'O'
// , 'Q'
// , 'C'
// or or
char CheckWin(char board[ROW][COL], int row, int col)
{
int i = 0;
for (; i < row; i++){
//
if (board[i][0] != ' ' && board[i][0] == board[i][1] && board[i][1] == board[i][2]){
return board[i][0];
}
}
for (i = 0; i < col; i++){
//
if (board[0][i] != ' ' && board[0][i] == board[1][i] && board[1][i] == board[2][i]){
return board[0][i];
}
}
if (board[0][0] != ' ' && board[0][0] == board[1][1] && board[1][1] == board[2][2]){
return board[0][0];
}
if (board[0][2] != ' ' && board[0][2] == board[1][1] && board[1][1] == board[2][0]){
return board[1][1];
}
//
if (IsFull(board, row, col) == 1){
return 'Q';
}
//
return 'C';
}
main.c생각 을 정리 하고 운행 의 틀 을 세우다.
1.게임 메뉴,선택 플레이/안 플레이
2.바둑판 인쇄
3.플레이어 슬롯
4.바둑판 인쇄
5.컴퓨터 소켓
6.바둑판 인쇄
7.…
8.승부 보이 기
9.게임 메뉴 로 돌아 가 플레이/안 하기
#include "chess.h"
void Menu()
{
printf("
");
printf("---------- ----------
");
printf("
");
printf("******************************
");
printf("* 1.Play *
");
printf("* 2.Exit *
");
printf("******************************
");
printf("
");
printf("Please Enter Select:");
}
void Game()
{
char board[ROW][COL] = { 0 };//
char ret = 0;
InitBoard(board, ROW, COL);
ShowBoard(board, ROW, COL);//
while (1){
PlayerMove(board, ROW, COL);//
ShowBoard(board, ROW, COL);//
//
ret = CheckWin(board, ROW, COL);
if (ret != 'C'){
break;
}
ComputerMove(board, ROW, COL);//
ShowBoard(board, ROW, COL);//
//
ret = CheckWin(board, ROW, COL);
if (ret != 'C'){
break;
}
}
if (ret == 'X'){
printf("---------- !----------
");
}
else if (ret == 'O'){
printf("---------- !----------
");
}
else if (ret == 'Q'){
printf("---------- !----------
");
}
}
int main()
{
int select = 0;
int quit = 0;
srand((unsigned int)time(NULL));
while (!quit){
Menu();
scanf("%d", &select);
switch (select){
case 1:
Game();
while (!select);
break;
case 2:
printf("Game Over!
");
break;
default:
printf("Enter Error!
");
break;
}
}
system("pause");
return 0;
}
테스트 결과더 많은 재 미 있 는 클래식 게임 을 통 해 주 제 를 실현 하고 여러분 에 게 공유 합 니 다.
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에 따라 라이센스가 부여됩니다.