C语言循环案例

#include
#include
#include

int main(int argc,char *argv[])
{
    
    // 初始化随机数种子(以时间为种子)
    srand((unsigned)time(NULL));


    // 游戏主循环控制,默认是可以重复玩的
    int game_running = 1;


    // 游戏的头
    printf("======================================\n");
    printf("==         猜拳游戏 v1.0            ==\n");
    printf("==         作者:LITAO              ==\n");
    printf("======================================\n");
    

    while (game_running)
    {
        // 1.选择对手
        // 创建一个变量,用来储存对手对应的序号
        int opponent;

        while (1)
        {
            printf("\n选择对手:[1] 沈善正   [2] 仵广兴   [3] 李涛 \n");
            // 处理非数字输入
            if (scanf("%d",&opponent) != 1)
            {
                // 清空缓存区
                while (getchar() != '\n');
                printf("请输入正确的数字1~3!\n");
                continue;
            }
            
            // 验证输入范围
            if (opponent >= 1 && opponent <= 3) break;   // 输入正确,跳出验证环节
            printf("无效选择,请重新输入!\n");
        }


        // 显示对手信息
        const char *opponent_name = opponent == 1 ? "沈善正" : opponent == 2 ? "仵广兴" : "李涛";
        printf("选择的对手是:%s\n",opponent_name);

        // 2.玩家出拳
        // 定义一个变量,用来储存玩家出拳的序号
        int player_gesture;
        while(1)
        {
            printf("\n玩家出拳: [1] 石头   [2] 剪刀   [3] 布\n");

            // 处理非数字输入
            if (scanf("%d",&player_gesture) != 1)
            {
                while(getchar() != '\n');
                printf("请输入正确的数字:1~3\n");
                continue;
            }

            // 验证输入范围
            if (player_gesture >= 1 && player_gesture <= 3) break;
            printf("请输入正确的数\n");  
        }

        // 显示玩家出拳信息
        const char *player_gesture_name = player_gesture == 1 ? "石头" : player_gesture == 2 ? "剪刀" : "布";

        printf("出:%s\n",player_gesture_name);


        // 3.对手出拳
        // 创建一个变量作为对手出拳序号,这个序号需要随机生成0~2
        int computer_gesture = rand() % 3 + 1;
        const char *computer_gesture_name = computer_gesture == 1 ? "石头" : computer_gesture == 2 ? "剪刀" : "布";
        printf("%s出:%s\n",opponent_name,computer_gesture_name);

        // 4、判断胜负
        // 创建一个变量用来存放比较的结果
        int result = (player_gesture - computer_gesture + 3) % 3 ;
        printf("战况:");
        if(result == 0) printf("平局!\n");
        else if(result == 1) printf("您输了\n");
        else printf("您赢了\n");


        // 5.游戏退出
        printf("\n继续游戏?[Y/N] ");
        while (getchar() != '\n');

        // 获取用户输入
        char choice = getchar();

        // 修改循环状态
        game_running = choice == 'Y' || choice == 'y' ? 1 : 0;
    }

    printf("\n游戏结束!\n");
    return 0;
}
 

你可能感兴趣的:(算法)