任务:编程实现简单的剪刀石头布(也称石头剪刀布)游戏,实现玩家与计算机之间的对战。
基本编程步骤:
- 设置基本框架:包括必要的头文件和命名空间。
- 声明全局变量:用于存储计算机的手势。
- 实现函数:
randR
:生成并打印计算机的随机手势。Judge
:判断并打印游戏结果。print
:打印玩家的手势。
- 编写主函数:处理玩家输入,调用相关函数,控制游戏流程。
导入头文件和命名空间
#include<iostream> // 导入输入输出流库
#include<ctime> // 导入时间库,用于生成随机数
using namespace std; // 使用标准命名空间
全局变量声明
int y; // 全局变量y,用来存储计算机出的手势
随机生成计算机手势的函数 'randR
'
void randR(int &y) {
srand((int)time(NULL)); // 设置随机数种子
int x;
x = rand() % 3 + 1; // 生成1到3的随机数
y = x; // 将生成的随机数赋值给y
cout << "机器:" << " ";
// 根据随机数输出计算机的手势
switch (x) {
case 1:
cout << "剪刀" << endl;
break;
case 2:
cout << "石头" << endl;
break;
case 3:
cout << "布" << endl;
break;
default:
cout << "error!" << endl;
}
}
判断输赢的函数 'Judge
'
void Judge(int x) {
// 判断玩家和计算机的手势,输出结果
if (x == y)
cout << "平局" << endl;
else if ((x == 1 && y == 2) || (x == 2 && y == 3) || (x == 3 && y == 1))
cout << "你输了" << endl;
else if ((x == 2 && y == 1) || (x == 3 && y == 2) || (x == 1 && y == 3))
cout << "你赢了" << endl;
}
打印玩家手势的函数 'print'
void print(int x) {
// 根据玩家输入的数字输出相应的手势
switch (x) {
case 1:
cout << "你出了:" << " ";
cout << "剪刀;" << " ";
break;
case 2:
cout << "你出了:" << " ";
cout << "石头;" << " ";
break;
case 3:
cout << "你出了:" << " ";
cout << "布;" << " ";
break;
case 4:
cout << "退出游戏" << endl;
break;
default:
cout << "error!" << endl;
}
}
主函数 'main
'
int main() {
int x;
cout << "游戏开始,请输入:(1-剪刀,2-石头,3-布,4-结束游戏)" << " ";
cin >> x;
cout << endl;
print(x);
while (x != 4) {
randR(y);
Judge(x);
cout << "游戏开始,请输入:(1-剪刀,2-石头,3-布,4-结束游戏)" << " ";
cin >> x;
cout << endl;
print(x);
}
}
完整代码:
#include<iostream>
#include<ctime>
using namespace std;
int y; // 全局变量y,存储计算机出的手势
// 随机生成计算机手势的函数
void randR(int &y) {
srand((unsigned int)time(NULL)); // 设置随机数种子,注意只需设置一次
y = rand() % 3 + 1; // 生成1到3的随机数,对应剪刀、石头、布
cout << "机器:" << " ";
switch (y) {
case 1:
cout << "剪刀" << endl;
break;
case 2:
cout << "石头" << endl;
break;
case 3:
cout << "布" << endl;
break;
default:
cout << "error!" << endl;
}
}
// 判断输赢的函数
void Judge(int x) {
if (x == y)
cout << "平局" << endl;
else if ((x == 1 && y == 2) || (x == 2 && y == 3) || (x == 3 && y == 1))
cout << "你输了" << endl;
else if ((x == 2 && y == 1) || (x == 3 && y == 2) || (x == 1 && y == 3))
cout << "你赢了" << endl;
}
// 打印玩家手势的函数
void print(int x) {
cout << "你出了:" << " ";
switch (x) {
case 1:
cout << "剪刀;" << " ";
break;
case 2:
cout << "石头;" << " ";
break;
case 3:
cout << "布;" << " ";
break;
case 4:
cout << "退出游戏" << endl;
break;
default:
cout << "error!" << endl;
}
}
// 主函数
int main() {
int x;
srand((unsigned int)time(NULL)); // 初始化随机数种子
cout << "游戏开始,请输入:(1-剪刀,2-石头,3-布,4-结束游戏)" << " ";
cin >> x;
cout << endl;
while (x != 4) {
print(x);
randR(y);
Judge(x);
cout << "游戏开始,请输入:(1-剪刀,2-石头,3-布,4-结束游戏)" << " ";
cin >> x;
cout << endl;
}
return 0;
}
运行结果