抢十八游戏

前言

我国民国一直流传着一个名叫"抢十八"的抢数游戏:参与游戏的两人从1开始轮流报数,每次至少报1个数,最多报2个数,每人报的每个数不得与自已报过的或对方报过的重复,也不得跳过任何一个数。谁先报到18,谁就获胜。

玩法策略

在"抢十八"游戏中,取胜的关键在于每次报数时抢到关键数3、6、9、12、15、18‌。具体策略如下:

  1. 关键数策略‌:在"抢十八"游戏中,关键数包括3、6、9、12、15、18。玩家需要确保在每次报数时抢到这些关键数,从而控制游戏的进程。例如,要抢到18,之前必须抢到15,只留给对方3个数;同理,要抢到15,之前必须抢到12,以此类推‌12。

  2. 倒推法‌:通过倒推法可以找到这些关键数。最后要抢到18,之前必须抢到15,再之前必须抢到12,以此类推,直到3。这样,玩家可以确保在每一步都抢到关键数,直到最后抢到18‌23。

  3. 后报数者的优势‌:由于报数顺序决定了最后的结果,后报数者有必胜策略。后报数者每次都需要抢到这些关键数,直到最后抢到18‌23。

通过以上策略,玩家可以在"抢十八"游戏中取得胜利。

思路

此代码是游戏,并无思路。

代码解决

cpp 复制代码
/*头文件部分*/
#include <iostream>
#include <windows.h>
#include <random>
/*定义变量部分*/
using namespace std;
long long number_off, count, target;
long long Number_of_player_victories = 0, Number_of_computer_victories = 0;
/*玩家报数函数部分*/
static void Player_reports() {
	number_off = 0;
	while (number_off <= 0) {
		cout << "当前" << number_off << ",请报增量:";
		cin >> number_off;
		if (number_off < 1 || number_off > 2) {
			cout << "请重新报数";
			number_off = 0;
			system("pause");
			system("cls");
		}
		else if (number_off + ::count > target) {
			cout << "请重新报数";
			number_off = 0;
			system("pause");
			system("cls");
		}
	}
	::count += number_off;
	cout << "玩家报数:" << ::count;
	system("pause");
	system("cls");
}
/*计算机报数函数部分*/
static void Computer_reporting() {
	if ((target - ::count) % 3 == 2)
		number_off = 2;
	else
		number_off = 1;
	::count += number_off;
	cout << "计算机报数:" << ::count;
	system("pause");
	system("cls");
}
/*主函数部分*/
int main() {
	target = 18; //这里可以修改
	::count = 0;
	cout << "游戏开始..." << endl;
	system("pause");
	system("cls");
	std::random_device rd;
	std::mt19937 gen(rd());
	std::uniform_int_distribution<> distrib(1, 2);
	int random_number = distrib(gen);
	if (1 == random_number)
		Computer_reporting();
	while (::count != target) {
		Player_reports();
		if (::count == target)
			cout << "你赢了一局!" << endl;
		else {
			Computer_reporting();
			if (::count == target)
				cout << "计算机赢了一局!" << endl;
		}
	}
	return 0;
}
相关推荐
minji...18 分钟前
Linux相关工具vim/gcc/g++/gdb/cgdb的使用详解
linux·运维·服务器·c++·git·自动化·vim
_OP_CHEN31 分钟前
C++基础:(九)string类的使用与模拟实现
开发语言·c++·stl·string·string类·c++容器·stl模拟实现
爱编程的化学家1 小时前
代码随想录算法训练营第27天 -- 动态规划1 || 509.斐波那契数列 / 70.爬楼梯 / 746.使用最小花费爬楼梯
数据结构·c++·算法·leetcode·动态规划·代码随想录
数字化顾问2 小时前
C++分布式语音识别服务实践——架构设计与关键技术
c++
智能化咨询2 小时前
C++分布式语音识别服务实践——性能优化与实战部署
c++
ajassi20002 小时前
开源 C++ QT QML 开发(十四)进程用途
c++·qt·开源
闻缺陷则喜何志丹2 小时前
【C++贪心】P8769 [蓝桥杯 2021 国 C] 巧克力|普及+
c++·算法·蓝桥杯·洛谷
2501_918126913 小时前
使用HTML和Python开发街霸游戏
python·游戏·html
杨小码不BUG3 小时前
灯海寻踪:开灯问题的C++精妙解法(洛谷P1161)
c++·算法·数学建模·位运算·浮点数·信奥赛·csp-j/s
杨小码不BUG3 小时前
心痛之窗:滑动窗口算法解爱与愁的心痛(洛谷P1614)
开发语言·c++·算法·滑动窗口·csp-j/s·多维向量