猪年总得写一道和猪有关的大模拟吧

第一次给黑题写题解,可能写得不怎么好qwq

这道题就是大模拟,没有任何方法可言,大约行左右的代码。一定要耐心,不断找出程序中的小,然后才能解决。数据可以从下载。

前面的题解已经把很多东西说得很明白了,我就来说一说我掉过的一些坑吧。

下面是程序分段讲解:

定义和小函数

关于每只猪的定义

多用用小函数,可以使程序变得更加简洁,从而不至于达到行的恐怖水平。

打印第只猪的手牌:

大家可能会把它写进主程序,因为它只会用到一次,但是在调试中这段语句可以帮你大忙。

寻找并扣除卡牌:

找到卡牌就返回并扣除,没找到就返回

摸牌:

这个如果不写到过程里去的话,那我很佩服你的意志。

扣血的实现

这一次,我们把扣血和死亡结算放在一块运行。

我们考虑一头猪死了,如何更新整个环(链表?)继续运行下去,这就是我为什么要开设了,一个前导和后继可以解决所有问题。

它前面的猪指向它后面的猪

它后面的猪指向它前面的猪

事实上,如果用暴力求解的话,也不会超时。

关系的实现

下面函数中,第一个表示询问是不是敌人,第二个则询问两人是不是同伙,第三个表示献殷勤,第四个表示表敌意。

询问或变更的时候要以出发,应当判断的真实身份和的显露身份。没有显露身份则不能进行下去。

部分卡牌的使用

这里的部分卡牌,包括:

万箭齐发,决斗,南猪入侵,杀(闪),无懈可击

杀(闪)

相对于其他几部分,这一部分相对容易些。

决斗

决斗被无懈可击挡住的情况我们在这里暂不讨论,这里讨论的是如果的决斗生效的情况。

南猪入侵,万箭齐发

这两个可以放在一起讨论。

无懈可击

这里就显得比较复杂了。我们用表示锦囊牌的发出者,表示锦囊牌的承受者,表示上一个无懈可击的发出者。初始为

读入/初始化/结束部分

嗯,没错,我们先讲这个,最后再来讲如何运行整个游戏。

游戏的运行

由于所有部分都已经讲完了,所以直接上代码。

完整代码