C++制作五子棋小游戲(源碼分享)

為了與各位一起學(xué)習(xí)一起成長因妇,大家可以把這段代碼運(yùn)行下卫键。將五子棋源代碼1和五子棋源代碼2,連起來編譯運(yùn)行司抱。

# include<stdio.h>

# include<stdio.h>

# include<stdio.h>

# include<stdio.h>//插入輸入輸出頭文件

# include<string.h>//字符數(shù)組的函數(shù)定義的頭文件

# include<stdlib.h>//stdlib 頭文件即standard library標(biāo)準(zhǔn)庫頭文件stdlib 頭文件里包含了C蓖康、C++語言的最常用的系統(tǒng)函數(shù)該 ,文件包含了C語言標(biāo)準(zhǔn)庫函數(shù)的定義.

# define SPA 0//在C或C++語言源程序中允許用一個(gè)標(biāo)識符來表示一個(gè)字符串铐炫,稱為“宏”。 “define”為宏定義命令钓瞭。

# define MAN 1

# define COM 2

/* 空位置設(shè)為0 驳遵,玩家下的位置設(shè)為1 ,電腦下的位置設(shè)為2 */

#define ORDEX 15

int qipan[ORDEX][ORDEX]; //自己定義的預(yù)處理函數(shù)山涡,以二維數(shù)組形式構(gòu)建棋盤 /* 15*15的棋盤 */

typedef struct//typedef的作用是在C中定義一個(gè)結(jié)構(gòu)體類型

{

int iFlag;

int iX, iY;

}ScmPiece;

int g_iPieceLen;

ScmPiece g_ScmGame1, g_ScmGame2;

void start(); /* 程序的主要控制函數(shù) */

void draw(); /* 畫棋盤 */

int Victory( ScmPiece * pScmPiece ); /* 判斷勝利 p q為判斷點(diǎn)坐標(biāo) */

void AI(int *p,int *q); /* 電腦下子 p q返回下子坐標(biāo) */

int value(int p,int q); /* 計(jì)算空點(diǎn)p q的價(jià)值 */

int qixing(int n,int p,int q); /* 返回空點(diǎn)p q在n方向上的棋型 n為1-8方向 從右順時(shí)針開始數(shù) */

void yiwei(int n,int *i,int *j); /* 在n方向上對坐標(biāo) i j 移位 n為1-8方向 從右順時(shí)針開始數(shù) */

void InitGame(){

“我自己是一名從事了多年開發(fā)的C++老程序員堤结,辭職目前在做自己的C++私人定制課程,今年年初我花了一個(gè)月整理了一份最適合2019年學(xué)習(xí)的C++學(xué)習(xí)干貨鸭丛,從最基礎(chǔ)的到各種框架都有整理竞穷,送給每一位c++小伙伴,想要獲取的可以在7253鳞溉,91790免費(fèi)獲取瘾带。

int i;

g_iPieceLen = ORDEX * ORDEX;

g_ScmGame1.iX = 0;

g_ScmGame1.iY = 0;

g_ScmGame1.iFlag = COM;

g_ScmGame2.iX = 7;

g_ScmGame2.iY = 7;

g_ScmGame2.iFlag = MAN;

for( i=0; i < ORDEX*ORDEX; ++i )

*( (int*)qipan + i ) = SPA;

}

int main()

{

char k;

do{

InitGame();

start();

printf("還要再來一把嗎?輸入y或n:"); getchar(); scanf("%c",&k);

while(k!='y'&&k!='n'){ printf("輸入錯(cuò)誤,請重新輸入 "); scanf("%c",&k); }

system("cls");

}while(k=='y');

printf("謝謝使用! ");

return 0;

}

void MakePiece( ScmPiece * pScmPiece, int iGameFlag ){

if( iGameFlag )

{

printf("請下子:");

while( scanf( "%d%d", &pScmPiece->iX, &pScmPiece->iY ) )

{

if( ( pScmPiece->iX < 0 || pScmPiece->iX > ORDEX-1 ) || ( pScmPiece->iY < 0 || pScmPiece->iY > ORDEX-1 ) )

printf( "坐標(biāo)錯(cuò)誤!請重新輸入:");

else if( qipan[pScmPiece->iX][pScmPiece->iY] )

printf( "該位置已有子!請重新輸入:");

else break;

}

}

qipan[pScmPiece->iX][pScmPiece->iY] = pScmPiece->iFlag;

--g_iPieceLen;

system("cls");

draw();

if( iGameFlag == 0 )

printf("電腦下在%d %d ", pScmPiece->iX, pScmPiece->iY );

}

void start()

