程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> c語言實現小游戲_三子棋

c語言實現小游戲_三子棋

編輯:關於C語言

c語言實現小游戲_三子棋


游戲規則:玩家走一步,電腦走一步。當然電腦怎麼走的代碼也是你寫的。  
#include <stdio.h>
#include <stdlib.h>
/*******************************************************************************/
//函數功能:初始化棋盤
/*******************************************************************************/
void init_chess(char (*chess_arr)[3])
{
    int i,j;
    printf("游戲開始:\n");

    for(i = 0;i<3;i++)
    {
        for(j = 0;j<3;j++)
        {
            *(*(chess_arr+i)+j) = ' ';
        }
    }
    for(i = 0;i<3;i++)
    {
        printf(" %c | %c | %c" ,chess_arr[i][0],chess_arr[i][1],chess_arr[i][2]);
        if(i!=2)
        {
            printf("\n---|---|---\n");
        }
    }
    printf("\n");
}
/*******************************************************************************/
//函數功能:玩家輸入下棋的坐標
/*******************************************************************************/
void input_player_xy(char (*chess_arr)[3],int x,int y)
{
    int i = 0;
    if(chess_arr[x][y]==' ')
    {
        chess_arr[x][y] = 'Y';
    }
    else
    {
        printf("該步以走過\n");
    }
    for(i = 0;i<3;i++)
    {
        printf(" %c | %c | %c" ,chess_arr[i][0],chess_arr[i][1],chess_arr[i][2]);
        if(i!=2)
        {
            printf("\n---|---|---\n");
        }
    }
    printf("\n");
}
/*******************************************************************************/
//函數功能:打印電腦下棋的坐標
/*******************************************************************************/
void input_computer_xy(char (*chess_arr)[3])
{
    int i = 0;
    for(i = 0;i<3;i++)
    {
        printf(" %c | %c | %c" ,chess_arr[i][0],chess_arr[i][1],chess_arr[i][2]);
        if(i!=2)
        {
            printf("\n---|---|---\n");
        }
    }
    printf("\n");
}
/*******************************************************************************/
//函數功能:確定玩家下棋的坐標
/*******************************************************************************/
void input_player(char (*chess_arr)[3])
{
    int x = 0,y = 0;
    printf("請下您的棋:");
    scanf("%d%d",&x,&y);
    input_player_xy(chess_arr,x,y);

}
/*******************************************************************************/
//函數功能:確定電腦下棋的坐標
/*******************************************************************************/
void input_computer(char (*chess_arr)[3])
{
    int i =0,j = 0;
    for(i = 0;i<3;i++)
    {
        for(j = 0;j<3;j++)
        {
            if(chess_arr[i][j]==' ')
            {
              chess_arr[i][j] = 'O';
              goto flag;
            }
        }
    }
flag:
    input_computer_xy(chess_arr);
}
/*******************************************************************************/
//函數功能:主函數判斷電腦還是玩家獲勝
/*******************************************************************************/
int main()
{
    char chess_arr[3][3];
    int flag = 1;
     
    init_chess(chess_arr);
    while(flag)
    {
        int i = 0,j = 0;
        int diag_flag_player = 0,diag_flag_computer = 0,count = 0;
        input_player(chess_arr);
        input_computer(chess_arr);
        for(i = 0;i<3;i++)
        {
            if(((chess_arr[i][0]=='Y')&&(chess_arr[i][1]=='Y')&&(chess_arr[i][2]=='Y'))||
                 ((chess_arr[0][i]=='Y')&&(chess_arr[1][i]=='Y')&&(chess_arr[2][i]=='Y'))
              )
            {
                printf("player win!\n");
                flag = 0;
                break;
            }
            if(((chess_arr[i][0]=='O')&&(chess_arr[i][1]=='O')&&(chess_arr[i][2]=='O'))||
                      ((chess_arr[0][i]=='O')&&(chess_arr[1][i]=='O')&&(chess_arr[2][i]=='O'))
                   )
            {
                printf("computer win!\n");
                flag = 0;
                break;
            }
            for(j = 0;j<3;j++)
            {
                if(chess_arr[i][j]!=' ')
                {
                    count++;
                }
            }
            if(chess_arr[i][i]=='Y')
            {
                diag_flag_player++;
            }
            if(chess_arr[i][2-i]=='O')
            {
                diag_flag_computer++;
            }
        }
        if(diag_flag_player==3)
        {
            flag = 0;
            printf("player win!\n");
        }
        if(diag_flag_computer==3)
        {
            flag = 0;
            printf("computer win!\n");
        }
        if(count==9)
        {
            flag = 0;
            printf("player equal computer!\n");
        }
    }
    system("pause");
    return 0;
}

 

  由於讓大家看的清楚,沒有放在多個文件中。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved