用C实现模拟cf(穿越火线)抽奖

琢磨了一段时间后,突发奇想用dev做了一个项目,模拟了cf游戏中的抽奖,目前只做了“幻神夺宝”部分,其他的抽奖懒得敲了,代码差不多,只需修改部分就行

如果运行代码选择了其他的抽奖选项,将会直接退出程序

该项目分为三个文件:

test.c——用于存放主函数

#include<stdio.h>

int main()
{
	int ctrl=1;
	while(ctrl==1)
	{
		select1();
		printf("\n");
		ctrl=0; 
	}
	return 0;
}

game.h——用于声明函数、头文件以及存放变量

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

void select1(); 
void select2();
void fj();
void HS();
void HuanS();
void dh1();

int ys=10;
int jf=0;
int hs=0;	
int ty=0;
int zf=0;
int zl=0;
int qb=0;
int zq=0;
int ly=0;
int ts=0;
int tl=0;
int slb=0;
int st=0;

game.c——存放各个函数

#include"game.h"

void HS()
{
	int m=0;
	m=rand()%1000+1;
	if(m==1||m==2)
	{
		printf("恭喜你获得道具:M200-幻神\n");
		hs++;
	}
	if(m==3||m==4)
	{
		printf("恭喜你获得道具:王者涂鸦\n");
		ty++;
	}
	if(m==5||m==6||m==7||m==8)
	{
		printf("恭喜你获得道具:觉醒版王者之锋\n");
		zf++;
	}
	if(m==9||m==10||m==11||m==12)
	{
		printf("恭喜你获得道具:觉醒版王者之灵\n");
		zl++;
	}
	if(m>=13 && m<=23)
	{
		printf("恭喜你获得道具:炫金千变\n");
		qb++;
	}
	if(m>=24 && m<=39) 
	{
		printf("恭喜你获得道具:Barrett-朱雀\n");
		zq++;
	}
	if(m>=40 && m<=55)
	{
		printf("恭喜你获得道具:100积分\n");
		jf+=100;
	}
	if(m>=56 && m<=76)
	{
		printf("恭喜你获得道具:加特林-炼狱\n");
		ly++;
	}
	if(m>=77 && m<=97)
	{
		printf("恭喜你获得道具:50积分\n");
		jf+=50;
	}
	if(m>=98 && m<=128)
	{
		printf("恭喜你获得道具:沙鹰-天神\n");
		ts++; 
	}
	if(m>=129 && m<=169)
	{
		printf("恭喜你获得道具: 屠龙\n");
		tl++;
	}
	if(m>=170 && m<=270)
	{
		printf("恭喜你获得道具:20积分\n");
		jf+=20;
	}
	if(m>=271 && m<=321)
	{
		printf("恭喜你获得道具:A背包套装-手雷包\n"); 
		slb++;
	}
	if(m>=322 && m<=382)
	{
		printf("恭喜你获得道具:王者之石\n");
		st++;
	}
	if(m>=383 && m<=583)
	{
		printf("恭喜你获得道具:10积分\n");
		jf+=10;
	} 
	if(m>583)
	{
		printf("恭喜你获得道具:5积分\n");
		jf+=5;
	}
	printf("当前积分:%d\n",jf);
}

