C 언어 콘 솔 오목 미니 게임 실현

6201 단어 C 언어오목
이것 은 C 언어 로 이 루어 진 콘 솔 게임 인 오목 입 니 다.바둑판 의 크기 와 이 긴 바둑 의 수 는 매크로 로 정의 되 어 사용자 정의 가 가능 하기 때문에 삼자 기,육 자 기 등 으로 쉽게 바 꿀 수 있 습 니 다.이 게임 은 컴퓨터 바둑 을 무 작위 로 두 는 인간 대전(PVE)으로 설정 되 어 있다.
컴 파일 환경:VS 2015
이 프로그램 은 여러 파일 로 컴 파일 되 었 습 니 다.모두 세 개의 파일,하나의 game.h 헤더 파일,하나의 game.c 파일 과 하나의 main.c 파일 이 있 습 니 다.코드 는 각각 다음 과 같 습 니 다.
game.h
여 기 는 데이터 와 함수 의 성명 입 니 다.

#ifndef  _GAME_H_           
#define _GAME_H_

#define _BOARD_ 10                  //    
#define _PIECE_ 5                   //             

typedef struct Board{
    char show[_BOARD_][_BOARD_];    //      
    char Pc;                        //       
    char Player;                    //       
}Brd ,*pBrd;                        //Brd:      pBrd:     

void init(pBrd B);
void PrintBrd(const pBrd B);
void Pcrand(pBrd B);
int Player(pBrd B);
int judge(pBrd B, int n);
void menu(pBrd B);

#endif // ! _GAME_H_
game.c
여 기 는 함수 의 구체 적 인 실현 이다.

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include "game.h"

void init(pBrd B)
{
    int i, j;
    for (i = 0; i < _BOARD_; i++)
    {
        for (j = 0; j < _BOARD_; j++)
        {
            B->show[i][j] = ' ';
        }
    }
    B->Pc = '@';
    B->Player = '*';
}

void PrintBrd(const pBrd B)
{
    int i, j;
    printf(" ");
    for (i = 0; i < _BOARD_; i++)
    {
        printf("   %d", i + 1);
    }
    printf("
"); for (i = 0; i < _BOARD_; i++) { for (j = 0; j < _BOARD_; j++) { if (j == 0)printf(" %d|", i + 1); printf(" %c |", B->show[i][j]); } if (i == 0)printf(" Player: *"); if (i == 1)printf(" AI: @"); printf("

"); } } void Pcrand(pBrd B) { int i, j; srand((unsigned int)time((NULL))); int n = rand()%(_BOARD_*_BOARD_); for (i = 0; i < _BOARD_; i++) { for (j = 0; j < _BOARD_; j++) { if (n > 0)n--; else if (n == 0 && B->show[i][j] == ' ') { B->show[i][j] = B->Pc; return; } } } } int Player(pBrd B) { int i, j; printf(" :
"); printf(" :>"); scanf("%d", &i); printf(" :>"); scanf("%d", &j); i--; j--; if (B->show[i][j] != ' ' || i >= _BOARD_ || j >= _BOARD_ || i < 0 || j < 0) { printf(" !
"); system("pause"); return 0; } B->show[i][j] = B->Player; return 1; } int judge(pBrd B, int n) { char s; int c = 0; int i, j, sum = 0; if (n == 1)s = B->Player; else if (n = 2) s = B->Pc; for (i = 0; i < _BOARD_; i++) { sum = 0; for (j = 0; j < _BOARD_; j++) { if (B->show[i][j] == s)sum++; else sum = 0; if (sum == _PIECE_)return 1; } } for (j = 0; j < _BOARD_; j++) { sum = 0; for (i = 0; i < _BOARD_; i++) { if (B->show[i][j] == s)sum++; else sum = 0; if (sum == _PIECE_)return 1; } } sum = 0; for (i = 0, j = 0; i < _BOARD_; i++, j++) { if (B->show[i][j] == s)sum++; else sum = 0; if (sum == _PIECE_)return 1; } sum = 0; for (i = 0, j = _BOARD_ - 1; i < _BOARD_; i++, j--) { if (B->show[i][j] == s)sum++; else sum = 0; if (sum == _PIECE_)return 1; } return 0; } void menu(pBrd B) { int c,n = 1; printf("****************************************
"); printf("********* 1.play ** 0.exit *********
"); printf("****************************************
"); printf(" :>"); scanf("%d", &c); while (c) { system("cls"); if (n == 1) { PrintBrd(B); if(Player(B))n=2; else continue; } else { Pcrand(B); n = 1; } if (judge(B, n)) { PrintBrd(B); if (n == 1)printf("Old Fe 666!
"); else printf("
"); break; } } }
main.c
프로그램 입구

#include"game.h"

int main()
{
    Brd B;
    init(&B);
    menu(&B);
    printf("Thanks for playing my game.
"); return 0; }
캡 처 실행




이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기