皮皮网

【枭雄页游源码】【麻将源码交易】【jni env源码】c转盘源码

2024-11-27 13:49:32 来源:公益 源码

1.flash 幸运转盘中奖规律
2.急求c语言编程题目
3.C学习:uthash使用小结

c转盘源码

flash 幸运转盘中奖规律

       æ²¡æœ‰ä½œå¼Šçš„一般是按次数,(当然也有概率因素),有作弊的一般是按时间,

       ç†è®ºä¸Šæ²¡æœ‰ä½œå¼Šçš„话,可以这样实现概率,比如/出现A,/出现B,其他都出现C,那么实现这个要求可以生成一个以内的随机数,然后然后根据他进行判断,如果小于,那么出现A,大于小于,出现B,大于出现C,

       ä¸Šé¢çš„正常的不作弊的中奖概率生成,完全靠系统随机产生

       ä¸è¿‡å¯¹äºŽä¸€èˆ¬çš„中奖FLASH,只要是附加了现实的金钱的话,都会弄一些时间或者特殊的中奖控制措施,只要在前面的判断中加入时间的判断就可以实现了

       ä¸€èˆ¬çš„FLASH中奖都只是用FLASH来显示结果而已,生成随机数然后比较都是靠后台的ASP或者PHP脚本实现的,所以光靠FLASH最多只能说你可以没有限制的实现不停的抽奖(也就是不停的调用ASP或者PHP脚本),而不可能实现肯定抽中奖!

急求c语言编程题目

       早上看到问题需求,盘源中午用休息时间刚好大半代码,盘源发现问题居然已经采纳了。盘源。盘源。盘源

       代码完成了。盘源枭雄页游源码测试过了。盘源直接运行。盘源

       滚轮实现动态,盘源三角型指针沿着滚盘数字转动,盘源随机停在一个数字上,盘源如果和之前下注的盘源数值一致就是猜中,反之没猜中

       你提出的盘源所有功能都实现了,太多了,盘源我截图列举几个说明一下,盘源其它你自己看吧。

       是麻将源码交易可以猜中!!可以猜中!!,我第一次2轮就中,忘记截图了。1/的概率能猜中,有耐心慢慢试,记得充值!

       后台还有很多功能,但必须用管理员账户才能进入:

