這篇文章給大家分享的是有關(guān)C++如何實(shí)現(xiàn)五子棋小程序的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

這是一個(gè)用C++寫的五子棋的小程序,關(guān)于A若是占據(jù)了已經(jīng)下了的位置處理的不好。改動 hight,與width ,與q[][] 可以將棋盤擴(kuò)大。
#include<iostream>
#include<vector>
using namespace std;
class qipan
{
public:
qipan() {}
~qipan() {};
//向上下左右,斜的方向
char left(int x, int y)
{//檢查是否合適
if (x >= 1 && x <= hight&& y - 1 >= 1 && y - 1 <= width)
{
return q[x][y - 1];
}
else {
return 'F';
}
}
char right(int x, int y)
{
if (x >= 1 && x <= hight&&y + 1 >= 1 && y + 1 <= width)
{
return q[x][y + 1];
}
else {
return 'F';
}
}
char up(int x, int y)
{
if (x - 1 >= 1 && x - 1 <= hight && y >= 1 && y <= width)
{
return q[x - 1][y];
}
else {
return 'F';
}
}
char down(int x, int y)
{
if (x + 1 >= 1 && x + 1 <= hight && y >= 1 && y <= width)
{
return q[x + 1][y];
}
else {
return 'F';
}
}
char left_up(int x, int y)
{
if (x - 1 >= 1 && x - 1 <= hight && y - 1 >= 1 && y - 1 <= width)
{
return q[x - 1][y - 1];
}
else {
return 'F';
}
}
char left_down(int x, int y)
{
if (x + 1 >= 1 && x + 1 <= hight && y - 1 >= 1 && y - 1 <= width)
{
return q[x + 1][y - 1];
}
else {
return 'F';
}
}
char right_up(int x, int y)
{
if (x - 1 >= 1 && x - 1 <= hight && y + 1 >= 1 && y + 1 <= width)
{
return q[x - 1][y + 1];
}
else {
return 'F';
}
}
char right_down(int x, int y)
{
if (x + 1 >= 1 && x + 1 <= hight && y + 1 >= 1 && y + 1 <= width)
{
return q[x + 1][y + 1];
}
else {
return 'F';
}
}
void init_cur() {
h_cur = hang;
l_cur = lie;
}
bool win()
{
bool WIN = false;
char temp = q[hang][lie];
//以上為例,每次先看上面的5個(gè),假如一樣,iter++;否則 break;再加上下的方向,同樣iter++;最后iter+1==5,WIN=true;并且退出
//各個(gè)方向重復(fù),上下左右,斜著的。
//贏了直接退出。
//顯示是誰贏了
//左右
int count_lr = 1;
init_cur();
for (int i = 0; i < 4; i++)
{
if (left(h_cur, l_cur) == temp)
count_lr++;
else
break;
l_cur--;
}
init_cur();
for (int i = 0; i < 4; i++)
{
if (right(h_cur, l_cur) == temp)
count_lr++;
else
break;
l_cur++;
}
if (count_lr == 5)
WIN = true;
//上下
int count_ud = 1;
init_cur();
for (int i = 0; i < 4; i++)
{
if (up(h_cur, l_cur) == temp)
count_ud++;
else
break;
h_cur--;
}
init_cur();
for (int i = 0; i < 4; i++)
{
if (down(h_cur, l_cur) == temp)
count_ud++;
else
break;
h_cur++;
}
if (count_ud == 5)
WIN = true;
//左斜
int count_lt = 1;
init_cur();
for (int i = 0; i < 4; i++)
{
if (left_up(h_cur, l_cur) == temp)
count_lt++;
else
break;
h_cur--;
l_cur--;
}
init_cur();
for (int i = 0; i < 4; i++)
{
if (left_down(h_cur, l_cur) == temp)
count_lt++;
else
break;
h_cur++;
l_cur--;
}
if (count_lt == 5)
WIN = true;
//右邊斜
int count_rt = 1;
init_cur();
for (int i = 0; i < 4; i++)
{
if (right_up(h_cur, l_cur) == temp)
count_rt++;
else
break;
h_cur--;
l_cur++;
}
init_cur();
for (int i = 0; i < 4; i++)
{
if (right_down(h_cur, l_cur) == temp)
count_rt++;
else
break;
h_cur++;
l_cur++;
}
if (count_rt == 5)
WIN = true;
return WIN;
}
void qipan_array()
{
for (int i = 0; i < hight; i++) {
for (int j = 0; j < width; j++)
q[i][j] = '+';
}
}
void prin_qipan()
{
//打印二維數(shù)組;每一行要打印上行號,以及列號
for (int i = 0; i <hight; i++)
{
for (int j = 0; j < width; j++)
{
cout << q[i][j] << " ";
}
cout << i;
cout << endl;
}
for (int j = 0; j <width; j++)
{
cout << j << " ";
}
cout << endl << "________________________________" << endl;
}
int xiaqi(int player)
{
if (player == 1) {
q[hang][lie] = '*';
}
else if (player == 2)
{
q[hang][lie] = '@';
}
else
cout << "input player is wrong" << endl;
return 0;
}
//初始化行列
int gethang(int h)
{
hang = h;
return 0;
}
int getlie(int l)
{
lie = l;
return 0;
}
int h_cur;
int l_cur;
const int hight = 9;
const int width = 9;
int hang; int lie;
char q[9][9];
};
int main()
{
int hang, lie;
qipan wzq;
wzq.qipan_array();
cout << "A 與B 玩五子棋" << endl;
cout << "A use * and B use @" << endl;
cout << "________________________________" << endl;
for (int i = 0; i < 15; i++) {
cout << "A 輸入行: ";
cin >> hang;
cout << "A 輸入列: ";
cin >> lie;
if (wzq.q[hang][lie] != '+')
cout << "輸入的行列數(shù)字已經(jīng)有人占據(jù)了" << endl;
else {
wzq.gethang(hang);
wzq.getlie(lie);
wzq.xiaqi(1);
wzq.prin_qipan();
if (wzq.win())
{
cout << "A is winner" << endl;
exit(0);
}
}
//b 開始了
cout << "B 輸入行: ";
cin >> hang;
cout << "B 輸入列: ";
cin >> lie;
if (wzq.q[hang][lie] != '+')
cout << "輸入的行列數(shù)字已經(jīng)有人占據(jù)了" << endl;
else {
wzq.gethang(hang);
wzq.getlie(lie);
wzq.xiaqi(2);
wzq.prin_qipan();
if (wzq.win())
{
cout << "B is winner" << endl;
exit(0);
}
}
}
return 0;
}感謝各位的閱讀!關(guān)于“C++如何實(shí)現(xiàn)五子棋小程序”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站chinadenli.net,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站標(biāo)題:C++如何實(shí)現(xiàn)五子棋小程序-創(chuàng)新互聯(lián)
文章URL:http://chinadenli.net/article0/ecsoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站內(nèi)鏈、虛擬主機(jī)、App設(shè)計(jì)、網(wǎng)站制作、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)