基于VIsual Studio:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<time.h>
#include<windows.h>
#define scissors 1
#define rock 2
#define paper 3
void introduce_game();//游戏介绍
int player_choice( );//玩家的选择
int computer_choice( );//电脑的选择
void print_choice(int choice);//打印选择的结果
void judge_winner(int player_choose, int compueter_choose);//判断胜利者
char judge_continue();//判断是否要继续
int main(void)
{
srand(time(NULL));
char c = 'y';
while(c=='y'){
introduce_game();
int player_choose = player_choice();
int computer_choose = computer_choice();
printf("你选择了:\n" );
print_choice(player_choose);
printf("电脑选择了:\n");
print_choice(computer_choose);
judge_winner(player_choose, computer_choose);
c= judge_continue();
system("cls");//清屏
}
return 0;
}
void introduce_game() {//游戏介绍
puts("剪刀石头布人机对决现在开始!");
puts("规则:剪刀1石头2布3");
puts("———————————————————————————");
}
int player_choice() {//玩家选择
int choice;
puts("请输入你的选择:");
scanf("%d", &choice);
while (choice< scissors || choice>paper) {
puts("无效的选择请重新选择:剪刀1石头2布3");//判断是否符合要求
scanf("%d", &choice);
}
return choice;
}
int computer_choice( ) {//电脑选择
int choice;
choice = rand() % 3 + 1;
return choice;
}
void print_choice(int choice){//数字转化为文字
switch (choice) {
case scissors: puts("剪刀"); break;
case rock: puts("石头"); break;
case paper: puts("布"); break;
}
}
void judge_winner(int player_choose, int compueter_choose) {//判断胜利者
if ( player_choose== compueter_choose) {
puts("平局");
}
else if ((player_choose == scissors && compueter_choose == paper) || (player_choose == rock && compueter_choose == scissors) || (player_choose == paper && compueter_choose == rock)) {
puts("你赢了");
}
else {
puts("你输了");
}
}
char judge_continue() {//判断玩家是否需要继续游戏
char c;
puts("是否继续(y/n)");
scanf(" %c", &c);//注意缓冲区
if (c == 'y' || c == 'Y') {
c = 'y';
}
else {
c = 'n';
}
return c;
}