a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

C語言實現五子棋小游戲

2020-01-26 14:39:55
字體:
來源:轉載
供稿:網友

首先我們先來看一個稍微簡單些的實現方式:

#include <stdio.h>#include <stdlib.h>#define N 15int chessboard[N + 1][N + 1] = { 0 };int whoseTurn = 0;void initGame(void);void printChessboard(void);void playChess(void);int judge(int, int);int main(void){ initGame(); while (1) {  whoseTurn++;  playChess(); } return 0;}void initGame(void){ char c; printf("Please input /'y/' to enter the game:"); c = getchar(); if ('y' != c && 'Y' != c)  exit(0); system("cls"); printChessboard();}void printChessboard(void){ int i, j; for (i = 0; i <= N; i++) {  for (j = 0; j <= N; j++)  {   if (0 == i)    printf("%3d", j);   else if (j == 0)    printf("%3d", i);   else if (1 == chessboard[i][j])    printf(" O");   else if (2 == chessboard[i][j])    printf(" X");   else    printf(" *");  }  printf("/n"); }}void playChess(void){ int i, j, winner; if (1 == whoseTurn % 2) {  printf("Turn to player 1, please input the position:");  scanf("%d %d", &i, &j);  while (chessboard[i][j] != 0)  {   printf("This position has been occupied, please input the position again:");   scanf("%d %d", &i, &j);  }  chessboard[i][j] = 1; } else {  printf("Turn to player 1, please input the position:");  scanf("%d %d", &i, &j);  while (chessboard[i][j] != 0)  {   printf("This position has been occupied, please input the position again:");   scanf("%d %d", &i, &j);  }  chessboard[i][j] = 2; } system("cls"); printChessboard(); if (judge(i, j)) {  if (1 == whoseTurn % 2)  {   printf("Winner is player 1!/n");   exit(0);  }  else  {   printf("Winner is player 2!/n");   exit(0);  } }}int judge(int x, int y){ int i, j; int t = 2 - whoseTurn % 2; for (i = x - 4, j = y; i <= x; i++) {  if (i >= 1 && i <= N - 4 && t == chessboard[i][j] && t == chessboard[i + 1][j] && t == chessboard[i + 2][j] && t == chessboard[i + 3][j] && t == chessboard[i + 4][j])   return 1; } for (i = x, j = y - 4; j <= y; j++) {  if (j >= 1 && j <= N - 4 && t == chessboard[i][j] && t == chessboard[i][j + 1] && t == chessboard[i][j + 1] && t == chessboard[i][j + 3] && t == chessboard[i][j + 4])   return 1; } for (i = x - 4, j = y - 4; i <= x, j <= y; i++, j++) {  if (i >= 1 && i <= N - 4 && j >= 1 && j <= N - 4 && t == chessboard[i][j] && t == chessboard[i + 1][j + 1] && t == chessboard[i + 2][j + 2] && t == chessboard[i + 3][j + 3] && t == chessboard[i + 4][j + 4])   return 1; } for (i = x + 4, j = y - 4; i >= 1, j <= y; i--, j++) {  if (i >= 1 && i <= N - 4 && j >= 1 && j <= N - 4 && t == chessboard[i][j] && t == chessboard[i - 1][j + 1] && t == chessboard[i - 2][j + 2] && t == chessboard[i - 3][j + 3] && t == chessboard[i - 4][j + 4])   return 1; } return 0;}

演示截圖

我們再來看一個更復雜些的

C語言實現五子棋小游戲# include<stdio.h># include<stdio.h># include<stdio.h># include<stdio.h>//插入輸入輸出頭文件# include<string.h>//字符數組的函數定義的頭文件# include<stdlib.h>//stdlib 頭文件即standard library標準庫頭文件stdlib 頭文件里包含了C、C++語言的最常用的系統函數該 ,文件包含了C語言標準庫函數的定義.# define SPA 0//在C或C++語言源程序中允許用一個標識符來表示一個字符串,稱為“宏”。 “define”為宏定義命令。# define MAN 1# define COM 2 /* 空位置設為0 ,玩家下的位置設為1 ,電腦下的位置設為2 */#define ORDEX 15int qipan[ORDEX][ORDEX]; //自己定義的預處理函數,以二維數組形式構建棋盤 /* 15*15的棋盤 */typedef struct//typedef的作用是在C中定義一個結構體類型{ int iFlag; int iX, iY;}ScmPiece;int g_iPieceLen;ScmPiece g_ScmGame1, g_ScmGame2;void start(); /* 程序的主要控制函數 */void draw(); /* 畫棋盤 */int Victory( ScmPiece * pScmPiece ); /* 判斷勝利 p q為判斷點坐標 */void AI(int *p,int *q);  /* 電腦下子 p q返回下子坐標 */int value(int p,int q);  /* 計算空點p q的價值 */int qixing(int n,int p,int q); /* 返回空點p q在n方向上的棋型 n為1-8方向 從右順時針開始數 */void yiwei(int n,int *i,int *j); /* 在n方向上對坐標 i j 移位 n為1-8方向 從右順時針開始數 */void InitGame(){ 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;}void main(){ char k; do{  InitGame();  start();  printf("還要再來一把嗎?輸入y或n:"); getchar(); scanf("%c",&k);  while(k!='y'&&k!='n'){ printf("輸入錯誤,請重新輸入/n"); scanf("%c",&k); }  system("cls"); }while(k=='y'); printf("謝謝使用!/n");}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( "坐標錯誤!請重新輸入:");   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/n", pScmPiece->iX, pScmPiece->iY );}void start(){ int choice; //ScmPiece ScmGameTemp1, ScmGameTemp2;/* a1 b1儲存玩家上手坐標 c1 d1儲存電腦上手坐標 */ printf("/t

主站蜘蛛池模板:
欧美一区二区在线
|
久久久久中精品中文字幕19
|
婷婷国产
|
日本黄网站在线观看
|
久久成人免费视频
|
国产精品久久久久久久久久久久
|
视频在线一区
|
看欧美黄色录像
|
欧美乱轮
|
精品久久亚洲
|
成人欧美在线
|
亚洲精品欧美视频
|
日韩成人精品视频
|
国产精品久久久久婷婷二区次
|
日韩精品在线播放
|
欧美日韩免费看
|
日韩欧美国产一区二区
|
亚洲最大av网站
|
亚洲男人天堂网
|
99国产视频
|
一区二区三区日韩在线
|
久久久综合网
|
国产精品一区二区三区久久
|
欧美午夜理伦三级在线观看偷窥
|
一级a毛片
|
色综合久久久久综合99
|
亚洲精品久久久久久久久久久久久
|
日韩成人黄色
|
国产精品视频在线观看
|
一区二区三区在线观看视频
|
国产视频精品视频
|
sese综合|
欧洲国产伦久久久久久久
|
超级乱淫片国语对白免费视频
|
精品久久久一区
|
欧美大片在线看免费观看
|
久久99热精品免费观看牛牛
|
欧美激情欧美激情在线五月
|
99色在线视频
|
国产精品成人一区二区网站软件
|
国产中文字幕一区二区
|