10dayC语言项目 《后宫选妃》

1、下旨选妃, 即新增加一位新的妃子,然后其他妃子的好感度减 10 点。

2、 翻牌宠幸, 主要是改变妃子的等级状态,增加其好感度,减少其他妃子好感度。

3、 打入冷宫, 即删除一位妃子,然后其他所有的妃子好感度加 10 点。

4、 朕的爱妃呢 主要查找功能,根据输入的名字查找妃子信息。

 

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

void menu();
void state_list(char names[10][10] , char levels[10][10] , int loves[10] , int count);
int fun1(char names[10][10] , char levels[10][10] , int loves[10] , int count);
void fun2(char names[10][10] , char levels[10][10] , int loves[10] , int count);
void level_rise(char name[10] , char level[10] ,char levels[10][10] ,int temp);
int fun3(char names[10][10] , char levels[10][10] , int loves[10] , int count);
void fun4(char names[10][10] , char levels[10][10] , int loves[10] , int count);

int main()
{
    int days=1,n;//时间,选项“1,2,3,4 ” 
    int count=4; //当前已有妃子的数目  
    char names[10][10]={"沉鱼","落雁","闭月","羞花"};//妃子姓名 
    char levels[10][10]={"贵妃","","","贵人"};//妃子等级;皇贵妃,贵妃(100-90),妃(89-80),嫔(79-70),贵人(69-65),常在(64-60),答应 
//    char levelz[10][10]={"皇后","皇贵妃","贵妃","妃","嫔","贵人","常在","答应"};
    int loves[10]={90,80,70,65}; //好感度 
    while(1)
    {
        
        printf("第%d天:\n", days++);
        menu();
        scanf("%d",&n);
        getchar();
        if(n==1)    //调用选项1 
            count = fun1(names , levels ,  loves, count);
        if(n==2)    //调用选项2 
            fun2(names , levels ,loves, count);    
        if(n==3)    //调用选项3 
            count = fun3(names , levels ,  loves, count); 
        if(n==4)    //调用选项4 
            fun4(names , levels ,  loves, count);    
    }
    return 0;
}
//选项菜单 
void  menu()
{
    printf("1.皇帝陛下下旨选妃!\t\t(增加)\n"); 
    printf("2.翻牌宠幸,嘿嘿嘿\t\t(修改状态)\n"); 
    printf("3.打入冷宫,滚滚滚\t\t(删除)\n"); 
    printf("4.爱妃!朕的爱妃你在哪?\t(查找)\n"); 
    printf("陛下请选择:"); 
}
//1.皇帝陛下下旨选妃(增加)即新增加一位新的妃子,然后其他妃子的好感度减 10 点。
int fun1(char names[10][10] , char levels[10][10] , int loves[10] , int count)
{
    int i;
    char name[10];
    printf("爱江山更爱美人,万家千丽一点红~\n");
    printf("娘娘名讳:");
    scanf("%s",name); 
    printf("\n");
    int flag=0;
    for(i=0;i<count;i++)
    {    
        if(strcmp(names[i],name)==0)
            flag=1;
    }
    if(flag!=1)
    {    
        strcpy( names[count] , name );
        strcpy( levels[count] , "" ); //新纳入宫中的妃子都深得皇上喜爱,初始等级都为“妃 ” 
        loves[count]=80;                //初始好感度80 
        for(i=0;i<count;i++)
            loves[i]-=10;
        count++;
        printf("新增妃子,其他妃嫔好感度-10\n");        
    }        
    else
    {
        printf("美人已在后宫之中,陛下太贪心了呢!");
    } 
    printf("\n");
    state_list(names , levels ,  loves, count);    //调用状态列表 
    printf("\n");
    return count;        //新纳入了妃子,数目增加 
}
//2.翻牌宠幸,嘿嘿嘿(修改状态)主要是改变妃子的等级状态,增加其好感度,减少其他妃子好感度。
void fun2(char names[10][10] ,char levels[10][10] , int loves[10] , int count)
{
    char name[10];
    int i,temp;
    printf("陛下请输入今晚要宠幸的妃子的姓名:");
    scanf(" %s",name); 
    for(i=0;i<count;i++)
    {
        if(strcmp(names[i],name)==0)
        {
            temp=i;
            loves[temp]+=10;
        }            
    }
    for(i=0;i<temp;i++)
    {
        loves[i]-=10;
    }
    for(i=temp+1;i<count;i++)
    {
        loves[i]-=10;
    }
    char level[10];
    strcpy( level , levels[temp]);
    level_rise( name , level , levels, temp );   //调用等级提升函数 
    printf("\n");
    printf("憔悴容华怯对春,寂寞宫殿锁闭门。\n");
    printf("此身却羡宫中树,不失芳时雨露思。\n");
    printf("我恨这深宫清冷,所有娘娘好感度-10!\n");
    printf("\n");
    state_list( names , levels , loves , count);
    printf("\n");
    
}
//等级提升,宠幸一次等级提升一级 
void level_rise(char name[10] , char level[10], char levels[10][10] ,int temp)
{
    if(strcmp(level,"贵人")==0)
    {
        strcpy( levels[temp] , "" );
    }    
    if(strcmp(level,"")==0)
    {
        strcpy( levels[temp] , "" );
    }    
    if(strcmp(level,"")==0)
    {
        strcpy( levels[temp] , "贵妃" );
    }    
    if(strcmp(level,"贵妃")==0)
    {
        strcpy( levels[temp] , "皇贵妃" );
    }    
    if(strcmp(level,"皇贵妃")==0)
        strcpy( levels[temp] , "皇后" );
    printf("\n");
    printf("***************************\n");
    printf("Duang~%s的等级提升到%s\n",name,levels[temp]);
    printf("***************************\n");        
}
//3.打入冷宫,滚滚滚(删除)即删除一位妃子,然后其他所有的妃子好感度加 10 点。
int fun3(char names[10][10] , char levels[10][10] , int loves[10] , int count)
{
    char name[10];
    int i,temp;
    printf("陛下要将哪位娘娘打入冷宫:");
    scanf("%s",name); 
    int flag=0;
    for(i=0;i<count;i++)
    {    
        if(strcmp(names[i],name)==0)
        {
            flag=1;
            temp=i;
        }        
    }
    if(flag==1)
    {    for(i=temp;i<count;i++)
        {
            strcpy( names[i] , names[i+1] );
            strcpy( levels[i] , levels[i+1] );
            loves[i]=loves[i+1];    
        } 
        for(i=0;i<count-1;i++)
            loves[i]+=10;
        count--;
        printf("%s被打入冷宫,终于除掉这个小贱人了,哈哈哈。所有娘娘好感度+10!\n",name);        
    }
    else
    {
        printf("虚惊一场,无人打入冷宫,该吃吃该喝喝,快乐人生"); 
    }            
    printf("\n");
    state_list(names , levels ,  loves, count);
    printf("\n");
    return count;
}
//4.爱妃!朕的爱妃你在哪?(查找)主要查找功能,根据输入的名字查找妃子信息
void fun4(char names[10][10] , char levels[10][10] , int loves[10] , int count)
{
    int i;
    char name[10];
    printf("陛下您要找哪位娘娘,请输入姓名:");
    scanf("%s",name); 
    printf("\n");    
    printf("爱妃!朕可算找到你了,朕愿意为了你烽火戏诸侯!");    
    printf("%s的好感度+10\n",name);    
    printf("\n");
    for(i=0;i<count;i++)
    {
        if(strcmp(names[i],name)==0)
            loves[i]+=10;            
    }
    printf("\n");
    state_list(names , levels ,  loves, count);
    printf("\n");     
}
//状态列表 
void  state_list(char names[10][10] , char levels[10][10] , int loves[10] , int count)
{
    int i;
    printf("%-8s%-8s%-8s\n","姓名","等级","好感度"); 
    printf("----------------------\n");
    for(i=0;i<count;i++)
        printf("%-8s%-8s%-8d\n",names[i],levels[i],loves[i]);
}

 

转载于:https://www.cnblogs.com/zhujiankang/p/11270832.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值