{

int choice;

//ScmPiece ScmGameTemp1, ScmGameTemp2;/* a1 b1儲存玩家上手坐標(biāo) c1 d1儲存電腦上手坐標(biāo) */

printf(" ╔═══════════════════════════════╗ ");

printf(" ║ ║ ");

printf(" ║ 歡迎使用五子棋對戰(zhàn)程序 祝您玩的愉快挑戰(zhàn)無極限 ║ ");

printf(" ║ ║ ");

printf(" ║ ._______________________. ║ ");

printf(" ║ | _____________________ | ║ ");

printf(" ║ | I I | ║ ");

printf(" ║ | I I | ║ ");

printf(" ║ | I 五 子 棋 I | ║ ");

printf(" ║ | I I | ║ ");

printf(" ║ | I___________________I | ║ ");

printf(" ║ !_______________________! ║ ");

printf(" ║ ._[__________]_. ║ ");

printf(" ║ .___|_______________|___. ║ ");

printf(" ║ |::: ____ | ║ ");

printf(" ║ | ~~~~ [CD-ROM] | ║ ");

printf(" ║ !_____________________! ║ ");

printf(" ║ ║ ");

printf(" ║ ║ ");

printf(" ║ 寒 星 溪 月 疏 星 首,花 殘 二 月 并 白 蓮熟菲。 ║ ");

printf(" ║ 雨 月 金 星 追 黑 玉看政,松 丘 新 宵 瑞 山 腥朴恳。 ║ ");

printf(" ║ 星 月 長 峽 恒 水 流,白 蓮 垂 俏 云 浦 嵐允蚣。 ║ ");

printf(" ║ 黑 玉 銀 月 倚 明 星于颖,斜 月 明 月 堪 稱 朋。 ║ ");

printf(" ║ 二 十 六 局 先 棄 二嚷兔,直 指 游 星 斜 彗 星森渐。 ║ ");

printf(" ║ ║ ");

printf(" ║ ║ ");

printf(" ║ 1.人機(jī)對戰(zhàn) 2.人人對戰(zhàn) ║ ");

printf(" ║ ║ ");

printf(" ╚═══════════════════════════════╝ ");

printf(" 請輸入1或2:");

while( scanf( "%d", &choice ), choice!=1 && choice!=2 )

printf( "輸入錯(cuò)誤,請重新輸入:" );

system("cls");

if( choice == 1 )

{ /* 人機(jī)模式 */

printf(" 歡迎使用五子棋人機(jī)對戰(zhàn)冒晰! 下子請輸入坐標(biāo)(如13 6)中間以空格分隔同衣。 ");

draw();

printf("先下請按1,后下請按2:");

while( scanf( "%d", &choice ), choice!=1 && choice!=2 )

printf( "輸入錯(cuò) 誤壶运,請重新輸入:" );

if( choice == 2 )

MakePiece( &g_ScmGame2, 0 );

choice = 1;

}

else

{

printf("歡迎使用五子棋人人對戰(zhàn)耐齐!下子請輸入坐標(biāo)(如13 6)∏巴洌悔棋請輸入15 15蚪缀。 ");

draw();

}

while( g_iPieceLen )

{

MakePiece( &g_ScmGame1, 1 );

if( Victory( &g_ScmGame1 ) )

{

printf("電腦神馬的都是浮云!!! ");

return;

} /* 玩家贏 */

if( choice == 1 )

{

AI( &g_ScmGame2.iY, &g_ScmGame2.iX );

MakePiece( &g_ScmGame2, 0 );

if( Victory( &g_ScmGame2 ) )

{ /* 電腦贏 */

int iChoice;

printf("要悔棋嗎?請輸入y或n:");

STARTFLAGE:

setbuf( stdin, NULL );

scanf( "%c", &iChoice );

switch( (char)iChoice ){

case 'y':

case 'Y':

g_iPieceLen += 2;

qipan[g_ScmGame2.iX][g_ScmGame2.iY] = SPA;

qipan[g_ScmGame1.iX][g_ScmGame1.iY] = SPA;

system("cls"); draw();

break;

case 'n':

case 'N':

printf( "下不過電腦很正常恕出,請不要灰心!!! " );

return;

default:

printf("輸入錯(cuò)誤询枚,請重新輸入:");

goto STARTFLAGE;

}

}

}

else

{

MakePiece( &g_ScmGame2, 1 );

if( Victory( &g_ScmGame2 ) )

{

printf("電腦神馬的都是浮云!!! ");

return;

}

}

}

printf("和局 ");

}

可能編輯時(shí)沒注意格式,有點(diǎn)亂浙巫,你們自己整理一下咯~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末金蜀,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子的畴,更是在濱河造成了極大的恐慌渊抄,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丧裁,死亡現(xiàn)場離奇詭異护桦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)二庵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來催享,“玉大人,你說我怎么就攤上這事哟绊∫蛎睿” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長攀涵。 經(jīng)常有香客問我铣耘,道長,這世上最難降的妖魔是什么汁果? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任涡拘,我火速辦了婚禮,結(jié)果婚禮上据德,老公的妹妹穿的比我還像新娘。我一直安慰自己跷车,他們只是感情好棘利,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著朽缴,像睡著了一般善玫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上密强,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天茅郎,我揣著相機(jī)與錄音,去河邊找鬼或渤。 笑死系冗,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的薪鹦。 我是一名探鬼主播掌敬,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼池磁!你這毒婦竟也來了奔害?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤地熄,失蹤者是張志新(化名)和其女友劉穎华临,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體端考,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雅潭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了跛梗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寻馏。...
    茶點(diǎn)故事閱讀 40,110評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖核偿,靈堂內(nèi)的尸體忽然破棺而出诚欠,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布粉寞,位于F島的核電站左腔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏振亮。R本人自食惡果不足惜鞭莽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一澎怒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧喷面,春花似錦、人聲如沸琳状。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肮柜。三九已至审洞,卻和暖如春待讳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背创淡。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工誊酌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碧浊。 一個(gè)月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像比勉,于是被迫代替她去往敵國和親驹止。 傳聞我的和親對象是個(gè)殘疾皇子臊恋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容