#include <stdio.h>

       #include <stdlib.h>

       #include <string.h>

       #include <malloc.h>

       #include <conio.h>

       #include <time.h>

       #define maxMShow //最大下注金额显示字符数,修改该值需要同步修改showDisc函数的格式参数!

       typedef struct user

       {

           char uName[];

           char psw[];

           int money;//余额

           int pay;//历史消费

           int win;//历史赢钱

           int type;//用户类型->0: 管理员;1:普通玩家

           struct user *next;

       }USER;

       typedef struct disc//圆盘数字

       {

           char flag;//数字前标识

           int num;//圆盘数字

           int money;//对应下注金额

           char mStr[maxMShow+1];//下注金额字符串形式,为了排面整齐,最多显示个字节

           struct disc *next;

       }DISC;

       void meError(void *p);//内存申请失败

       DISC *init();//初始化圆盘,生成链表头指针

       void showDisc(DISC *discHead,USER *logUser);//显示圆盘

       DISC *bets(DISC *discHead,USER *user);//下注,成功返回下注节点,失败返回NULL。jni env源码参数:user:下注人ID;

       int regUser(USER **userHead,USER **userTail,char *uName,char *psw,int money,int type);//注册用户,成功返回1,失败返回0。参数:uName:用户名。psw:密码。money:开户金额。type:用户类型0管理员1普通用户

       USER * login(USER *userHead,char *uName,char *psw);//登录。登录成功返回用户节点,失败返回NULL

       int recharge(USER *logUser);//充值,成功返回1,失败返回0

       void showMenu1(DISC *discHead,USER **userHead,USER **userTail);//显示一级菜单

       void showMenu2(DISC * discHead,USER *logUser,USER *userHead);//显示二级菜单

       void showMenu3(DISC * discHead,USER *logUser,USER *userHead);//显示三级菜单

       int roll(DISC *discHead,USER *logUser);//滚动转盘,猜中增加奖金,猜中返回1,没猜中返回0。参数:num=猜的数字,money=下的注

       void reDisc(DISC *discHead);//重置转盘,每次滚动后调用

       void showUser(USER *userHead,ros turtlesim源码char *uName);//查看指定玩家账户,参数uName传NULL,查看所有玩家账户

       void showProfit(USER *userHead);//统计赌场盈利状况;

       int main()

       {

           DISC *discHead=NULL;

           USER *userHead=NULL,*userTail=NULL;

           srand(time(NULL));

           discHead=init();

           showMenu1(discHead,&userHead,&userTail);

           return 0;

       }

       void showMenu1(DISC *discHead,USER **userHead,USER **userTail)//显示一级菜单

       {

           USER *logUser=NULL;

           char uName[]={ 0},psw[]={ 0};

           int n,money=0,type;

           while(1)

           {

               n=0;

               memset(uName,0,);

               memset(psw,0,);

               money=0;

               type=-1;

               system("cls");

               printf("1、用户登录\n2、用户注册\n");

               scanf("%d",&n);

               if(n==1)

               {

                   system("cls");

                   printf("请输入ID名:"),scanf("%s",uName);

                   printf("请输入密码:"),scanf("%s",psw);

                   logUser=login(*userHead,uName,psw);

                   if(logUser)

                       showMenu2(discHead,logUser,*userHead);

               }

               if(n==2)

               {

                   system("cls");

                   printf("请输入注册的ID名:"),scanf("%s",uName);

                   printf("请输入注册的密码:"),scanf("%s",psw);

                   printf("请输入开户的金额(必须大于0):");

                   while(!money)

                       scanf("%d",&money);

                   printf("请选择要注册的用户类型(0=管理员;1=普通用户):");

                   while(type!=0 && type!=1)

                       scanf("%d",&type);

                   regUser(userHead,userTail,uName,psw,money,type);

               }

           }

       }

       void showMenu2(DISC *discHead,USER *logUser,USER *userHead)//显示二级菜单

       {

           int n;

           DISC *disc=NULL;

           while(1)

           {

               n=0;

               system("cls");

               printf("欢迎登录:%s,余额:%d\n",logUser->uName,logUser->money);

               printf("1、开始转盘\n2、账户充值\n3、返回上级菜单\n4、后台管理\n");

               scanf("%d",&n);

               if(n==1)

               {

                   showDisc(discHead,logUser);

                   disc=bets(discHead,logUser);

                   if(disc)

                       showDisc(discHead,logUser);

                   printf("任意键开始滚动圆盘。。。\n");

                   getch();

                   roll(discHead,logUser);

               }

               if(n==2)

                   system("cls"),recharge(logUser);

               if(n==3)

                   break;

               if(n==4)

               {

                   system("cls");

                   if(logUser->type!=0)

                       printf("对不起!您不是管理员,没有该权限!\n按任意键继续。。lisir影视源码。\n"),getch(),getch();

                   else

                       showMenu3(discHead,logUser,userHead);//后台管理

               }

           }

       }

       void showMenu3(DISC * discHead,USER *logUser,USER *userHead)//显示三级菜单

       {

           int n;

           char uName[]={ 0};

           while(1)

           {

               n=0;

               system("cls");

               printf("1、查看指定玩家\n2、查看所有玩家\n3、查看赌场盈利状况\n4、返回上级菜单\n");

               scanf("%d",&n);

               if(n==1)

               {

                   printf("请输入要查找的玩家ID:"),scanf("%s",uName);

                   showUser(userHead,uName);

               }

               if(n==2)

                   showUser(userHead,NULL);

               if(n==3)

                   showProfit(userHead);

               if(n==4)

                   break;

           }

       }

       void showProfit(USER *userHead)//统计赌场盈利状况

       {

           int sumPay=0,sumWin=0;

           system("cls");

           while(userHead->next)

           {

               sumPay+=userHead->next->pay;

               sumWin+=userHead->next->win;

               userHead=userHead->next;

           }

           printf("玩家共下注%d元,获胜者得到%d元,赌场总获利%d元\n按任意键继续。。。\n",sumPay,sumWin,sumPay-sumWin),getch();

       }

       void showUser(USER *userHead,char *uName)//查看指定玩家账户,参数uName传NULL,查看所有玩家账户

       {

           system("cls");

           while(userHead->next)

           {

               if((uName && strcmp(userHead->next->uName,uName)==0)|| !uName)

               {

                   printf("ID:%s,总下注金额%d,总获胜金额%d,当前余额%d\n",userHead->next->uName,userHead->next->pay,userHead->next->win,userHead->next->money);

                   if(uName)

                       break;

               }

               userHead=userHead->next;

           }

           printf("按任意键继续。。。\n"),getch();

       }

       USER * login(USER *userHead,char *uName,char *psw)//登录。登录成功返回用户节点,失败返回NULL

       {

           if(!userHead)

           {

               printf("错误!无可匹配数据,请先注册!\n按任意键继续。。。\n");

               getch();

               return NULL;

           }

           while(userHead->next)

           {

               if(!strcmp(userHead->next->uName,uName) && !strcmp(userHead->next->psw,psw))

                   return userHead->next;

               userHead=userHead->next;

           }

           printf("用户不存在或密码输入错误!\n按任意键继续。。。\n");

           getch();

           return NULL;

       }

       int recharge(USER *logUser)//充值,成功返回1,失败返回0

       {

           int money=-1;

           if(!logUser)

               return 0;

           while(money<0)

               printf("输入要充值的金额(输入0返回主菜单):"),scanf("%d",&money);

           logUser->money+=money;

           return 1;

       }

       int regUser(USER **userHead,USER **userTail,char *uName,char *psw,int money,int type)//注册用户,成功返回1,失败返回0。参数:uName:用户名。psw:密码。money:开户金额

       {

           USER *user=NULL,*userNew=NULL;

           if(!*userHead)

               *userHead=(USER *)malloc(sizeof(USER)),(*userHead)->next=NULL,meError(*userHead);

           user=*userHead;

           while(user->next)

           {

               if(strcmp(user->next->uName,uName)==0)

               {

                   printf("用户名已存在!请重新输入。\n按任意键继续。。。\n");

                   getch();

                   return 0;

               }

               user=user->next;

           }

           userNew=(USER *)malloc(sizeof(USER));

           meError(userHead);

           userNew->money=money;

           userNew->pay=0;

           userNew->win=0;

           userNew->uName[0]=0;

           userNew->psw[0]=0;

           userNew->type=type;

           strcpy(userNew->uName,uName);

           strcpy(userNew->psw,psw);

           userNew->next=NULL;

           if(!((*userHead)->next))

               (*userHead)->next=userNew;

           else

               (*userTail)->next=userNew;

           *userTail=userNew;

           printf("%s:%s注册成功!\n按任意键继续。。。\n",type?"普通用户":"管理员",uName);

           getch();

           return 1;

       }

       DISC *init()

       {

           int i;

           DISC *discHead=(DISC *)malloc(sizeof(DISC)),*discNew=NULL,*discTail=NULL;

           meError(discHead);

           discHead->next=NULL;

           for(i=1;i<=;i++)

           {

               discNew=(DISC *)malloc(sizeof(DISC));

               meError(discNew);

               discNew->flag=' ';

               discNew->money=0;

               discNew->num=i;

               discNew->next=NULL;

               if(!(discHead->next))

                   discHead->next=discNew;

               else

                   discTail->next=discNew;

               discTail=discNew;

           }

           return discHead;

       }

       void reDisc(DISC *discHead)//重置转盘,每次滚动后调用

       {

           while(discHead->next)

           {

               discHead->next->flag=' ';

               discHead->next->money=0;

               memset(discHead->next->mStr,0,sizeof(discHead->next));

               discHead=discHead->next;

           }

       }

       int roll(DISC *discHead,USER *logUser)//滚动转盘,猜中增加奖金,猜中返回1,没猜中返回0。参数:num=猜的数字,money=下的注

       {

           DISC *discHeadSave=discHead;

           int i,rnum=0,win,flag;

           while(1)

           {

               discHead->next->flag=;

               showDisc(discHeadSave,logUser);

               rnum=rand()%+1;

               if(rnum==discHead->next->num)

                   break;

               for(i=0;i<;i++);

               discHead->next->flag=' ';

               if(discHead->next->next)

                   discHead=discHead->next;

               else

                   discHead=discHeadSave;

           }

           if(discHead->next->money>0)//如果随机滚到的数字有下注

           {

               win=discHead->next->money*5;

               logUser->money+=win;

               logUser->win+=win;

               printf("恭喜猜中了,返还5倍!您获得了%d元。\n",win);

               flag=1;

           }

           else

           {

               printf("对不起!本次没有猜中,再接再厉。\n");

               flag=0;

           }

           reDisc(discHeadSave);

           printf("按任意键继续。。。\n");

           getch();

           return flag;

       }

       DISC *bets(DISC *discHead,USER *user)//下注

       {

           int money=0,num=-1;

           DISC *disc=NULL;

           while(num<1 || num>)

               printf("请输入要下注的数字:"),scanf("%d",&num);

           while(!money)

               printf("请输入要下注的金额(不超过余额且大于0):"),scanf("%d",&money);

           if(money>user->money)

           {

               printf("对不起,您的余额不足,请充值或重新下注!\n按任意键继续。。。\n");

               getch();

               return NULL;

           }

           user->money-=money;

           user->pay+=money;

           while(discHead->next)

           {

               if(discHead->next->num==num)

               {

                   disc=discHead->next;

                   break;

               }

               discHead=discHead->next;

           }

           disc->money=money;

           sprintf(disc->mStr,"%d",disc->money);

           return disc;

       }

       void showDisc(DISC *discHead,USER *logUser)

       {

           int clo=0;

           system("cls");

           printf("当前玩家:%s,余额:%d\n",logUser->uName,logUser->money);

           while(discHead->next)

           {

               printf("%c%2d%2s%-s ",discHead->next->flag,discHead->next->num,

                      discHead->next->money?"<-":" ",discHead->next->money?discHead->next->mStr:" ");//如要修改显示下注金额最大位数,这里%d要改!!!

               clo++;

               if(clo==3)

                   clo=0,printf("\n");

               discHead=discHead->next;

           }

       }

       void meError(void *p)//内存申请失败

       {

           if(p==NULL)

           {

               printf("异常:内存申请失败!回车结束程序!\n");

               while(getch()!='\r');

               exit(0);

           }

       }

C学习:uthash使用小结

       目录

       通过LC题转盘锁为例,结合结构体和字符串匹配来讲解HASH表的建立、查找、增加、删除等。

       uthash是一个C语言的hash表实现的开源项目。它以宏定义的方式实现hash表,具有运行速度快、与关键类型无关等优点。uthash使用方便,只需将头文件uthash.h进行include即可使用。

       首先建立一个结构体,包含Key键值str字符串以及hash表头hh,hh定义模式固定,直接复制该句即可。

       将二维的字符串指针初始化到hash表中,同时应用了查找和添加的功能。

       注意:宏调用时会改变指针变量,所以在InitDeadHash()函数最后一个参数要传二级指针进去,并在HASH_FIND()函数第二个参数里,用一级指针解引用来赋值。

       以LeetCode . 打开转盘锁题目为例,实际应用的源代码如下:

       参考资料