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

基于C語言實現(xiàn)簡單的五子棋游戲

 更新時間:2022年05月07日 12:07:51   作者: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)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • OpenGL實現(xiàn)3D空間中移動圖像

    OpenGL實現(xiàn)3D空間中移動圖像

    這篇文章主要為大家詳細介紹了OpenGL實現(xiàn)3D空間中移動圖像,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • C語言中自定義類型詳解

    C語言中自定義類型詳解

    大家好,本篇文章主要講的是C語言中自定義類型詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • C語言數(shù)據(jù)類型與sizeof關(guān)鍵字

    C語言數(shù)據(jù)類型與sizeof關(guān)鍵字

    這篇文章主要介紹了C語言數(shù)據(jù)類型與sizeof關(guān)鍵字,C語言的數(shù)據(jù)類型包括基本類型、構(gòu)造類型、指針類型以及空類型,下文更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-04-04
  • C++函數(shù)重載的細節(jié)圖文詳解

    C++函數(shù)重載的細節(jié)圖文詳解

    函數(shù)重載即函數(shù)名相同,函數(shù)形參列表不同(函數(shù)特征標(biāo)不同)的一類函數(shù)稱為函數(shù)重載,下面這篇文章主要給大家介紹了關(guān)于C++函數(shù)重載的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • C語言實現(xiàn)斗地主的核心算法

    C語言實現(xiàn)斗地主的核心算法

    本文給大家分享的是使用C語言實現(xiàn)的斗地主游戲的核心算法,主要實現(xiàn)了面向?qū)ο笤O(shè)計,洗牌、發(fā)牌、判斷牌型、比較牌的大小、游戲規(guī)則等算法。通過這個斗地主小項目的練習(xí),提高了我的面向?qū)ο笤O(shè)計能力,加深了對算法的理解。最近把這些設(shè)計和算法分享給大家。
    2015-03-03
  • c++ const引用與非const引用介紹

    c++ const引用與非const引用介紹

    const引用是指向const對象的引用,可以讀取ref,但不能修改所以也就有將const變量賦值給非const引用是非法的,感興趣的朋友可以了解下,或許本文對你有所幫助
    2013-01-01
  • Qt與QWebEngineView交互完整參考示例代碼

    Qt與QWebEngineView交互完整參考示例代碼

    QWebEngineView是Qt框架中的一個組件,它是基于Chromium內(nèi)核的Web瀏覽器引擎,用于在Qt應(yīng)用程序中嵌入網(wǎng)頁內(nèi)容和實現(xiàn)各種Web應(yīng)用功能,這篇文章主要給大家介紹了關(guān)于Qt與QWebEngineView交互完整參考的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • 冒泡排序的三種實現(xiàn)方法

    冒泡排序的三種實現(xiàn)方法

    本篇文章是對冒泡排序的三種實現(xiàn)方法進行了詳細的介紹,需要的朋友可以過來參考下。希望對大家有所幫助
    2013-10-10
  • 淺談C++日志系統(tǒng)log4cxx的使用小結(jié)詳解

    淺談C++日志系統(tǒng)log4cxx的使用小結(jié)詳解

    本篇文章是對C++日志系統(tǒng)log4cxx的使用進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言利用cJSON解析JSON格式全過程

    C語言利用cJSON解析JSON格式全過程

    cJSON是用于解析json格式字符串的一套api,非常好用,下面這篇文章主要給大家介紹了關(guān)于C語言利用cJSON解析JSON格式的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-04-04

最新評論

韶山市| 黄骅市| 贵南县| 昆山市| 泗水县| 安阳县| 搜索| 汾西县| 无为县| 米易县| 青龙| 虎林市| 山丹县| 龙州县| 宽甸| 平泉县| 麟游县| 广东省| 中江县| 安溪县| 甘肃省| 股票| 商水县| 双城市| 江都市| 井研县| 陆河县| 高雄市| 达州市| 教育| 闵行区| 兴安县| 泗阳县| 南安市| 抚宁县| 北碚区| 阳高县| 南和县| 新民市| 泊头市| 高陵县|