38猜拳小游戏
#include <stdio.h>#include <time.h>
#include <stdlib.h>
#define HUMANWIN 0
#define COMPUTERWIN 1
int get_computer(void)
{
int computer;
srand((unsigned)time(NULL));
computer = rand() % 3 + 1;
return computer;
}
int get_human(void)
{
int human;
printf("请出拳(1剪刀/2石头/3布/0退出)-> ");
scanf("%d", &human);
while (human < 0 || human > 3)
{
printf("出拳错误,请重新出拳(只需要输入数字即可)-> ");
scanf("%d", &human);
}
return human * 3;
}
void welcome(void)
{
printf("\n########################\n");
printf("# 欢迎来到猜拳小游戏! #\n");
printf("########################\n\n");
}
}void gameover(int winner)//这里和main中这个的关系是什么,winner是电脑或人胜利者就触发吗,那为什么还有else
{
if (winner)
{
printf("\n#########################################################################\n");
printf("# #\n");
printf("# ## ## #### ## ## ## #### ############## #\n");
printf("##### #### ## ## ## #### ## ## #\n");
printf("# #### ## #### ## ## ## #### ## #\n");
printf("# ## ## #### ## ## ## ######## ########\n");
printf("# ## ## #### ## ## ## ## #### #\n");
printf("# ## #### ## ## ## #### #### #\n");
printf("# ## #### ##### ####### #### ###### ######## #\n");
printf("# #\n");
printf("#########################################################################\n");
}
else
{
printf("\n##########################################################################\n");
printf("# #\n");
printf("# ## ## #### ## ## ## ########## ## #\n");
printf("##### #### ## ## ## ## ## ## ### ## #\n");
printf("# #### ## #### ## ## #### ## ## ## # ## #\n");
printf("# ## ## #### ## ## #### ## ## ##### #\n");
printf("# ## ## #### ## ## ## ## ## ## ## # ## #\n");
printf("# ## #### ## ## ### ### ## ## ### #\n");
printf("# ## #### ##### # # ######## ## #\n");
printf("# #\n");
printf("##########################################################################\n");
}
}
int main(void)
{
int human, computer; // 1、2、3分别代表剪刀石头和布
int result;
int human_win = 0;
int computer_win = 0;
welcome();
while (1)
{
human = get_human();
computer = get_computer();
// 用户输入0表示退出游戏
if (human == 0)
{
break;
}
printf("你出");
switch (human)
{
case 3: printf("剪刀,"); break;
case 6: printf("石头,"); break;
case 9: printf("布,"); break;
}
printf("我出");
switch (computer)
{
case 1: printf("剪刀,"); break;
case 2: printf("石头,"); break;
case 3: printf("布,"); break;
}
result = human + computer;
// 你出剪刀,电脑出布:3 + 3 == 6
// 你出石头,电脑出剪刀:6 + 1 == 7
// 你出布,电脑出石头:9 + 2 == 11
// 以上三种情况算你赢~
if (result == 6 || result == 7 || result == 11)
{
printf("你赢了!\n\n");
human_win++;
}
else if (result == 5 || result == 9 || result == 10)
{
printf("我赢了!\n\n");
computer_win++;
}
else
{
printf("咱打平!\n\n");
}
}
// 打平也算人类
if (human_win >= computer_win)//这里任意一个都可以出发winner吗
{
gameover(HUMANWIN);
}
else
{
gameover(COMPUTERWIN);
}
} #include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define HUMANWIN 0
#define COMPUTERWIN 1
int get_computer(void)
{
int computer;
srand((unsigned)time(NULL));
computer = rand() % 3 + 1;
return computer;
}
int get_human(void)
{
int human;
printf("请出拳(1剪刀/2石头/3布/0退出)-> ");
scanf("%d", &human);
while (human < 0 || human > 3)
{
printf("出拳错误,请重新出拳(只需要输入数字即可)-> ");
scanf("%d", &human);
}
return human * 3;
}
void welcome(void)
{
printf("\n########################\n");
printf("# 欢迎来到猜拳小游戏! #\n");
printf("########################\n\n");
}
void gameover(int winner)//这里和main中这个的关系是什么,winner是电脑或人胜利者就触发吗,那为什么还有else
{
if (winner)
{
printf("\n#########################################################################\n");
printf("# #\n");
printf("# ## ## #### ## ## ## #### ############## #\n");
printf("##### #### ## ## ## #### ## ## #\n");
printf("# #### ## #### ## ## ## #### ## #\n");
printf("# ## ## #### ## ## ## ######## ########\n");
printf("# ## ## #### ## ## ## ## #### #\n");
printf("# ## #### ## ## ## #### #### #\n");
printf("# ## #### ##### ####### #### ###### ######## #\n");
printf("# #\n");
printf("#########################################################################\n");
}
else
{
printf("\n##########################################################################\n");
printf("# #\n");
printf("# ## ## #### ## ## ## ########## ## #\n");
printf("##### #### ## ## ## ## ## ## ### ## #\n");
printf("# #### ## #### ## ## #### ## ## ## # ## #\n");
printf("# ## ## #### ## ## #### ## ## ##### #\n");
printf("# ## ## #### ## ## ## ## ## ## ## # ## #\n");
printf("# ## #### ## ## ### ### ## ## ### #\n");
printf("# ## #### ##### # # ######## ## #\n");
printf("# #\n");
printf("##########################################################################\n");
}
}
int main(void)
{
int human, computer; // 1、2、3分别代表剪刀石头和布
int result;
int human_win = 0;
int computer_win = 0;
welcome();
while (1)
{
human = get_human();
computer = get_computer();
// 用户输入0表示退出游戏
if (human == 0)
{
break;
}
printf("你出");
switch (human)
{
case 3: printf("剪刀,"); break;
case 6: printf("石头,"); break;
case 9: printf("布,"); break;
}
printf("我出");
switch (computer)
{
case 1: printf("剪刀,"); break;
case 2: printf("石头,"); break;
case 3: printf("布,"); break;
}
result = human + computer;
// 你出剪刀,电脑出布:3 + 3 == 6
// 你出石头,电脑出剪刀:6 + 1 == 7
// 你出布,电脑出石头:9 + 2 == 11
// 以上三种情况算你赢~
if (result == 6 || result == 7 || result == 11)
{
printf("你赢了!\n\n");
human_win++;
}
else if (result == 5 || result == 9 || result == 10)
{
printf("我赢了!\n\n");
computer_win++;
}
else
{
printf("咱打平!\n\n");
}
}
// 打平也算人类
if (human_win >= computer_win)//这里任意一个都可以出发winner吗
{
gameover(HUMANWIN);
}
else
{
gameover(COMPUTERWIN);
}
}
多了一个 ]
}void gameover(int winner)//这里和main中这个的关系是什么,winner是电脑或人胜利者就触发吗,那为什么还有else 大马强 发表于 2022-1-3 11:19
多了一个 ]
人类赢为什么触发的是函数中的else语句呢 开头就有个宏定义
#define HUMANWIN 0
#define COMPUTERWIN 1
假设现在人类的分数高,主函数里执行
gameover(HUMANWIN);
这是函数里参数winner=0
if条件判断条件为假,执行else 输出 you win
如果机器分高,按照上面的步骤,这是函数里参数winner=1
if条件为真,输出 you lose
所以函数的if else 是为了配合它主函数输入的参数而设定的,当然也有其他方法,比如用 1 0 当参数来表示人类输赢。 大马强 发表于 2022-1-3 12:36
开头就有个宏定义
假设现在人类的分数高,主函数里执行
谢谢 {:5_95:} {:5_108:} {:10_279:}
页:
[1]