可随意设置棋盘大小的#字棋

#define _CRT_SECURE_NO_DEPRECATE
#include <stdio.h>
#include <string.h>
#define ROW 2
#define COL 2
void menu(){
    printf("******************\n");
    printf("****开始游戏->1****\n");
    printf("****游戏介绍->2****\n");
    printf("****退出游戏->0****\n");
    printf("******************\n");
};

void InitBoard(char instruct[ROW][COL],char elements[ROW][COL], int row,int col){
    int i, j;
    for(i=0;i<row;i++){
        for(j=0;j<col;j++){
            instruct[i][j]='-';
            elements[i][j]=' ';
        }
    } 
};
void Display(char instruct[ROW][COL],char elements[ROW][COL],int row,int col){
    int i, j;
    for(i=0;i<row;i++){
        for(j=0;j<col;j++){
            printf(" %c ",elements[i][j]);
            if(j<col-1)
            printf("|");
        }
        printf("\n");
        for(j=0;j<col;j++){
            printf("%c%c%c",instruct[i][j],instruct[i][j],instruct[i][j]);
            if(j<col-1)
                printf("|");
        }
        printf("\n");
    } 
};
void player1(int x,int y,char elements[ROW][COL]){
    if(elements[x-1][y-1]==' ')
        elements[x-1][y-1]='#';
    else{
        printf("位置已被占用,请重新输入坐标:");
        scanf("%d,%d",&x,&y);
        while(x>COL||x<0||y>COL||y<0){
            printf("输入错误,请重新输入坐标:");
            scanf("%d,%d",&x,&y);
        };
        player1(x,y,elements);
    };
    
};
void player2(int x,int y,char elements[ROW][COL]){
    if(elements[x-1][y-1]==' ')
        elements[x-1][y-1]='@';
    else{
        printf("位置已被占用,请重新输入坐标:");
        scanf("%d,%d",&x,&y);
        while(x>COL||x<0||y>COL||y<0){
            printf("输入错误,请重新输入坐标:");
            scanf("%d,%d",&x,&y);
        };
        player2(x,y,elements);
    };
    
};
void game(){
    int x,y,num=0;
    char instruct[ROW][COL]={0};
    char elements[ROW][COL]={};
    InitBoard(instruct,elements,ROW,COL);
    Display(instruct,elements,ROW,COL);
    while(num!=COL*ROW){
        printf("玩家1下棋,请输入坐标:");
        scanf("%d,%d",&x,&y);
        while(x>COL||x<0||y>COL||y<0){
            printf("输入错误,请重新输入坐标:");
            scanf("%d,%d",&x,&y);
        };
        player1(x,y,elements);
        Display(instruct,elements,ROW,COL);
        num+=1;
        if(num>=COL*ROW)
            break;
        printf("玩家2下棋,请输入坐标:");
        scanf("%d,%d",&x,&y);
        while(x>COL||x<0||y>COL||y<0){
            printf("输入错误,请重新输入坐标:");
            scanf("%d,%d",&x,&y);
        };
        player2(x,y,elements);
        Display(instruct,elements,ROW,COL);
        num+=1;
        if(num>=COL*ROW)
            break;
        
    };
    printf("游戏结束!!!");
};

void introduction(){
    printf("该游戏为内测玩家使用,井字棋.\n");
};

int main()
{
    int input,k=0;
    do{
        menu();
        printf("请输入你选择的序号:");
        scanf("%d",&input);
        switch (input) {
            case 1:
                game();
                k=1;
                break;
            case 2:
                introduction();
                break;
            case 0:
                break;
            default:
                break;
        }
        if(k)
            break;
    }while(input);
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值