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 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助