
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void main()
{
int com,user
char c
srand((unsigned)time(NULL))//初始化随机数,如果没有这条语句,每次运行电脑产生的随机数序列都是一样的
printf("进入游戏\n")
do{
printf("请出拳(1.剪刀、2.石头、3.布):")
scanf("%d",&user)
com=rand()%3+1//产生1-3范围内的随机数
printf("电脑出%s\n",com==1?"剪刀":com==2?"石头":"布")
switch(com-user) //用电脑产生的数和用户输入的数的差值来判断胜负
{
case 0:
printf("平手\n")
break
case 1:
case -2:
printf("电脑赢了\n")
break
case -1:
case 2:
printf("你赢了\n")
}
printf("继续游戏按Y键、其它键退出")
getchar()
c=getchar()
}while(c=='y' || c=='Y')
printf("已经退出游戏")
}
扩展资料
C++编程: 石头剪子布
#include<cstdio>
#include<iostream>
using namespace std
int main()
{
int n
char a[10],b[10]
cin>>n
int c[n+3]
for(int i=1i<=ni++)
{
cin>>a>>b
if(a[0]=='R')
{
if(b[0]=='R')
{
c[i]=0
}
if(b[0]=='S')
{
c[i]=1
}
if(b[0]=='P')
{
c[i]=2
}
}
else if(a[0]=='S')
{
if(b[0]=='R')
{
c[i]=2
}
if(b[0]=='S')
{
c[i]=0
}
if(b[0]=='P')
{
c[i]=1
}
}
else if(a[0]=='P')
{
if(b[0]=='R')
{
c[i]=1
}
if(b[0]=='S')
{
c[i]=2
}
if(b[0]=='P')
{
c[i]=0
}
}
}
for(int i=1i<=ni++)
switch(c[i])
{
case 0:
{
printf("Tie\n")break
}
case 1:
{
printf("Player1\n")break
}
case 2:
{
printf("Player2\n")break
}
}
return 0
}
帮你修改了一下判断部分。你试试吧:#include <stdio.h>
#include <stdlib.h>
#include<sys/types.h>
#include<sys/timeb.h>
main()
{
loop:
printf("欢迎来玩石头剪刀布,请使用键盘输入,0代表石头,1代表剪刀,2代表布。\n******************************************************\n")
int x,com,user
unsigned int seedVal
struct timeb timeBuf
ftime(&timeBuf)
seedVal=((((unsigned int)timeBuf.time&0xFFFF)+
(unsigned int)timeBuf.millitm)^
(unsigned int)timeBuf.millitm)
srand((unsigned int)seedVal)
x=rand()
com=x%3
scanf("%d",&user)
if(user>2)
printf("您的输入有误,请输入0、1、2中任意一个数字\n")
else
{
if(com==0)
{
if(user==0) printf("平手\n")
if(user==1) printf("输了\n")
if(user==2) printf("赢了\n")
}
if(com==1)
{
if(user==0) printf("赢了\n")
if(user==1) printf("平手\n")
if(user==2) printf("输了\n")
}
if(com==2)
{
if(user==0) printf("输了\n")
if(user==1) printf("赢了\n")
if(user==2) printf("平手\n")
}
}
goto loop
}
刚刚的有点问题,现在改好了:#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>
char name[100],way[3][10]={"石头","剪子","布"},mode_name[2][20]={"三局两胜","五局三胜"}
void new_game(int mode,int *p_win,int * p_lose,int *p_tide){
char cmd[10]
int computer,user,win=0,lose=0
int cnt[2]={3,5}
printf("***当前模式:\t%s\n",mode_name[mode])
for(int i=0i<cnt[mode]i++){
printf("***1 -- 石头\t 2 -- 剪子\t 3 -- 布\n")
fgets(cmd,9,stdin)
user=(cmd[0]-'1')%3
if(user<0)user+=3
computer=rand()%3
printf("***%-10s:%s\n",name,way[user])
printf("***%-10s:%s","电脑",way[computer])
if(computer==user)
{
printf("\t\t平\n")
}
else if(user-computer==-1 || user-computer==2)
{
printf("\t%s\t赢\n",name)
win++
}
else
{
printf("\t电脑\t赢\n")
lose++
}
if(win>lose+cnt[mode]-i-1 || lose>win+cnt[mode]-i-1)
break
}
if(win>lose)
{
printf("恭喜!该局你赢家了!\n")
(*p_win)++
}
else if(win<lose)
{
(*p_lose)++
printf(" 可惜!,你输了本局!\n")
}
else
{
(*p_tide)++
printf(" 此局平局!\n")
}
}
int main(){
srand(time(0))
char cmd[10]
int mode=0
int win,lose,tide
win=lose=tide=0
printf("请输入玩家姓名:\t")
fgets(name,99,stdin)
name[strlen(name)-1]='\0'
while(1){
printf("/******************石头剪子布游戏 ******************\n")
printf("***玩家:\t%s\n",name)
printf("***比赛情况:\t赢:\t%d\t输:\t%d\t平:\t%d\n",win,lose,tide)
printf("***当前模式:\t%s\n",mode_name[mode])
printf("***N -- 开始游戏;\tC -- 切换模式;\tQ -- 退出;\n")
fgets(cmd,9,stdin)
if(cmd[0]=='N' || cmd[0]=='n')
new_game(mode,&win,&lose,&tide)
else if(cmd[0]=='Q' || cmd[0]=='q')
break
else
mode=1-mode
}
return 0
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)