ads3579 2021-06-16 22:54 采纳率: 69.2%
浏览 70
已采纳

<C语言>大佬们求代码!!急急急

以下是题目:

编一个枪,石头,剪刀,布的游戏,

枪赢剪刀和石头,

枪赢不了布,

剪刀输石头,

剪刀赢布,

石头输布,

获胜者每人获得一分。如果两个玩家都选择了相同的符号,则为平局,并且双方都不会得到一 分。为此,首先实现以下功能:

int computerwahl(void)  (1 = 枪, 2 = 剪刀, 3 = 石头, 4 = 布) 计算器永远不会重复上次的情况

int 用户选择

int 赢者 (int symbolPlayer1, int symbolPlayer2)

如果玩家 1 的符号赢了,则函数返回 1,如果玩家 2 赢了,则返回 2,如果是平局, 则返回 0。

在主程序中调用这些函数是为了让用户与计算机对战,直到两者之一赢得 10 分为止。

必须使用到自定义函数,并创建单独的项目!

 

  • 写回答

1条回答 默认 最新

  • soar3033 2021-06-17 08:30
    关注
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int computerwahl(void) {
        static int last;
        int value;
        do {
            value = rand() % 4;
        }     while (last == value);
        printf("电脑选择:%d\n",value);
        return value;
    }
    
    int user(void) {
        int input;
        while (true)
        {
            printf("0枪、1石头、2剪刀、3布输入选择:");
            scanf_s("%d", &input);
            if (input>3)
            {
                printf("输入有误,重新输入\n");
            }
            else
            {
                break;
            }
        }
        return input;
    }
    
    int winner(int symbolPlayer1, int symbolPlayer2) {
        
        if (symbolPlayer1 == symbolPlayer2)
        {
            return 0;
        }
        if (symbolPlayer1 == 0 && (symbolPlayer2 == 1 || symbolPlayer2 == 2))
        {
            return 1;
        }
        if (symbolPlayer1 == 1 && symbolPlayer2 == 2)
        {
            return 1;
        }
        if (symbolPlayer1 == 2 && symbolPlayer2 == 3)
        {
            return 1;
        }
        if (symbolPlayer1 == 3 && symbolPlayer2 == 1)
        {
            return 1;
        }
        if (symbolPlayer1 == 0 && symbolPlayer2 == 3)
        {
            return 2;
        }
    
        if (symbolPlayer2 == 0 && (symbolPlayer1 == 1 || symbolPlayer1 == 2))
        {
            return 2;
        }
        if (symbolPlayer2 == 1 && symbolPlayer1 == 2)
        {
            return 2;
        }
        if (symbolPlayer2 == 2 && symbolPlayer1 == 3)
        {
            return 2;
        }
        if (symbolPlayer2 == 3 && symbolPlayer1 == 1)
        {
            return 2;
        }
        if (symbolPlayer2 == 0 && symbolPlayer1 == 3)
        {
            return 1;
        }
        return 0;
    }
    
    int main()
    {
        int computer_value=0,user_value=0;
        while (computer_value<10 && user_value<10)
        {
            switch (winner(computerwahl(), user()))
            {
            case 1:
                computer_value++;
                printf("电脑得一分\n");
                break;
            case 2:
                user_value++;
                printf("玩家得一分\n");
                break;
            default:
                printf("平局\n");
                break;
            }
            printf("电脑分数%d,玩家分数%d\n-------------------\n",computer_value,user_value);
        }
        if (computer_value==10)
        {
            printf("电脑赢了\n");
        }
        if (user_value==10)
        {
            printf("玩家赢了\n");
        }
        printf("按任意键退出\n");
        scanf_s("");
    }
    
    

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 如何推断此服务器配置
  • ¥15 关于github的项目怎么在pycharm上面运行
  • ¥15 内存地址视频流转RTMP
  • ¥100 有偿,谁有移远的EC200S固件和最新的Qflsh工具。
  • ¥15 找一个QT页面+目标识别(行人检测)的开源项目
  • ¥15 有没有整苹果智能分拣线上图像数据
  • ¥20 有没有人会这个东西的
  • ¥15 cfx考虑调整“enforce system memory limit”参数的设置
  • ¥30 航迹分离,航迹增强,误差分析
  • ¥15 Chrome Manifest扩展引用Ajax-hook库拦截请求失败