void dh1()
{
	printf("当前积分:%d\n",jf);
	printf("请选择你要兑换的道具:\n");
	printf("1.M200-幻神   3000积分\n");
	printf("2.王者涂鸦   3000积分\n");
	printf("3.觉醒版王者之锋   1500积分\n");
	printf("4.觉醒版王者之灵   1500积分\n");
	printf("5.炫金千变   900积分\n");
	printf("6.Barrett-朱雀   900积分\n");
	printf("7.加特林-炼狱   750积分\n");
	printf("8.沙鹰-天神   450积分\n");
	printf("9.屠龙   450积分\n");
	printf("10.A背包套装-手雷包   300积分\n");
	printf("11.王者之石   50积分\n");
	printf("12.退出\n");
	int a=0;
	scanf("%d",&a);
	switch(a)
	{
		case 1:
			if(jf<3000)
			{
				printf("积分不足!\n");
			}
			else
			{
				jf-=3000;
				hs++;
				printf("兑换完毕!\n");
			}
		break;
		case 2:
			if(jf<3000)
			{
				printf("积分不足!\n");
			}
			else
			{
				jf-=3000;
				ty++;
				printf("兑换完毕!\n");
			}
		break;
		case 3:
			if(jf<1500)
			{
				printf("积分不足!\n");
			}
			else
			{
				jf-=1500;
				zf++;
				printf("兑换完毕!\n");
			}
		break;
		case 4:
			if(jf<1500)
			{
				printf("积分不足!\n");
			}
			else
			{
				jf-=1500;
				zl++;
				printf("兑换完毕!\n");
			}
		break;
		case 5:
			if(jf<900)
			{
				printf("积分不足!\n");
			}
			else
			{
				jf-=900;
				qb++;
				printf("兑换完毕!\n");
			}
		break;
		case 6:
			if(jf<900)
			{
				printf("积分不足!\n");
			}
			else
			{
				jf-=900;
				zq++;
				printf("兑换完毕!\n");
			}
		break;
		case 7:
			if(jf<750)
			{
				printf("积分不足!\n");
			}
			else
			{
				jf-=750;
				ly++;
				printf("兑换完毕!\n");
			}
		break;
		case 8:
			if(jf<450)
			{
				printf("积分不足!\n");
			}
			else
			{
				jf-=450;
				ts++;
				printf("兑换完毕!\n");
			}
		break;
		case 9:
			if(jf<450)
			{
				printf("积分不足!\n");
			}
			else
			{
				jf-=450;
				tl++;
				printf("兑换完毕!\n");
			}
		break;
		case 10:
			if(jf<300)
			{
				printf("积分不足!\n");
			}
			else
			{
				jf-=300;
				slb++;
				printf("兑换完毕!\n");
			}
		break;
		case 11:
			if(jf<50)
			{
				printf("积分不足!\n");
			}
			else
			{
				jf-=50;
				st++;
				printf("兑换完毕!\n");
			}
		break;
		case 12:
			break;
		default:
			printf("选择错误,请重新选择!\n\n");
			dh1();
	}
}

void HuanS()
{
	int ctrl=1;
	while(ctrl==1)
	{
		printf("请选择:1.单抽    2.十连    3.兑换    4.返回\n");
	    int a=0;
	    int i=0;
	    scanf("%d",&a);
	    switch(a)
	    {
	    	case 1:
	    		if(ys<1)
	    		{
	    			printf("钥匙不足!\n");
				}
				else
				{
					ys--;
	    		    HS();
				}
	    		break;
	    	case 2:
	    		if(ys<10)
	    		{
	    			printf("钥匙不足!\n");
				}
				else
				{
					ys-=10;
	    		    for(i=1;i<10;i++)
	    		    {
					   HS();
				    }
				}
				break;
			case 3:
				dh1();
				break;
			case 4:
				select2();
				ctrl=0;
				break;
			default:
				printf("选择错误,请重新选择!\n\n");
				HuanS();
		}
    }
}

void select2()
{
	printf("请选择想尝试的抽奖:\n");
	printf("1.幻神夺宝     2.传说圣灵     3.王者许愿      4.返回\n");
	int a=0;
	scanf("%d",&a);
	switch(a)
	{
		case 1:
			HuanS();
			break;
		case 2:
			break;
		case 3:
			break;
		case 4:
			select1();
			break;
		default:
			printf("选择错误,请重新选择!\n\n");
			select2();
	}
}

