欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++實現(xiàn)簡易的五子棋游戲

 更新時間:2022年05月05日 11:37:00   作者:shandy1012  
這篇文章主要為大家詳細介紹了C++實現(xiàn)簡易的五子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C++實現(xiàn)簡易五子棋游戲的具體代碼,供大家參考,具體內(nèi)容如下

//用c++實現(xiàn)五子棋
#include <iostream>
#include <cstdlib>
#include "getch.h"

using namespace std;

enum Role{RED=99,BLUE};

class Gobang
{
?? ?char board[15][15];
?? ?int key_x,key_y;
?? ?Role role;
public:
?? ?Gobang(int key_x=7,int key_y=7,Role role=RED):key_x(key_x),key_y(key_y),role(role) {}

?? ?void start(void)
?? ?{
?? ??? ?for(;;)
?? ??? ?{
?? ??? ??? ?show_board();

?? ??? ??? ?get_key();

?? ??? ??? ?if(check_key())
?? ??? ??? ?{
?? ??? ??? ??? ?show_board();
?? ??? ??? ??? ?printf("%d\n",role);
?? ??? ??? ??? ?cout << "恭喜" << (role==RED?"紅方":"藍方") << "勝利!" << endl;
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?change_role();
?? ??? ?}
?? ?}

?? ?// 顯示棋盤
?? ?void show_board(void)
?? ?{
?? ??? ?system("clear");
?? ??? ?printf(" ?");
?? ??? ?for(int i=0; i<15; i++)
?? ??? ?{
?? ??? ??? ?printf(" %c",'A'+i);
?? ??? ?}
?? ??? ?printf("\n");

?? ??? ?for(int x=0; x<15; x++)
?? ??? ?{
?? ??? ??? ?printf("%2d",x+1);
?? ??? ??? ?for(int y=0; y<15; y++)
?? ??? ??? ?{
?? ??? ??? ??? ?if(RED==board[x][y])
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?printf("\33[31m");
?? ??? ??? ??? ??? ?printf(" @");
?? ??? ??? ??? ??? ?printf("\33[0m");
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else if(BLUE == board[x][y])
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?printf("\33[34m");
?? ??? ??? ??? ??? ?printf(" #");
?? ??? ??? ??? ??? ?printf("\33[0m");
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?printf(" *");
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?printf("\n");
?? ??? ?}
?? ?}


?? ?// 獲取棋子
?? ?void get_key(void)
?? ?{
?? ??? ?for(;;)
?? ??? ?{
?? ??? ??? ?// 設置光標的位置
?? ??? ??? ?printf("\33[%d;%dH",key_x+2,(key_y+2)*2);
?? ??? ??? ?switch(getch())
?? ??? ??? ?{
?? ??? ??? ??? ?case 183: key_x>0 && key_x--; break;
?? ??? ??? ??? ?case 184: key_x<15 && key_x++; break;
?? ??? ??? ??? ?case 185: key_y<15 && key_y++; break;
?? ??? ??? ??? ?case 186: key_y>0 && key_y--; break;
?? ??? ??? ??? ?case 10:if(RED!=board[key_x][key_y] && BLUE!=board[key_x][key_y])
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?board[key_x][key_y] = role;
?? ??? ??? ??? ??? ?return;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}
?? ?}

?? ?size_t count_key(int off_x,int off_y)
?? ?{
?? ??? ?size_t count = 0;
?? ??? ?for(int x=key_x+off_x,y=key_y+off_y;?
?? ??? ??? ?x>=0 && x<15 && y>=0 && y<15 && board[x][y] == board[key_x][key_y]; x+=off_x,y+=off_y)
?? ??? ?{
?? ??? ??? ?count++;
?? ??? ?}
?? ??? ?return count;
?? ?}

?? ?// 檢查是否有5子產(chǎn)生
?? ?bool check_key(void)
?? ?{
?? ??? ?if(4 <= count_key(0,-1)+count_key(0,1)) return true;
?? ??? ?if(4 <= count_key(-1,0)+count_key(1,0)) return true;
?? ??? ?if(4 <= count_key(-1,-1)+count_key(1,1)) return true;
?? ??? ?if(4 <= count_key(-1,1)+count_key(1,-1)) return true;
?? ??? ?return false;
?? ?}

?? ?// 切換角色
?? ?void change_role(void)
?? ?{
?? ??? ?role = (RED==role?BLUE:RED);
?? ?}
};

int main()?
{
?? ?Gobang b;
?? ?b.start();
}

效果圖:

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

相關(guān)文章

  • C語言操作符基礎知識詳解

    C語言操作符基礎知識詳解

    這篇文章主要以圖文結(jié)合的方式為大家詳細介紹了C語言位運算基礎知識,感興趣的小伙伴們可以參考一下,希望能給你帶來幫助
    2021-10-10
  • 用C語言進行最基本的socket編程

    用C語言進行最基本的socket編程

    這篇文章主要介紹了C語言下socket編程的基本知識講解,包括最基本的客戶端發(fā)送及服務器端接受數(shù)據(jù)的實現(xiàn),需要的朋友可以參考下
    2015-11-11
  • C語言簡單實現(xiàn)快速排序

    C語言簡單實現(xiàn)快速排序

    快速排序是一種不穩(wěn)定排序,這篇文章主要為大家詳細介紹了C語言簡單實現(xiàn)快速排序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • C語言 scanf的工作原理詳解

    C語言 scanf的工作原理詳解

    這篇文章主要為大家介紹了C語言 scanf的工作原理,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • C++實現(xiàn)“隱藏實現(xiàn),開放接口”的方案

    C++實現(xiàn)“隱藏實現(xiàn),開放接口”的方案

    本文從一個實例講解了C++實現(xiàn)“隱藏實現(xiàn),開放接口”的方案,文章條理清新,內(nèi)容充實,需要的朋友可以參考下
    2015-07-07
  • C語言 數(shù)據(jù)結(jié)構(gòu)與算法之字符串詳解

    C語言 數(shù)據(jù)結(jié)構(gòu)與算法之字符串詳解

    這篇文章將帶大家深入了解C語言數(shù)據(jù)結(jié)構(gòu)與算法中的字符串,文中主要是介紹了字符串的定義、字符串的比較以及一些串的抽象數(shù)據(jù)類型,感興趣的可以學習一下
    2022-01-01
  • C++的動態(tài)內(nèi)存管理你真的了解嗎

    C++的動態(tài)內(nèi)存管理你真的了解嗎

    這篇文章主要為大家詳細介紹了C++的動態(tài)內(nèi)存管理,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • QT實現(xiàn)將兩個時間相加的算法[hh:?mm?+?hh:?mm]的示例代碼

    QT實現(xiàn)將兩個時間相加的算法[hh:?mm?+?hh:?mm]的示例代碼

    本文主要介紹了QT實現(xiàn)將兩個時間相加的算法[hh:?mm?+?hh:?mm]的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • C++實現(xiàn)神經(jīng)網(wǎng)絡框架SimpleNN的詳細過程

    C++實現(xiàn)神經(jīng)網(wǎng)絡框架SimpleNN的詳細過程

    本來自己想到用C++實現(xiàn)神經(jīng)網(wǎng)絡主要是想強化一下編碼能力并入門深度學習,對C++實現(xiàn)神經(jīng)網(wǎng)絡框架SimpleNN的詳細過程感興趣的朋友一起看看吧
    2021-08-08
  • vscode調(diào)試使用make編譯的項目

    vscode調(diào)試使用make編譯的項目

    VSCode本身是一個代碼編輯器,自帶的編譯功能比較弱,本文主要介紹了vscode調(diào)試使用make編譯的項目,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10

最新評論