作者Billeve (`U2665 我得不到的东西)
看板C_and_CPP
标题[问题] 用C++写桌游程式(变色龙)
时间Sun Nov 5 15:45:36 2017
开发平台(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
在重回第一步
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 125.227.247.20
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1509867939.A.E96.html
1F:推 moon52016: 608行: put_CardOnRow是char吧 11/05 16:18
2F:→ moon52016: 然後cardcolor 用字串阵列的话就不用那麽多if了 11/05 16:19
3F:→ Billeve: 不能用char存随机乱数吗? 11/05 16:20
4F:→ moon52016: 是可以啊 11/05 17:48
5F:→ moon52016: 实际跑一遍发现:cardtakenA=true时,会直接continue 11/05 17:50
6F:→ moon52016: 然後就无限回圈了 11/05 17:50
7F:→ Billeve: 原来如此 是那边出问题吗? 感谢大大 我这就去看看 11/05 18:10
8F:→ Billeve: 小弟资质驽钝 可以提示一下哪行吗? 11/05 18:20
9F:→ moon52016: 是逻辑问题,不是指令有误 11/05 18:30
10F:→ moon52016: A是true之後,就没看BCD直接continue ,然後又回到A 11/05 18:31
11F:→ Billeve: 我大概知道是哪行了 可是我的逻辑有错吗? continue 後 11/05 18:31
12F:→ Billeve: 回到上面不是会重新得到一个rand吗? 11/05 18:31
13F:→ Billeve: 喔喔喔喔喔喔 我看到了 那我该怎麽改好呢?我有点想不太 11/05 18:33
14F:→ Billeve: 到 11/05 18:33
15F:→ moon52016: 不要使用continue ,没有规划好别用这东西 11/05 18:37
16F:→ Billeve: 抱歉,自学的新手QQ 11/05 18:39
17F:→ Billeve: 大大可不可以给我更实质的建议呢?拜托了 我已经想这问 11/05 18:39
18F:→ Billeve: 题两天了 11/05 18:39
19F:→ moon52016: 就if(!A){}elseif(!B){}elseif......这样啊 11/05 18:48
20F:→ Billeve: 好的,等等马上改看看 11/05 18:50
21F:→ Billeve: 之後还有问题可以寄站内问您吗? 11/05 18:50
22F:→ moon52016: 我不熟C++,很多问题我不见得会。 11/05 18:52
23F:→ moon52016: 逻辑问题建议自己在纸上走一次再开始写 11/05 18:53
24F:推 SecondRun: 感觉重复的地方太多了 可以多用函式 11/05 23:03
25F:→ SecondRun: 然後switch可以取代只会有一种结果的一堆if else 11/05 23:03
26F:推 SecondRun: 然後等学到物件导向之後试着把AI用物件导向的方式重写 11/05 23:06
27F:→ SecondRun: 一次吧 收获会挺多的 11/05 23:06
28F:推 bladesaurus: 这让我想起我的嵌入式专题用thread写玩家轮流呢 11/07 13:53
29F:推 allenchen821: 116? 11/07 16:20
30F:推 wannasleep: 仁暐的学生轰XD 11/14 18:56
31F:推 Davinais: 甲班计概? 11/14 22:18
32F:推 BRITRubbish: 原来github上面那个是楼上学长的,哈哈,还以为是外 11/16 14:09
33F:→ BRITRubbish: 国人 11/16 14:11
34F:推 Davinais: 所以那个star的是楼上吗ww,可是那个写的很烂还没写完(X 11/16 23:01
35F:→ Davinais: 而且我也不是修甲班计概(X 11/16 23:01
36F:推 aa12783509: 厉害 自学的新手可以写到2000多行XDDD 11/30 01:15
37F:→ aa12783509: 不过就是土法炼钢而已XDD 想到什麽写什麽 用最简单的 11/30 01:16
38F:→ aa12783509: 方式 一步一步写出来~~~ 11/30 01:16
39F:→ aa12783509: countine的部分可以看一下教学 会比较清楚~~~ 11/30 01:18
40F:→ aa12783509: 看到你好像都只有用if...else的用法!! 不知道你自学 11/30 01:18
41F:→ aa12783509: 是学到哪里学到多少,上面有人提到的switch是一个蛮好 11/30 01:19
42F:→ aa12783509: 使用的方法!!! 可以帮助你解少很多行的程式码!!! 11/30 01:19
43F:推 aa12783509: 这部分 可以小小提供我自己看过的资料可以去看 11/30 01:21
45F:→ aa12783509: 它里面的流程控制 应该可以帮助你很多~~~ 11/30 01:22
46F:→ aa12783509: 至於逻辑的部分 如果你对语言的架构跟使用很清楚的话! 11/30 01:22
47F:→ aa12783509: 我自己的方法会是 在纸上 先写出 假设判断好了 要用 11/30 01:23
48F:→ aa12783509: if 还是while还是还是哪些方法 会先写出来 在看怎麽跑 11/30 01:23
49F:→ aa12783509: 会来的直接打程式码 一直想他是怎样 会来的比较好~~ 11/30 01:23
50F:→ aa12783509: 虽然我懂得也不多 也是还在自学 一起加油吧!!! 11/30 01:24