void fj()
{
	printf("请选择要分解的道具:\n");
	printf("1.M200-幻神   24把钥匙\n");
	printf("剩余数量:%d\n",hs); 
	printf("2.王者涂鸦   24把钥匙\n");
	printf("剩余数量:%d\n",ty); 
	printf("3.觉醒版王者之锋   12把钥匙\n");
	printf("剩余数量:%d\n",zf);
	printf("4.觉醒版王者之灵   12把钥匙\n");
	printf("剩余数量:%d\n",zl);
	printf("5.炫金千变   7把钥匙\n");
	printf("剩余数量:%d\n",qb);
	printf("6.Barrett-朱雀   7把钥匙\n");
	printf("剩余数量:%d\n",zq);
	printf("7.加特林-炼狱   6把钥匙\n");
	printf("剩余数量:%d\n",ly);
	printf("8.沙鹰-天神   4把钥匙\n");
	printf("剩余数量:%d\n",ts);
	printf("9.屠龙   4把钥匙\n");
	printf("剩余数量:%d\n",tl);
	printf("10.A背包套装-手雷包   2把钥匙\n");
	printf("剩余数量:%d\n",slb);
	printf("11.王者之石   1把钥匙\n");
	printf("剩余数量:%d\n",st);
	printf("12.返回\n");
	int a=0;
	scanf("%d",&a);
	switch(a)
	{
		case 1:
			if(hs<1)
			{
				printf("道具不足!\n");
			}
			else
			{
				jf--;
				ys+=24;
				printf("分解完毕!\n");
			}
		break;
		case 2:
			if(ty<1)
			{
				printf("道具不足!\n");
			}
			else
			{
				ty--;
				ys+=24;
				printf("分解完毕!\n");
			}
		break;
		case 3:
			if(zf<1)
			{
				printf("道具不足!\n");
			}
			else
			{
				zf--;
				ys+=12;
				printf("分解完毕!\n");
			}
		break;
		case 4:
			if(zl<1)
			{
				printf("道具不足!\n");
			}
			else
			{
				zl--;
				ys+=12;
				printf("分解完毕!\n");
			}
		break;
		case 5:
			if(qb<1)
			{
				printf("道具不足!\n");
			}
			else
			{
				qb--;
				ys+=7;
				printf("分解完毕!\n");
			}
		break;
		case 6:
			if(zq<1)
			{
				printf("道具不足!\n");
			}
			else
			{
				zq--;
				ys+=7;
				printf("分解完毕!\n");
			}
		break;
		case 7:
			if(ly<1)
			{
				printf("道具不足!\n");
			}
			else
			{
				ly--;
				ys+=6;
				printf("分解完毕!\n");
			}
		break;
		case 8:
			if(ts<1)
			{
				printf("道具不足!\n");
			}
			else
			{
				ts--;
				ys+=4;
				printf("分解完毕!\n");
			}
		break;
		case 9:
			if(tl<1)
			{
				printf("道具不足!\n");
			}
			else
			{
				tl--;
				ys+=4;
				printf("分解完毕!\n");
			}
		break;
		case 10:
			if(slb<1)
			{
				printf("道具不足!\n");
			}
			else
			{
				slb--;
				ys+=2;
				printf("分解完毕!\n");
			}
		break;
		case 11:
			if(st<1)
			{
				printf("道具不足!\n");
			}
			else
			{
				st--;
				ys++;
				printf("分解完毕!\n");
			}
		break;
		case 12:
		break;
		default:
			printf("选择错误,请重新选择!\n\n");
			fj();
	}
	select1(); 
}

void select1()
{
	printf("请进行选择:1.抽奖    2.分解    3.退出\n");
	int a=0;
	scanf("%d",&a);
	switch(a)
	{
		case 1:
			select2();
			break;
		case 2:
			fj();
			break;
		case 3:
			break;
		default:
			printf("选择错误,请重新选择!\n\n");
			select1();
	}
	
}

代码类型简单,新手也能容易读懂

但是有个问题,每次运行后抽到的道具都是一样的,不论选择单抽还是十连,都是这个顺序

例:十连

请进行选择:1.抽奖    2.分解    3.退出
1
请选择想尝试的抽奖:
1.幻神夺宝     2.传说圣灵     3.王者许愿      4.返回
1
请选择:1.单抽    2.十连    3.兑换    4.返回
2
恭喜你获得道具:100积分
当前积分:100
恭喜你获得道具:10积分
当前积分:110
恭喜你获得道具:王者之石
当前积分:110
恭喜你获得道具:10积分
当前积分:120
恭喜你获得道具:20积分
当前积分:140
恭喜你获得道具:5积分
当前积分:145
恭喜你获得道具:10积分
当前积分:155
恭喜你获得道具:王者之石
当前积分:155
恭喜你获得道具:5积分
当前积分:160
请选择:1.单抽    2.十连    3.兑换    4.返回

单抽:

请进行选择:1.抽奖    2.分解    3.退出
1
请选择想尝试的抽奖:
1.幻神夺宝     2.传说圣灵     3.王者许愿      4.返回
1
请选择:1.单抽    2.十连    3.兑换    4.返回
1
恭喜你获得道具:100积分
当前积分:100
请选择:1.单抽    2.十连    3.兑换    4.返回
1
恭喜你获得道具:10积分
当前积分:110
请选择:1.单抽    2.十连    3.兑换    4.返回
1
恭喜你获得道具:王者之石
当前积分:110
请选择:1.单抽    2.十连    3.兑换    4.返回
1
恭喜你获得道具:10积分
当前积分:120
请选择:1.单抽    2.十连    3.兑换    4.返回
1
恭喜你获得道具:20积分
当前积分:140
请选择:1.单抽    2.十连    3.兑换    4.返回

这里进行了五次单抽,发现与十连前五次道具一样,意思是获得道具是固定的,不知道为什么

这五次单抽与十连是分开的,十连后退出程序再进行五次单抽得到的结果

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zzq0213

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值