最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實現(xiàn)控制臺五子棋小游戲

 更新時間:2021年07月28日 08:35:25   作者:Monster_ii  
這篇文章主要為大家詳細介紹了C語言實現(xiàn)控制臺五子棋小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

這是一個用C語言實現(xiàn)的控制臺小游戲—-五子棋,棋盤大小和獲勝棋子數(shù)目是用宏定義的,可以自定義,所以可以輕松改為三子棋、六子棋等等。此游戲設(shè)定為人機對戰(zhàn)(PVE),電腦走棋是隨機的。

編譯環(huán)境:VS2015

此程序采用多文件編譯,共有三個文件,一個game.h頭文件,一個game.c文件和一個main.c文件,代碼分別如下:

game.h

這里是一些數(shù)據(jù)和函數(shù)的聲明

#ifndef  _GAME_H_           
#define _GAME_H_

#define _BOARD_ 10                  //棋盤大小
#define _PIECE_ 5                   //獲勝所需要連起來的棋子個數(shù)

typedef struct Board{
    char show[_BOARD_][_BOARD_];    //棋盤字符數(shù)組
    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

這里是函數(shù)的具體實現(xiàn)

#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("\n");
    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("\n\n");
    }
}

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("請輸入落子位置:\n");
    printf("行:>");
    scanf("%d", &i);
    printf("列:>");
    scanf("%d", &j);
    i--;
    j--;
    if (B->show[i][j] != ' ' || i >= _BOARD_ || j >= _BOARD_ || i < 0 || j < 0)
    {
        printf("請輸入正確的位置!\n");
        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("****************************************\n");
    printf("*********  1.play  **  0.exit  *********\n");
    printf("****************************************\n");
    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!\n");
            else printf("請大俠重新來過\n");
            break;
        }
    }
}

main.c

程序入口

#include"game.h"

int main()
{
    Brd B;
    init(&B);
    menu(&B);
    printf("Thanks for playing my game.\n");
    return 0;
}

運行截圖

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

兴山县| 沙湾县| 尼勒克县| 元朗区| 新巴尔虎左旗| 永仁县| 扎兰屯市| 宿州市| 利辛县| 同江市| 曲阳县| 黄大仙区| 宁强县| 嘉义县| 会宁县| 葵青区| 泰和县| 嘉荫县| 得荣县| 海盐县| 鸡泽县| 太和县| 英超| 青岛市| 太仆寺旗| 延津县| 凯里市| 松原市| 辰溪县| 蒲城县| 晋江市| 贺兰县| 泗洪县| 桂平市| 宝鸡市| 旅游| 山东省| 武定县| 龙胜| 宜章县| 南岸区|