c语言剪刀石头布小游戏
程序要提示用户输入“(J)iandao,(S)hitou,hu(B)u:”。用户可以输入J、S、B三个字符中的一个。如果用户输入不是J、S、B其中之一,报错:“选择错误!...
程序要提示用户 输入“ (J)iandao, (S)hitou, hu(B)u :”。
用户可以输入J、S、B三个字符中的一个。如果用户输入不是 J、 S、 B 其中之一,报错: “选择错误!” 。
电脑要能随机出其中的一个。
显示用户出什么,电脑出什么,谁赢了,或平局。
希望用比较简单的函数 最好解释下 如:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
和switch
灰常感谢!! 展开
用户可以输入J、S、B三个字符中的一个。如果用户输入不是 J、 S、 B 其中之一,报错: “选择错误!” 。
电脑要能随机出其中的一个。
显示用户出什么,电脑出什么,谁赢了,或平局。
希望用比较简单的函数 最好解释下 如:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
和switch
灰常感谢!! 展开
5个回答
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
char m; //表示选择的是哪个铅腊人
int a,b; //分别表示人和电脑
printf("(J)iandao, (S)hitou, hu(B)u :\n");
scanf("%c",&m);
if(m!='J' && m!='S' && m!='B')
printf("Input error!\n");
else //分别用0,1,2代胡蚂表石头,剪刀,布
{
srand(time(NULL));
a = rand()%3;
switch(a)
{
case 0:
printf("人出的是石头\n");
break;
case 1:
printf("人出的是剪刀\n");
break;
case 2:
printf("人出的是布\n");
break;
default:
break;
}
b = rand()%3;
switch(b)
{
case 0:
printf("电脑出的是石头\n");
break;
case 1:
printf("电脑出的是剪刀\n");
break;
case 2:
printf("电脑出的是布\n");
break;
default:
break;
}
if(a > b)
printf("人赢了!\n");
else if(a == b)
printf("平局!\n");
else
printf("电裤激埋脑赢了!\n");
}
return 0;
}
#include <stdlib.h>
#include <time.h>
int main()
{
char m; //表示选择的是哪个铅腊人
int a,b; //分别表示人和电脑
printf("(J)iandao, (S)hitou, hu(B)u :\n");
scanf("%c",&m);
if(m!='J' && m!='S' && m!='B')
printf("Input error!\n");
else //分别用0,1,2代胡蚂表石头,剪刀,布
{
srand(time(NULL));
a = rand()%3;
switch(a)
{
case 0:
printf("人出的是石头\n");
break;
case 1:
printf("人出的是剪刀\n");
break;
case 2:
printf("人出的是布\n");
break;
default:
break;
}
b = rand()%3;
switch(b)
{
case 0:
printf("电脑出的是石头\n");
break;
case 1:
printf("电脑出的是剪刀\n");
break;
case 2:
printf("电脑出的是布\n");
break;
default:
break;
}
if(a > b)
printf("人赢了!\n");
else if(a == b)
printf("平局!\n");
else
printf("电裤激埋脑赢了!\n");
}
return 0;
}
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
char sjb(); /* 电脑出拳 */
int iswin(char rc,char jc); /* 判断输赢:1|0|-1=人赢|平局|电脑赢 */
int main(){
char rc,jc,jx='Y';
int jg;
while(1){
jc=sjb();
printf("(J)iandao, (S)hitou, huo(B)u :");
scanf("%c",&rc);
if(rc>='a' && rc<='z')
rc-=32;
if( rc=='J' || rc=='S' || rc=='B' ){
jg=iswin(rc,jc);
printf("你出了%c,电脑出了%c。",rc,jc);
switch(jg){
case -1:
printf("遗憾,你输了没谨!\n"); break;
case 0:
printf("平局!\n"枯灶基); break;
case 1:
printf("恭喜,你赢了!\n");
}
}else
printf("选择错误!\n");
printf("再来一局?(y/n)");
getchar();
scanf("%c",&jx);
getchar();
if(jx!='Y' && jx!='y')
break;
}
return 0;
}
char sjb(){
char c;
int i;
srand(time(0));
i=rand()%3;
switch(i){
case 0:
c='J'; break;
case 1: c='辩闷S'; break;
case 2: c='B';
}
return c;
} /* sjb() */
int iswin(char rc,char jc){
int jg;
if(rc=='J' && jc=='B' || rc=='S' && jc=='J' || rc=='B' && jc=='S' )
jg=1; /* 人赢 */
else if(rc==jc)
jg=0; /* 平局 */
else
jg=-1; /* 人输 */
return jg;
} /* iswin */
#include<stdlib.h>
#include<time.h>
char sjb(); /* 电脑出拳 */
int iswin(char rc,char jc); /* 判断输赢:1|0|-1=人赢|平局|电脑赢 */
int main(){
char rc,jc,jx='Y';
int jg;
while(1){
jc=sjb();
printf("(J)iandao, (S)hitou, huo(B)u :");
scanf("%c",&rc);
if(rc>='a' && rc<='z')
rc-=32;
if( rc=='J' || rc=='S' || rc=='B' ){
jg=iswin(rc,jc);
printf("你出了%c,电脑出了%c。",rc,jc);
switch(jg){
case -1:
printf("遗憾,你输了没谨!\n"); break;
case 0:
printf("平局!\n"枯灶基); break;
case 1:
printf("恭喜,你赢了!\n");
}
}else
printf("选择错误!\n");
printf("再来一局?(y/n)");
getchar();
scanf("%c",&jx);
getchar();
if(jx!='Y' && jx!='y')
break;
}
return 0;
}
char sjb(){
char c;
int i;
srand(time(0));
i=rand()%3;
switch(i){
case 0:
c='J'; break;
case 1: c='辩闷S'; break;
case 2: c='B';
}
return c;
} /* sjb() */
int iswin(char rc,char jc){
int jg;
if(rc=='J' && jc=='B' || rc=='S' && jc=='J' || rc=='B' && jc=='S' )
jg=1; /* 人赢 */
else if(rc==jc)
jg=0; /* 平局 */
else
jg=-1; /* 人输 */
return jg;
} /* iswin */
追问
各种神奇的答案 都灰常感谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>
#define RAND(N) (int)((double)rand() / ((double)RAND_MAX + 1) * N)
#define PRINT(msg) fputs(msg, stdout)
#define MAN_WIN 1
#define COM_WIN 2
#define NUL_WIN 3 /* 平手 */
void flushinp(void)
{
int ch;
while((ch = getchar()) != '\n' && ch != EOF);
}
char getman(void) {
char man;
do {
PRINT("请您出拳 >>> ");
scanf("%c", &man);
flushinp(); /* 清空输入缓冲区残余字符 */
man = tolower(man);
} while (man != 'j' && man != 's'粗槐
&& man != 'b' && man != 'q');
return man;
}
char getcom(void) {
char com;
com = RAND(3);
if (0 == com) { com = 's'; }
else if (1 == com) { com = 'j'; }
else if (2 == com) { com = 'b'; }
return com;
}
int judgewin(char man, char com)
{
if (man == com) {
return NUL_WIN;
}
else if (
'j' == man && 'b' == com
|| 's' == man && 'j' == com
|| 'b' == man && 's' == com) {
return MAN_WIN;
}
else {
return COM_WIN;
}
}
void disphand(int hand)
{
switch(hand)
{
case 's': PRINT("石头"); break;
case 'j': PRINT("剪子"); break;
case 'b': PRINT("布"); break;
default: break;
}
}
int main(void)
{
char man, com;
int ret;
system("color 3e");
PRINT("-----------猜 拳--------------\n"族凳睁
"玩法: 玩家输入S/s(石头)、J/j(剪刀兆岁)、B/b(布),Q/q(退出)。\n");
srand( (unsigned) time(NULL) );
while (1) {
/* 人出拳 */
man = getman();
if ('q' == man) { /* 退出游戏 */
break;
}
else {
com = getcom(); /* 电脑出拳 */
PRINT("您出了: ");
disphand(man);
PRINT(", 我出了: ");
disphand(com);
ret = judgewin(man, com);
if (MAN_WIN == ret) { PRINT("。 您赢了! 不要骄傲啊。\n"); }
else if (COM_WIN == ret) { PRINT("。 我赢了! 承让承让。\n"); }
else { PRINT("。 这次打成平手了!\n"); }
}
}
PRINT("谢谢惠顾, 祝您天天开心!\n");
getchar();
return 0;
}
#include <stdlib.h>
#include <time.h>
#include <ctype.h>
#define RAND(N) (int)((double)rand() / ((double)RAND_MAX + 1) * N)
#define PRINT(msg) fputs(msg, stdout)
#define MAN_WIN 1
#define COM_WIN 2
#define NUL_WIN 3 /* 平手 */
void flushinp(void)
{
int ch;
while((ch = getchar()) != '\n' && ch != EOF);
}
char getman(void) {
char man;
do {
PRINT("请您出拳 >>> ");
scanf("%c", &man);
flushinp(); /* 清空输入缓冲区残余字符 */
man = tolower(man);
} while (man != 'j' && man != 's'粗槐
&& man != 'b' && man != 'q');
return man;
}
char getcom(void) {
char com;
com = RAND(3);
if (0 == com) { com = 's'; }
else if (1 == com) { com = 'j'; }
else if (2 == com) { com = 'b'; }
return com;
}
int judgewin(char man, char com)
{
if (man == com) {
return NUL_WIN;
}
else if (
'j' == man && 'b' == com
|| 's' == man && 'j' == com
|| 'b' == man && 's' == com) {
return MAN_WIN;
}
else {
return COM_WIN;
}
}
void disphand(int hand)
{
switch(hand)
{
case 's': PRINT("石头"); break;
case 'j': PRINT("剪子"); break;
case 'b': PRINT("布"); break;
default: break;
}
}
int main(void)
{
char man, com;
int ret;
system("color 3e");
PRINT("-----------猜 拳--------------\n"族凳睁
"玩法: 玩家输入S/s(石头)、J/j(剪刀兆岁)、B/b(布),Q/q(退出)。\n");
srand( (unsigned) time(NULL) );
while (1) {
/* 人出拳 */
man = getman();
if ('q' == man) { /* 退出游戏 */
break;
}
else {
com = getcom(); /* 电脑出拳 */
PRINT("您出了: ");
disphand(man);
PRINT(", 我出了: ");
disphand(com);
ret = judgewin(man, com);
if (MAN_WIN == ret) { PRINT("。 您赢了! 不要骄傲啊。\n"); }
else if (COM_WIN == ret) { PRINT("。 我赢了! 承让承让。\n"); }
else { PRINT("。 这次打成平手了!\n"); }
}
}
PRINT("谢谢惠顾, 祝您天天开心!\n");
getchar();
return 0;
}
追问
各种神奇的答案 都灰常感谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#include<绝棚陆stdlib.h>
#include<time.h>
void main()
{
char a;
puts("input:(J)iandao, (S)hitou, hu(B)u :");
scanf("%c",&a);
if(a!='J'&&a!='S'&&a!='B') {puts("选择错误并顷");exit(0);}
char c;
srand(time(0));
int d=rand()%3+1;
if(d==1) c='J';
else if(d==2) c='S';
else if(d==3)c='B';
printf("输入的为%c\n电脑为%c\n",a,c);
switch (c-a)
{
case -8:puts("you win!");break;
case -9:puts("you win!");break;
case 17:puts("you win!");break;
case -17:puts("computer win!");break;
case 8:puts("computer win!");break;
case 9:puts("和友computer win!");break;
default:puts("平!");break;
}
}
#include<绝棚陆stdlib.h>
#include<time.h>
void main()
{
char a;
puts("input:(J)iandao, (S)hitou, hu(B)u :");
scanf("%c",&a);
if(a!='J'&&a!='S'&&a!='B') {puts("选择错误并顷");exit(0);}
char c;
srand(time(0));
int d=rand()%3+1;
if(d==1) c='J';
else if(d==2) c='S';
else if(d==3)c='B';
printf("输入的为%c\n电脑为%c\n",a,c);
switch (c-a)
{
case -8:puts("you win!");break;
case -9:puts("you win!");break;
case 17:puts("you win!");break;
case -17:puts("computer win!");break;
case 8:puts("computer win!");break;
case 9:puts("和友computer win!");break;
default:puts("平!");break;
}
}
追问
各种神奇的答案 都灰常感谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
引用liu_jxnu的回答:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
char m; //表示选择的是哪个人
int a,b; //分别表示人和电脑
printf("(J)iandao, (S)hitou, hu(B)u :\n");
scanf("%c",&m);
if(m!='J' && m!='S' && m!='B')
printf("Input error!\n");
else //分别用0,1,2代表石头,剪刀,布
{
srand(time(NULL));
a = rand()%3;
switch(a)
{
case 0:
printf("人出的是石头\n");
break;
case 1:
printf("人出的是剪刀\n");
break;
case 2:
printf("人出的是布\n");
break;
default:
break;
}
b = rand()%3;
switch(b)
{
case 0:
printf("电脑出的是石头\n");
break;
case 1:
printf("电脑出的是剪刀\n");
break;
case 2:
printf("电脑出的是布\n");
break;
default:
break;
}
if(a > b)
printf("人赢了!\n");
else if(a == b)
printf("平局!\n");
else
printf("电脑赢了!\n");
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
char m; //表示选择的是哪个人
int a,b; //分别表示人和电脑
printf("(J)iandao, (S)hitou, hu(B)u :\n");
scanf("%c",&m);
if(m!='J' && m!='S' && m!='B')
printf("Input error!\n");
else //分别用0,1,2代表石头,剪刀,布
{
srand(time(NULL));
a = rand()%3;
switch(a)
{
case 0:
printf("人出的是石头\n");
break;
case 1:
printf("人出的是剪刀\n");
break;
case 2:
printf("人出的是布\n");
break;
default:
break;
}
b = rand()%3;
switch(b)
{
case 0:
printf("电脑出的是石头\n");
break;
case 1:
printf("电脑出的是剪刀\n");
break;
case 2:
printf("电脑出的是布\n");
break;
default:
break;
}
if(a > b)
printf("人赢了!\n");
else if(a == b)
printf("平局!\n");
else
printf("电脑赢了!\n");
}
return 0;
}
展开全部
为什么有两个rand 那玩家输入的去数据就起到了一个判断能否执行游戏的作用嘛
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询