用VC++6.0实现石头剪刀布游戏的程序
源程序是从网上看到的,
geek_monkey于2015年3月3日修改了bug(输入字符非石头剪刀布都算是玩家赢)
编译环境为VC++6.0
增加“上帝模式”和数据统计,纯属娱乐。
我是C语言初学者,轻喷
#include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> intexist_in(char*arr1[][2],char*arr2[],intlength);//胜负判断函数 voidnextround(void);//本轮结束后的处理轮函数 enum{QUIT,OK}status;//标志位,QUIT=0,OK=1 intvcnt=0,dcnt=0,tcnt=0;//数据统计 intmain(void) { inti=0,length; time_tt; status=OK; char*person=(char*)malloc(100);//动态内存分配 char*computer=(char*)malloc(100); char*computer_person[2]; char*guess_arr[]={"石头","剪刀","布"}; char*win[3][2]={{"布","石头"},{"石头","剪刀"},{"剪刀","布"}}; length=(int)sizeof(win)/(int)sizeof(win[0]);//此例中length=3 while(status==OK)//标志位1,执行死循环 { srand((unsigned)time(&t)); i=rand()%3;//srand和rand配合产生随机数 computer=guess_arr[i];//将随机数转换为石头剪刀或者布的字符串 computer_person[0]=computer;//将计算机的出拳结果放入*computer_person do{ printf("请输入剪刀石头布:\n"); scanf("%s",person); if(strcmp(person,"god")==0)//上帝模式,实现可看到电脑出拳结果 { printf("*********************************\n"); printf("上帝你好,电脑本局的出的是:%s\n",computer); printf("*********************************\n"); continue; } else printf("你输入的是:%s\n",person);//下一行用于判断用户的输入是否为石头剪刀布 if((strcmp(person,"石头")==0)||(strcmp(person,"剪刀")==0)||(strcmp(person,"布")==0)) break;//结果为石头剪刀布之一,跳出循环。 else printf("请检查你的输入是否为石头剪刀或者布:\n"); }while(1); computer_person[1]=person; tcnt++; if(strcmp(computer,person)==0) { printf("平手!\n\n"); } elseif(exist_in(win,computer_person,length)) { printf("电脑获胜\n\n"); dcnt++; } else { printf("玩家获胜\n\n"); vcnt++; nextround(); } } person=NULL; computer=NULL; free(person); free(computer); return0; } /********************************************** exist_in函数用于判断是否是电脑获胜,length为3,比较3次,arr1和arr2中字符串的 顺序即可判断出电脑是否获胜。 *********************************************/ intexist_in(char*arr1[][2],char*arr2[],intlength) { inti; for(i=0;i<length;i++) { if(strcmp(arr1[i][0],arr2[0])==0&&strcmp(arr1[i][1],arr2[1])==0) { return1; } } return0; } voidnextround(void) { intm=0; printf("请输入指令:1退出,2继续,3数据总结\n"); scanf("%d",&m); switch(m) { case1: status=QUIT; break; case2: printf("新的一局开始\n"); break; case3: printf("您的胜场数是%d,败场数是%d,总场数是%d\n",vcnt,dcnt,tcnt); status=QUIT; break; default: printf("输入错误退出"); status=QUIT; break; } }
以上就是使用vc++实现的石头剪刀布程序的全部代码了,希望对大家学习VC++能够有所帮助。