编写一个C程序,模拟一个“剪刀、石头、布”的游戏

编写一个C程序,模拟一个“剪刀、石头、布”的游戏。实现的是“人机对战”。建议思路如下:由程序产生一个1~3随机数,1代表剪刀,2代表石头,3代表布;然后计算机用户从键盘上... 编写一个C程序,模拟一个“剪刀、石头、布”的游戏。实现的是“人机对战”。 建议思路如下:由程序产生一个1 ~ 3随机数,1代表剪刀,2代表石头,3代表布;然后计算机用户从键盘上输入一个整数,同样1代表剪刀,2代表石头,3代表布,程序给出对战结果(输、赢、平局)。要求:
① 程序运行之后能玩三局;
② 每局结束即刻显示出对战结果;
③ 三局全部结束之后给出一个总结性结果。如“一共进行了3局比赛。你赢了X局,计算机赢了X局,平局X次。”
关于随机数的产生,本人不太懂
展开
 我来答
zc120556958
2011-11-24
知道答主
回答量:37
采纳率:0%
帮助的人:25.4万
展开全部
#include <stdio.h>
#include <string.h> //字符串库
#include <time.h> //时间库

//开发游戏开始界面。
void InitGameDisplay()
{
printf("================================欢迎您进入游戏================================");
printf("|***********************************************|");
printf("| 游戏规则 |");
printf("| 选择1代表剪刀、选择2代表石头、选择3代表布 |");
printf("| 1°用户首先选择一个1~3的整数. |");
printf("| 2°电脑会随机从1~3选择一个整数. |");
printf("| 3°由剪刀>布>石头>剪刀作出结果. |");
printf("| |");
printf("| Author: 刘超 |");
printf(" instructor:刘国柱 |");
printf("|***********************************************|");
}
//开发游戏结束界面。
void EndGameDisplay()
{
printf("|***********************************************|");
printf("| |");
printf("| GAME OVER |");
printf("| |");
printf("| 欢迎下次使用! |");
printf("| QQ:2542872403 |");
printf("|***********************************************|");
}
//计算机出牌(数字牌)
//输入: 无
//返回数值: 数字牌 (1,2,3)
int ComputerCreateNumberCard()
{
return time(NULL)%3+1;
}

//把用户与计算机产生的数字牌转化为文字牌
//输入: 数字牌(计算机或者用户: e.g. 1, 2,3.)
//输出: 文字牌(“剪刀”,“石头”,“布”)
//返回数值: 无
void ConvertNumberToWord(int intNumberCard, char charWord[])
{

if(intNumberCard==1)
{
strcpy(charWord,"剪子"); //字符串赋值
}else if(intNumberCard==2)
{
strcpy(charWord,"石头");
}else if(intNumberCard==3)
{
strcpy(charWord,"布");
}
}

//判断胜负
//输入: 用户的数字牌
// 计算机产生的数字牌
//输出: 结果字符串 (“计赢”,“用赢”,“平”)
//返回数值: 无
//
//判断原理:
// 计算机 用户 判断结果
// 1 1 平
// 1 2 用赢
// 1 3 计赢
// 2 1 计赢
// 2 2 平
// 2 3 用赢
// 3 1 用赢
// 3 2 计赢
// 3 3 平
void JudgeWiner(int intUserNumberCard,int intComputerNumberCard,char charWiner[])
{
if(intUserNumberCard==intComputerNumberCard)
{
strcpy(charWiner,"平");
}else{
if(intComputerNumberCard==1 && intUserNumberCard==3)
{
strcpy(charWiner,"输");
}else if(intComputerNumberCard==1 && intUserNumberCard==2)
{
strcpy(charWiner,"赢");
}else if(intComputerNumberCard==2 && intUserNumberCard==3 )
{
strcpy(charWiner,"赢");
}else if(intComputerNumberCard==2 && intUserNumberCard==1 )
{
strcpy(charWiner,"输");
}else if(intComputerNumberCard==3 && intUserNumberCard==2 )
{
strcpy(charWiner,"输");
}else if(intComputerNumberCard==3 && intUserNumberCard==1 )
{
strcpy(charWiner,"赢");
}
}
}//JudgeWiner_end

