[問題] 用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