~ 如何用C++自制一个日麻游戏 ~(一)大体框架构建 § 1 主要流程

导入

要想制作一款游戏,首先要清楚它的流程,画出流程图,然后再添加一些灵魂细节。听起来是大道理但确实很重要,可以节省很多精力和返工 【你有资格说嘛

正题

我经过总结,列出了如下的游戏流程(箭头指向了下一个操作)(流程的框是瞎用的)流程
下面这张图添加了一些细节
详细流程
以上,每一个框至少需要一个函数来实现
由此,我们可以初步搭一个框架(由于交叉太多,为了方便我不得不用了 goto 语句):
注:

  1. 这里的 EAST 是一个 enum 值,以后会解释可以忽视
  2. 这里运用了 C++11 的大括号初始化方法,以后还会广泛运用
  3. last_ming 是一个 enum 类型,用来传递鸣牌的信息,以实现“抢杠”之类的操作,但现在可能还不完善,未来有可能会有修改
	Maj_system* call{ new Maj_system{ EAST } };//运行构造函数并开局发牌
	while (init_interface());				//初始化图形界面
	goto mo;								//第一次运行先摸牌
//------------------------------------------
rong_middle:
	if (call->_ronghe(last_ming))			//如果荣和
		goto jiesuan;						//结算		
//------------------------------------------//否则摸(岭上)牌
mo:
	call->_mo();							//摸牌 
//------------------------------------------
	if (call->_zimo())						//如果自摸 
		goto jiesuan;						//结算
//------------------------------------------//否则(下家)立直判断
	if (call->_lizhi())						//如果立直 
		goto rong_end;						//荣和判断
//------------------------------------------//否则判断加杠、暗杠
	last_ming = call->_jiaangang();
	if(last_ming)							//如果加杠、暗杠
		goto rong_middle;					//荣和判断
//------------------------------------------//否则打牌
da:
	call->_da();							//打牌 
//------------------------------------------
rong_end:
	if (call->_ronghe(last_ming))			//如果荣和 
		goto jiesuan;						//结算
//------------------------------------------//否则碰杠判断
	switch (call->_penggang())
	{
	case PENG:								//如果碰 
		goto da; break;						//打牌
	case DAMING:							//如果大明杠 
		goto mo; break;						//摸牌
	default:;
	}
//------------------------------------------//否则吃判断
	if (call->_chi())						//如果吃 
		goto da;							//打牌 
	else goto mo;							//否则(下家)摸牌
//------------------------------------------
jiesuan:									//运行析构函数并最终结算
	delete call;

此外,还需要明确数据间的决定关系(箭头指向决定对象)(流程的框也是瞎用的)
在这里插入图片描述
至此,main 函数的内容基本成型,可以愉快地写里面的内容啦

规则参考

[1] 日麻百科
[2] 资深麻友
[3] 雀魂麻将
[4] 雀姬麻将

原创文章,转载请标明出处,如有谬误欢迎各位指正
欢迎交流麻将算法,QQ:2639914082
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值