C语言石头剪刀布游戏:稳赢策略与平局控制
C语言石头剪刀布游戏:稳赢策略与平局控制
本代码实现了一个石头剪刀布游戏,玩家需要根据对手的出招,给出对应的赢招。为了让游戏更具趣味性,程序会每隔K次出招后,设定一次平局。
思路:
为了稳赢不输,我们需要在对手出招之前,根据之前的出招预处理出自己的赢招。根据石头剪刀布的游戏规则,石头赢剪刀,剪刀赢布,布赢石头。因此,我们可以设定一个赢招数组 win[i],win[i]=i%3+1,表示第 i 个赢招。
程序读取对手的出招,并根据 win 数组给出自己的出招。为了避免对手输得太惨,程序设置了一个计数器,每隔 k 次出招就设定一次平局。此外,如果对手已经连续输了两次,程序也会直接设定一次平局。
输入格式:
输入首先在第一行给出正整数 K(≤10),即平局间隔的次数。随后每行给出对手的一次出招:'ChuiZi' 代表“锤子”、'JianDao' 代表“剪刀”、'Bu' 代表“布”。'End' 代表输入结束,这一行不要作为出招处理。
输出格式:
对每一个输入的出招,按要求输出稳赢或平局的招式。每招占一行。
输入样例:
2
ChuiZi
JianDao
Bu
JianDao
Bu
ChuiZi
ChuiZi
End
输出样例:
Bu
ChuiZi
Bu
ChuiZi
JianDao
ChuiZi
Bu
C++ 代码:
#include <iostream>
using namespace std;
int main() {
int k, cnt = 0;
cin >> k;
int win[3] = {2, 3, 1}; // 赢招数组
string s;
while (cin >> s && s != "End") {
if (cnt % k == 0 || cnt >= 2) { // 每隔 k 次或连续输两次,设定平局
cout << s << endl;
cnt = 0; // 重置计数器
} else {
cout << win[s == "ChuiZi" ? 0 : s == "JianDao" ? 1 : 2] << endl;
cnt++; // 计数器加 1
}
}
return 0;
}
原文地址: https://www.cveoy.top/t/topic/oSws 著作权归作者所有。请勿转载和采集!