cmd实现 猜拳游戏(剪刀石头布)
使用工具:VS2019
程序介绍:
- 游戏菜单
- 游戏初始化(玩家数据和电脑数据)
- 开始游戏
- 判定结果
- 计算得分
- 展示得分
- 谁最终赢了
规则:三局两胜
0:石头 1:剪子 2:布
一、代码部分
头文件game.h:
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct GAMEROLE
{
char name[10];
int hand;
int score;
}player, computer;
//1.游戏菜单
void gameMenu();
//2.游戏初始化(玩家数据和电脑数据)
void gameInit(int hand1, int hand2, int score1, int score2);
//3.开始游戏
void startGame(int hand1, int hand2);
//4.判定结果
int judgeGame(int hand1, int hand2);
//5.计算得分
void calculateScore(int whoWin);
//6.展示得分
void showScore();
//7.谁最终赢了
int whoFinallyWin(int score1, int score2);
源文件game.c:
#include "game.h"
//1.游戏菜单
void gameMenu()
{
printf("----------------\n");
printf("! start game !\n");
printf("----------------\n");
}
//2.游戏初始化(玩家数据和电脑数据)
void gameInit(int hand1, int hand2, int score1, int score2)
{
player.hand = hand1; //玩家出拳
player.score = score1; //玩家得分
computer.hand = hand2; //电脑出拳
computer.score = score2; //电脑的分
}
//3.开始游戏
void startGame(int hand1, int hand2)
{
switch (hand1) //输出玩家的手势
{
case 0:
printf("Player`s hand is STONE!\n");
break;
case 1:
printf("Player`s hand is CUT!\n");
break;
case 2:
printf("Player`s hand is PAPER!\n");
break;
default:
break;
}
switch (hand2) //输出电脑的手势
{
case 0:
printf("Computer`s hand is STONE!\n");
break;
case 1:
printf("Computer`s hand is CUT!\n");
break;
case 2:
printf("Computer`s hand is PAPER!\n");
break;
default:
break;
}
}
//4.判定结果
int judgeGame(int hand1, int hand2)
{
switch (hand1 - hand2)
{
case -1:
case 2:
return 1;
case 0:
return 0;
case -2:
case 1:
return -1;
default:
return 999;
}
}
//5.计算得分
void calculateScore(int whoWin)
{
switch (whoWin)
{
case 1:
++player.score;
break;
case 0:
break;
case -1:
++computer.score;
break;
default:
break;
}
}
//6.展示得分
void showScore()
{
printf("player`s name:%s\n", player.name);
printf("player`s score:%d\n", player.score);
printf("computer`s name:%s\n", computer.name);
printf("computer`s score:%d\n", computer.score);
}
//7.谁最终赢了
int whoFinallyWin(int score1, int score2)
{
if (score1 > score2)
return 1;
else if (score1 == score2)
return 0;
else
return -1;
}
源文件main.c:
#include "game.h"
int main()
{
srand((unsigned)time(NULL));
int level = 0;
//1.游戏菜单
gameMenu();
puts("\n");
//2.游戏初始化(玩家数据和电脑数据)
printf("Input player`s name:\n");
scanf_s("%s", player.name, 10);
printf("Input computer`s name:\n");
scanf_s("%s", computer.name, 10);
gameInit(0, 0, 0, 0);
puts("\n");
//三局
while (level < 3)
{
//3.开始游戏
int hand1 = 0, hand2 = 0;
printf("Player`s hand(0~2) is:\n");
scanf_s("%d", &hand1);
while (hand1 < 0 || hand1>2)
{
printf("Error!\n");
printf("Player`s hand is:\n");
scanf_s("%d", &hand1);
}
hand2 = rand() % 3;
startGame(hand1, hand2);
puts("\n");
//4.判定结果
int playerWin = judgeGame(hand1, hand2);
if (playerWin == 1)
{
printf("Player WIN!!!\n");
}
else if (playerWin == 0)
{
printf("No one WIN!!!\n");
}
else if (playerWin == -1)
{
printf("Player LOSE!!!\n");
}
else
{
printf("ERROR!!!\n");
}
puts("\n");
//5.计算得分
calculateScore(playerWin);
//6.展示得分
showScore();
puts("\n");
++level;
}
//7.谁最终赢了
int WIN_FLAG = whoFinallyWin(player.score, computer.score);
if (WIN_FLAG == 1)
{
printf("%s WIN!!!\n", player.name);
}
else if (WIN_FLAG == 0)
{
printf("NO ONE WIN!!!\n");
}
else if (WIN_FLAG == -1)
{
printf("%s WIN!!!\n", computer.name);
}
system("pause");
return 0;
}
二、运行结果
(三局两胜制)