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("");
    }
    
    

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

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?