[问题] 用C++写桌游程式(变色龙)

楼主: Billeve (抖M是我)   2017-11-05 15:45:36
开发平台(Platform): (Ex: Win10, Linux, ...) WIN10
如题,小弟最近在练习用c++写桌游
是很简陋的那一种
基本上就是把规则架设好
剩下的AI都用随机乱数决定出牌
但是问题来了
程式很容易执行到一半就停止
也不是当机就是一直没跑出下个指令
通常出现在
AI拿取牌后发生
或是AI拿取牌后却改了两个BOOL值
小弟进行了单元测试都没问题
但是和在一起就GG了
这是部分程式而已还没完成
恳请指点一下迷津
是不是因为随机乱数产生需要时间呢?
程式码(Code):(请善用置底文网页, 记得排版)
http://codepad.org/yAzkV6Gz
补充说明(Supplement):
程式的逻辑为
move决定抽牌或收牌
收过牌的该玩家 _take_card 会变成true
被收过的那列 card_taken 会变成 true
并重置值
直到四个玩家都变成true
在重回第一步
作者: moon52016 (matrix)   2017-11-05 16:18:00
608行: put_CardOnRow是char吧然后cardcolor 用字串阵列的话就不用那么多if了
楼主: Billeve (抖M是我)   2017-11-05 16:20:00
不能用char存随机乱数吗?
作者: moon52016 (matrix)   2017-11-05 17:48:00
是可以啊实际跑一遍发现:cardtakenA=true时,会直接continue然后就无限循环了
楼主: Billeve (抖M是我)   2017-11-05 18:10:00
原来如此 是那边出问题吗? 感谢大大 我这就去看看小弟资质驽钝 可以提示一下哪行吗?
作者: moon52016 (matrix)   2017-11-05 18:30:00
是逻辑问题,不是指令有误A是true之后,就没看BCD直接continue ,然后又回到A
楼主: Billeve (抖M是我)   2017-11-05 18:31:00
我大概知道是哪行了 可是我的逻辑有错吗? continue 后回到上面不是会重新得到一个rand吗?喔喔喔喔喔喔 我看到了 那我该怎么改好呢?我有点想不太到
作者: moon52016 (matrix)   2017-11-05 18:37:00
不要使用continue ,没有规划好别用这东西
楼主: Billeve (抖M是我)   2017-11-05 18:39:00
抱歉,自学的新手QQ大大可不可以给我更实质的建议呢?拜托了 我已经想这问题两天了
作者: moon52016 (matrix)   2017-11-05 18:48:00
就if(!A){}elseif(!B){}elseif......这样啊
楼主: Billeve (抖M是我)   2017-11-05 18:50:00
好的,等等马上改看看之后还有问题可以寄站内问您吗?
作者: moon52016 (matrix)   2017-11-05 18:52:00
我不熟C++,很多问题我不见得会。逻辑问题建议自己在纸上走一次再开始写
作者: SecondRun (雨夜琴声)   2017-11-05 23:03:00
感觉重复的地方太多了 可以多用函式然后switch可以取代只会有一种结果的一堆if else然后等学到物件导向之后试着把AI用物件导向的方式重写一次吧 收获会挺多的
作者: bladesaurus (刀鋒龍)   2017-11-07 13:53:00
这让我想起我的嵌入式专题用thread写玩家轮流呢
作者: allenchen821 (Allen)   2017-11-07 16:20:00
116?
作者: wannasleep (汪纳史利普)   2017-11-14 18:56:00
仁暐的学生轰XD
作者: Davinais (水灵流喵)   2017-11-14 22:18:00
甲班计概?
作者: BRITRubbish (英式辣鸡)   2017-11-16 14:09:00
原来github上面那个是楼上学长的,哈哈,还以为是外国人
作者: Davinais (水灵流喵)   2017-11-16 23:01:00
所以那个star的是楼上吗ww,可是那个写的很烂还没写完(X而且我也不是修甲班计概(X
作者: aa12783509 (Ace)   2017-11-30 01:15:00
厉害 自学的新手可以写到2000多行XDDD不过就是土法炼钢而已XDD 想到什么写什么 用最简单的方式 一步一步写出来~~~countine的部分可以看一下教学 会比较清楚~~~看到你好像都只有用if...else的用法!! 不知道你自学是学到哪里学到多少,上面有人提到的switch是一个蛮好使用的方法!!! 可以帮助你解少很多行的程式码!!!这部分 可以小小提供我自己看过的资料可以去看https://openhome.cc/Gossip/CppGossip/index.html它里面的流程控制 应该可以帮助妳很多~~~至于逻辑的部分 如果你对语言的架构跟使用很清楚的话!我自己的方法会是 在纸上 先写出 假设判断好了 要用if 还是while还是还是哪些方法 会先写出来 在看怎么跑会来的直接打程式码 一直想他是怎样 会来的比较好~~虽然我懂得也不多 也是还在自学 一起加油吧!!!

Links booklink

Contact Us: admin [ a t ] ucptt.com