void main()
{
int intUseNumCard; //用户出的数字牌
int intComputerNumCard; //计算机出的数字牌
char charWiner[100]; //判断结果
int n,m,number1,number2;
//1: 开发游戏开始界面。
InitGameDisplay();
int num[3] = {0}; //用于计数

printf("\n请从1,2,3中选择一个数字");
while(num[1]+num[2]+num[0] !=3)
{

while(true)
{
//2: 用户出牌。
printf("请劳驾出牌\n");
scanf("%d",&intUseNumCard);
if(intUseNumCard>=1 && intUseNumCard<=3)
{
break;
}else{
printf("输入错误,请重新输入!\n");
}
}
//3: 计算机出牌
intComputerNumCard=ComputerCreateNumberCard();
//3.1) 把用户与计算机产生的数字牌转化为文字牌
char CharUseTextCard[6];
char CharComputerTextCard[6];
ConvertNumberToWord(intUseNumCard,CharUseTextCard);
ConvertNumberToWord(intComputerNumCard,CharComputerTextCard);
printf("您出的牌是 %s,计算机出的牌是 %s\n",CharUseTextCard,CharComputerTextCard);
//4: 判断胜负
JudgeWiner(intUseNumCard,intComputerNumCard,charWiner);
//显示
if(strcmp(charWiner,"平")==0)
{
printf("%s=%s结果: 平!!\n",CharUseTextCard,CharComputerTextCard);
num[0]++;
}else if(strcmp(charWiner,"赢")==0){
printf("%s>%s结果: 赢!\n",CharUseTextCard,CharComputerTextCard);
num[1]++;
}else if(strcmp(charWiner,"输")==0){
printf("%s<%s结果: 输!\n",CharUseTextCard,CharComputerTextCard);
num[2]++;
}
printf("\n");
printf("\n");
printf("\n");
printf("\n");
}//while_end
printf("一共进行了3局比赛,你赢了%d局,计算机赢了%d局,平局%d次\n",num[1],num[2],num[0]);
//6: 游戏结束界面。
EndGameDisplay();

}
wuwuweilie
推荐于2018-02-28 · 超过17用户采纳过TA的回答
知道答主
回答量:69
采纳率:100%
帮助的人:41.1万
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
int w,c,i=0,j=0,k=0;
char ch;
printf("我们来玩剪刀石头布的游戏0代表石头,1代表剪刀,2代表布\n");
do
{

do
{
printf("请出拳");
scanf("%d",&w);
if(w<0||w>2)
{
printf("输入有误,请从新输入");
}
}while(w<0||w>2);

srand(time(NULL));
c=rand()%3;
printf("我出%d,电脑出%d\n",w,c);
if(w==c)
{
printf("平了");
i++;
}
else if(w==0&&c==1||w==1&&c==2||w==2&&c==0)
{
printf("赢了");
j++;
}
else
{
printf("输了 ");
k++;
}

printf("y/n\n");
fflush(stdin);
ch=getchar();
}while(ch=='y'||ch=='Y');
printf("共玩了%d次,平了%d次, 赢了%d次输了%d次\n",i+j+k,i,j,k);
if(j>k)
{
printf("您真棒!!!!\n");
}
else if(j<k)
{
printf("您的坏运气已经用光了,接下来都是好运气!!!\n");
}
else
{
printf("竟然能打去平手,神人啊!!!!!!!!!!!!!\n ");
}

}

以前做的,可以控制玩得次数
随机数:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
srand(time(NULL));
int c=rand()%3;
//%求余可以控制随机数的大小;比如跟三取模得到的随机数比三小(0,1,2)
//如果要很多个随即数可用for循环
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1198465041
2011-11-24
知道答主
回答量:8
采纳率:0%
帮助的人:1.3万
展开全部
哦也让他活泼irtpipyiprtyir 哦菩提欧体哟破phdrip有好人的犹太人
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式