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

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

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

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

//用c++實(shí)現(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?"紅方":"藍(lán)方") << "勝利!" << endl;
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?change_role();
?? ??? ?}
?? ?}

?? ?// 顯示棋盤(pán)
?? ?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(;;)
?? ??? ?{
?? ??? ??? ?// 設(shè)置光標(biāo)的位置
?? ??? ??? ?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();
}

效果圖:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論