用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++能够有所帮助。