鱼C论坛

 找回密码
 立即注册
查看: 1101|回复: 16

[技术交流] 一个Flip-game(C语言)【搬运】

[复制链接]
发表于 2023-7-11 10:16:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 yinda_peng 于 2023-8-11 20:02 编辑

起因是看到这个帖子:https://fishc.com.cn/forum.php?mod=viewthread&tid=230675

我想起来在我的一个计算机群里面有人分享过他做出来的一个跟这个类似的游戏,于是我找他要了源码
他的本意是做一个圆形的,但是由于时间问题最后仅仅是做出来一个直线的排列,但是原理是圆形,就是说点亮第一个,第二个和最后一个作为第一个的相邻(因为本意是圆形)会发生改变
一共有七盏灯,下面是源码:
#include <stdio.h>
#include <stdbool.h>

#define NUM_LIGHTS 7

// 翻转灯的状态
void flip(bool lights[], int index) {
    lights[index] = !lights[index];
}

// 点亮一个灯并熄灭它相邻的两个灯
void playFlipGame(bool lights[], int index) {
    flip(lights, index);  // 点亮中间的灯

    // 熄灭左边的灯
    int left = (index + NUM_LIGHTS - 1) % NUM_LIGHTS;
    flip(lights, left);

    // 熄灭右边的灯
    int right = (index + 1) % NUM_LIGHTS;
    flip(lights, right);
}

// 检查所有灯是否都熄灭
bool allLightsOff(bool lights[]) {
    for (int i = 0; i < NUM_LIGHTS; i++) {
        if (lights[i]) {
            return false;
        }
    }
    return true;
}

// 打印当前灯的状态
void printLights(bool lights[]) {
    for (int i = 0; i < NUM_LIGHTS; i++) {
        printf("%c ", lights[i] ? '*' : 'O');
    }
    printf("\n");
}

// 游戏主循环
void playFlipGameLoop() {
    bool lights[NUM_LIGHTS] = {true, true, true, true, true, true, true};
    int turns = 0;

    printf("===== Flipgame =====\n");
    printf("翻转灯的游戏开始!\n");

    while (!allLightsOff(lights)) {
        printf("\n回合 %d\n", turns + 1);
        printLights(lights);

        int choice;
        printf("请选择要翻转的灯 (1-%d): ", NUM_LIGHTS);
        scanf("%d", &choice);

        // 检查输入的合法性
        if (choice < 1 || choice > NUM_LIGHTS) {
            printf("无效的选择,请重新选择。\n");
            continue;
        }

        // 翻转灯的状态
        playFlipGame(lights, choice - 1);

        turns++;
    }

    printf("\n恭喜!你用了 %d 个回合,成功熄灭了所有的灯。\n", turns);
}

int main() {
    playFlipGameLoop();

    return 0;
}
代码运行:
QQ图片20230711101215.png
相比于https://fishc.com.cn/forum.php?mod=viewthread&tid=230675   这个帖子,我觉得他的还是比较简陋的了(小声)

评分

参与人数 2荣誉 +4 贡献 +6 收起 理由
python爱好者. + 3 鱼C有你更精彩^_^
歌者文明清理员 + 4 + 3 不错,我很喜欢命令行程序(小声:ubuntu?)

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-7-11 10:19:27 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-11 10:19:31 | 显示全部楼层

回帖奖励 +3 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-7-11 10:20:58 | 显示全部楼层

在我的强烈要求下他加上了注释hh
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-11 10:26:45 | 显示全部楼层
yinda_peng 发表于 2023-7-11 10:20
在我的强烈要求下他加上了注释hh

看不懂C语言,我是把几个相邻的位置用列表存起来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-11 10:33:59 | 显示全部楼层

回帖奖励 +3 鱼币

gezhe
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-11 10:45:35 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-11 11:19:45 | 显示全部楼层

回帖奖励 +3 鱼币

厉害哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-11 12:14:17 | 显示全部楼层

回帖奖励 +3 鱼币

厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-11 12:40:10 | 显示全部楼层

回帖奖励 +3 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-11 14:34:20 | 显示全部楼层

回帖奖励 +3 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-11 22:04:41 | 显示全部楼层
康康
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-12 15:37:48 | 显示全部楼层

回帖奖励 +3 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-12 15:38:41 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-12 21:35:59 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-13 08:47:29 | 显示全部楼层

回帖奖励 +3 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-26 11:55:35 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 09:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表