1. 程式人生 > 程式設計 >基於C語言實現五子棋遊戲

基於C語言實現五子棋遊戲

採用二維陣列製作五子棋,用座標下棋。

請看程式碼。

基於C語言實現五子棋遊戲

include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
#include<time.h>
 
void menu()//目錄
{
 char xuanze = 0,xuanze2;
 printf("\n");
 printf("\n");
 printf("       #############################################\n");
 printf("           *五子棋小遊戲*\n");
 printf("           *1.雙人遊戲*\n");
 printf("           *2.人機對戰(暫未開放)\n");
 printf("           *3.遊戲須知\n");
 printf("       #############################################\n");
 printf("          請選擇選項,目前僅有 1 選項\n");
 printf("\n");
 printf("           ");
 xuanze = _getch();
 switch (xuanze)
 {
 case 1:
 break;
 case 3:
 printf("本遊戲是鍵盤輸入座標來落子的,白棋先落,第二次落子為黑色,依次落子。\n");
 printf("若落子座標非法則需重新落子。\n");
 printf("鍵盤輸入1直接進入遊戲\n");
 
 }
}
int t = 2;
int pan[20][20] =
{
 {1,2,3},{4,5,6},{7,8,9}
};
void qp()//棋盤
{
 int i,j,k = 0;
 printf(" ");
 for (i = 0; i < 10; i++)
 printf(" %d",i + 1);
 for (i = 10; i < 20; i++)
 printf("%d",i + 1);
 printf("\n");
 printf("1 ");
 //printf("┌ ┬ ┐├ ┼ ┤└ ┴ ┘│ ");©○●┼
 for (i = 0; i < 20; i++)
 for (j = 0; j < 20; j++)
 {
 switch (pan[i][j])
 {
 case 1:
 printf("┌ ");
 k++;
 if (k % 20 == 0)
 {
  printf("\n");
 }  
 break;
 case 2:
 printf("┬ ");
 k++;
 if (k % 20 == 0)
  printf("\n");
 break;
 case 3:
 printf("┐ ");
 k++;
 if (k % 20 == 0)
 {
  printf("%d",i+1);
  printf("\n");
  printf("%d ",i + 1);
 }
 break;
 case 4:
 printf("├ ");
 k++;
 if (k % 20 == 0)
  printf("\n");
 break;
 case 5:
 printf("┼ ");
 k++;
 if (k % 20 == 0)
  printf("\n");
 break;
 case 6:
 printf("┤ ");
 k++;
 if (k % 20 == 0)
 {
  printf("%d",i+1);
  printf("\n");
  if(i<8)
  printf("%d ",i + 2);
  if(i>7)
  printf("%d",i + 2);
 }  
 break;
 case 7:
 printf("└ ");
 k++;
 if (k % 20 == 0)
  printf("\n");
 break;
 case 8:
 printf("┴ ");
 k++;
 if (k % 20 == 0)
  printf("\n");
 break;
 case 9:
 printf("┘ ");
 k++;
 if (k % 20 == 0)
 {
  printf("%d",i + 1);
  printf("\n");  
 }  
 break;
 case 10:
 printf("○");
 k++;
 if (k % 20 == 0)
 {
  printf("%d",i+1);
  printf("\n");
 } 
 break;
 case 11:
 printf("●");
 k++;
 if (k % 20 == 0)
 {
  printf("%d",i+1);
  printf("\n");
 } 
 break;
 }
 }
 printf(" ");
 for (i = 0; i < 10; i++)
 printf(" %d",i + 1);
 printf("\n");
 printf("\n");
}
void play()
{
 int i,j;
 while (1)
 {
 printf("*請選擇落子座標(x,y): ");
 scanf_s("%d %d",&j,&i);
 printf("\n");
 if(i>0&&i<21&&j>0&&j<21)
 {
 if (pan[i - 1][j - 1] != 10 && pan[i - 1][j - 1] != 11)
 {
  if (t % 2 == 1)
  {
  t++;
  pan[i - 1][j - 1] = 11;
  break;
  }
  else if (t % 2 == 0)
  {
  t++;
  pan[i - 1][j - 1] = 10;  
  break;
  }
 }
 else if (pan[i-1][j-1] == 10 || pan[i-1][j-1] == 11)
 {
  printf("此處已經有棋子,請重新輸入\n");
  continue;
 }
 } 
 else if (i < 1 || i > 21 || j < 1 || j > 21)
 {
 printf("座標不合法,請重新輸入\n");
 continue;
 }
 } 
}
void test()
{
 int i,j;
 for(i=0;i<20;i++)
 for (j = 0; j < 20; j++)
 {
 if (pan[i][j] != 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9)
 {
 if (pan[i][j] == pan[i][j + 1]&&pan[i][j] == pan[i][j + 2]&&pan[i][j] == pan[i][j + 3]&&pan[i][j] == pan[i][j + 4])
 {
  if (pan[i][j] == 11)
  {
  printf("白棋獲勝\n");  
  }  
  if (pan[i][j] == 10)
  {
  printf("黑棋獲勝\n");  
  }  
 }
 if (pan[i][j] == pan[i + 1][j]&&pan[i][j] == pan[i + 2][j]&&pan[i][j] == pan[i + 3][j]&&pan[i][j] == pan[i + 4][j])
 {
  if (pan[i][j] == 11)
  {
  printf("白棋獲勝\n");  
  }  
  if (pan[i][j] == 10)
  {
  printf("黑棋獲勝\n");  
  }  
 }
 if (pan[i][j] == pan[i + 1][j + 1]&&pan[i][j] == pan[i + 2][j + 2]&&pan[i][j] == pan[i + 3][j + 3] &&pan[i][j]== pan[i + 4][j + 4])
 {
  if (pan[i][j] == 11)
  {
  printf("白棋獲勝\n");  
  }  
  if (pan[i][j] == 10)
  {
  printf("黑棋獲勝\n");  
  }  
 }
 if (pan[i][j] == pan[i - 1][j + 1]&&pan[i][j] == pan[i - 2][j + 2] &&pan[i][j]== pan[i - 3][j + 3]&&pan[i][j] == pan[i - 4][j + 4])
 {
  if (pan[i][j] == 11)
  {
  printf("白棋獲勝\n");  
  }  
  if (pan[i][j] == 10)
  {
  printf("黑棋獲勝\n");  
  } 
 }
 }
 }
}
int main()
{
 system("mode con cols=98 lines=48");
 SetConsoleTitleA("五子棋小遊戲"); //設定視窗
 menu();
 system("cls");
 while (1)
 {
 qp();
 test(); 
 play();
 system("cls");
 }
 system("pause");
 return 0;
}

更多有趣的經典小遊戲實現專題,分享給大家:

C++經典小遊戲彙總

python經典小遊戲彙總

python俄羅斯方塊遊戲集合

JavaScript經典遊戲 玩不停

java經典小遊戲彙總

javascript經典小遊戲彙總

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。