自学内容网 自学内容网

C语言模拟王者荣耀排位赛禁用和选择英雄【注释详细】

 Hello,各位兄弟,我们又见面了,今天攀哥给大家带来的是用C语言模拟实现王者荣耀排位赛中的ban选英雄,代码比较简单,兄弟们操练起来吧!!

给波关注,不过分吧~~

【需求】

王者荣耀排位赛中 ban 选模式

  1. 敌我双方轮流禁用英雄,每次禁用 1 名英雄,敌我双方各禁 3 名英雄 (优先这个功能做
  2. 敌我双方轮流选英雄,每次选 1 名英雄,敌我双方各选 5 名英雄

我方手动输入禁用的英雄,地方随机禁用英雄

英雄池已经贴心的为大家准备好了,像我这样贴心帅气的博主已经很难找到了,

char hero_pool[61][20] = {"李白", "王昭君", "公孙离", "庄周", "妲己", "安琪拉", "后羿", "鲁班七号", "凯", "镜", "关羽", "典韦", "夏侯惇", "张飞", "赵云", "李元芳", "狄仁杰",
                "赵怀真", "艾琳", "马可波罗", "米莱迪", "廉颇", "刘邦", "项羽", "虞姬", "瑶", "明世隐", "孙尚香", "孙悟空", "猪八戒",
                "金蝉子", "甄姬", "雅典娜", "女娲", "鬼谷子", "韩信", "兰陵王", "杨戬", "哪吒", "杨玉环", "百里守约", "百里玄策", "伽罗", "苏烈", "小乔"
                , "大乔", "墨子", "李信", "盾山", "东皇太一", "白起", "芈月", "貂蝉", "吕布", "曹操", "蔡文姬", "云中君", "海月", "嫦娥", "盘古", "狂铁", "黄忠"};

大家可以先自己尝试一下,先不要看下面的参考代码(我知道我是拦不住的)

【参考代码】

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>

int main(){
// 英雄池
char hero_pool[61][20] = {"李白", "王昭君", "公孙离", "庄周", "妲己", "安琪拉", "后羿", "鲁班七号", "凯", "镜", "关羽", "典韦", "夏侯惇", "张飞", "赵云", "李元芳", "狄仁杰","赵怀真", "艾琳", "马可波罗", "米莱迪", "廉颇", "刘邦", "项羽", "虞姬", "瑶", "明世隐", "孙尚香", "孙悟空", "猪八戒","金蝉子", "甄姬", "雅典娜", "女娲", "鬼谷子", "韩信", "兰陵王", "杨戬", "哪吒", "杨玉环", "百里守约", "百里玄策", "伽罗", "苏烈", "小乔", "大乔", "墨子", "李信", "盾山", "东皇太一", "白起", "芈月"};

    // 存放我方禁用英雄的数组
    char my_ban[3][20];

    // 存放敌方禁用英雄的数组
    char di_ban[3][20];

    // 禁用英雄不能重复禁用:
    // 1. 简单的方法:
    //    1) 从英雄池中随机选择1个英雄
    //    2) 将这个英雄存放到,我方的禁用英雄数组中
    //    3) 将这个英雄从英雄池数组中删掉,这样下次再随机英雄的时候,随机不到这个英雄了

    // 2. 复杂的方法:
    //    1) 从英雄池中随机选择1个英雄
    //    2) 拿着这个英雄分别在 我方和敌方禁用英雄列表中查看一下是否有重复的
    //    3) 如果没有重复的就放进去,有重复的再重新随机一个英雄

    // 计算出英雄池有多少个英雄
    int len = sizeof(hero_pool)/sizeof(hero_pool[0]);

    // 开始禁用英雄,敌我双方各禁3个英雄,循环3次禁用3个英雄
    for (int i = 0; i < 3; ++i)
    {
    // 首先输入一个英雄,如果这个英雄被禁用了或者在英雄池中不存在,那么就重新输入英雄
    do{
    printf("请输入第%d位要禁用的英雄:",i+1);
    char name[20];
    scanf("%s",name); // 获取英雄名称

    // 标记为-1,表示不能存入禁用英雄的数组中
    // 标记为其他,就可以存入到禁用英雄数组中
    int flag=-1; 
    // 判断这个英雄的名称,是否在英雄池中,
    // 并且是否已经被我放或者敌方禁用了

    // 1. 判断输入的英雄,是否在英雄池中
    for(int m=0;m<len;m++){
    // 如果当前英雄名和输入的英雄名相同
    if(strcmp(hero_pool[m],name)==0){
    // 说明英雄在英雄池中
    // 修改标记,暂时标记为可以可以存储到数组中
    flag = m; // m就是英雄在英雄池中的下标
    break;
    }
    }

    // 如果出了循环,此时flag是-1
    if(flag==-1){
    printf("~暂无此英雄~\n");
    //结束本次循环,不再做后面的代码
    continue;
    }

    // 2.判断是否在my_ban数组或者di_ban数组中,是否被我方或者敌方禁用了
    for(int m=0;m<3;m++){
    // 如果输入的英雄和我方禁用的英雄名字相同
    if(strcmp(name,my_ban[m])==0){
    printf("该英雄已经被我方禁用,请重新选择\n");
    // 修改状态,将标记改为不可用状态
    flag = -1;
    break;
    }

    // 如果输入的英雄和敌方禁用的英雄名字相同
    if(strcmp(name,di_ban[m])==0){
    printf("该英雄已经被敌方禁用,请重新选择\n");
    flag = -1;
    break;
    }
    }

    // 经过上面层层筛选,最后走到这里,flag不为-1
    if(flag!=-1){ // 这个输入的名称是可用的
    // 将名称加入到我方禁用英雄列表中
    strcpy(my_ban[i],hero_pool[flag]);
    printf("我方禁用了:%s\n",my_ban[i]);
    break; // 结束掉do while循环
    }


    }while(1); //循环,直到找到能禁的英雄


    //敌方禁用英雄(随机禁用)
    // 1. 设置随机数种子
    srand(time(0));

    do{
    // 在英雄池的范围内随机一个英雄出来
    int index = rand()%len;
    // 根据随机下标,选择一个英雄
    // hero_pool[index];
    // 只需要判断当前这个随机出来的英雄是否被我方或者敌方禁用了
    int flag = index;
    for (int m = 0; m < 3; ++m)
    {
    // 如果输入的英雄和我方禁用的英雄名字相同
    if(strcmp(hero_pool[index],my_ban[m])==0){
    // 修改状态,将标记改为不可用状态
    flag = -1;
    break;
    }

    // 如果输入的英雄和敌方禁用的英雄名字相同
    if(strcmp(hero_pool[index],di_ban[m])==0){
    flag = -1;
    break;
    }
    }


    if(flag!=-1){
    // 将随机出来的英雄,放入到敌方禁用列表中
    strcpy(di_ban[i],hero_pool[flag]);
    printf("敌方禁用了:%s\n",di_ban[i] );
    break;// 结束循环
    }


    }while(1);


    }


    printf("-----------我方禁用的英雄------------\n");
    for (int i = 0; i < 3; ++i)
    {
    printf("%s\t", my_ban[i]);
    }
    printf("\n");

    printf("-----------敌方禁用的英雄------------\n");
    for (int i = 0; i < 3; ++i)
    {
    printf("%s\t", di_ban[i]);
    }
    printf("\n");


return 0;
}

没点关注的宝宝,点一下关注!

点完关注的宝宝,可以撤了!!去关注一下攀哥的小破站,墨轩大楼 O(∩_∩)O哈哈~ 


原文地址:https://blog.csdn.net/yueyehuguang/article/details/142816072

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!