| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1744 人关注过本帖
标题:写了一个五子棋游戏,不过没有完善,只有横向判断胜利,其余的还没有加,求 ...
取消只看楼主 加入收藏
王黄丽
Rank: 1
等 级:新手上路
帖 子:53
专家分:4
注 册:2018-7-27
结帖率:100%
收藏
 问题点数:0 回复次数:0 
写了一个五子棋游戏,不过没有完善,只有横向判断胜利,其余的还没有加,求指导!!!
//编写一个控制台下的五子棋游戏
#include <stdio.h>

//定义一个二维数组表示棋盘
int piece[16][16];


//实现绘制棋盘的函数
void paint(void);
//实现下棋功能函数
void play(void);
//判断是否获胜
int judge(int player);

int main(void) {
    //绘制棋盘
    paint();
    //开始启动游戏
    play();
    return 0;
}

//判断是否获胜
int judge(int player) {
    //1.横向判断
    int i = 0, j = 0;
    for(i = 0; i < 16; i++){
        for(j = 0; j < 12; j++)
        {
            if((piece[i][j]&piece[i][j+i]&piece[i][j+2]&piece[i][j+3]&piece[i][j+4]) == player) {
                return 1;//表示获胜
            }
        }
    }
    //2.纵向判断
    //3.左上到右下的判断
    //4.右上到左下的判断
    return 0;//表示没有获胜
}

//实现下棋功能函数
void play(void) {
    int player = 0;//表示黑方
    while(1) {
        int x = 0, y = 0;
        if(0 == player) {
        printf("请黑方输入落子坐标:\n");
        scanf("%d%d", &x, &y);
        piece[x][y] = 1;
        //从新绘制棋盘
        paint();
        //判断是否获胜
        if(judge(player+1)) {
            printf("黑方胜利,游戏结束\n");
            break;
        }
        //切换下子方到白方
        player = 1;
        }
        if(1 == player){
            printf("请白方输入落子坐标:\n");
            scanf("%d%d",&x, &y);
            piece[x][y] = 2;
            //从新绘制棋盘
            paint();
            //判断是否获胜
            if(judge(player+1)) {
            printf("白方胜利,游戏结束\n");
            break;
        }
            //切换下子方
            player = 0;

        }
    }
}

//实现绘制棋盘的函数
void paint(void) {
    //1.绘制棋盘中的第一行坐标
    int i = 0;
    int j = 0;
    for (i = 0; i < 17; i++) {
        if(0 == i) {
            printf(" ");
        }
        else
        {
            printf("%x ", i - 1);
        }
    }
    printf("\n");
    //2.绘制棋盘中剩余的部分内容
   
    for(i = 0; i < 16; i++)
    {
        printf("%x ",i);
        for(j = 0; j < 16; j++)
        {
            if(0 == piece[i][j]) {
            printf("* ");
            }
            else if(1 == piece[1][j]) {
                printf("@ ");
            }
            else{
                printf("& ");
            }
        }
        printf("\n");
    }
}
搜索更多相关主题的帖子: 判断 int void player printf 
2018-08-03 11:49
快速回复:写了一个五子棋游戏,不过没有完善,只有横向判断胜利,其余的还没有加 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032451 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved