看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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://www.ptt.cc/bbs/C_and_CPP/M.1509867939.A.E96.html
moon52016: 608行: put_CardOnRow是char吧 11/05 16:18
moon52016: 然後cardcolor 用字串陣列的話就不用那麼多if了 11/05 16:19
Billeve: 不能用char存隨機亂數嗎? 11/05 16:20
moon52016: 是可以啊 11/05 17:48
moon52016: 實際跑一遍發現:cardtakenA=true時,會直接continue 11/05 17:50
moon52016: 然後就無限迴圈了 11/05 17:50
Billeve: 原來如此 是那邊出問題嗎? 感謝大大 我這就去看看 11/05 18:10
Billeve: 小弟資質駑鈍 可以提示一下哪行嗎? 11/05 18:20
moon52016: 是邏輯問題,不是指令有誤 11/05 18:30
moon52016: A是true之後,就沒看BCD直接continue ,然後又回到A 11/05 18:31
Billeve: 我大概知道是哪行了 可是我的邏輯有錯嗎? continue 後 11/05 18:31
Billeve: 回到上面不是會重新得到一個rand嗎? 11/05 18:31
Billeve: 喔喔喔喔喔喔 我看到了 那我該怎麼改好呢?我有點想不太 11/05 18:33
Billeve: 到 11/05 18:33
moon52016: 不要使用continue ,沒有規劃好別用這東西 11/05 18:37
Billeve: 抱歉,自學的新手QQ 11/05 18:39
Billeve: 大大可不可以給我更實質的建議呢?拜託了 我已經想這問 11/05 18:39
Billeve: 題兩天了 11/05 18:39
moon52016: 就if(!A){}elseif(!B){}elseif......這樣啊 11/05 18:48
Billeve: 好的,等等馬上改看看 11/05 18:50
Billeve: 之後還有問題可以寄站內問您嗎? 11/05 18:50
moon52016: 我不熟C++,很多問題我不見得會。 11/05 18:52
moon52016: 邏輯問題建議自己在紙上走一次再開始寫 11/05 18:53
SecondRun: 感覺重複的地方太多了 可以多用函式 11/05 23:03
SecondRun: 然後switch可以取代只會有一種結果的一堆if else 11/05 23:03
SecondRun: 然後等學到物件導向之後試著把AI用物件導向的方式重寫 11/05 23:06
SecondRun: 一次吧 收穫會挺多的 11/05 23:06
bladesaurus: 這讓我想起我的嵌入式專題用thread寫玩家輪流呢 11/07 13:53
allenchen821: 116? 11/07 16:20
wannasleep: 仁暐的學生轟XD 11/14 18:56
Davinais: 甲班計概? 11/14 22:18
BRITRubbish: 原來github上面那個是樓上學長的,哈哈,還以為是外 11/16 14:09
BRITRubbish: 國人 11/16 14:11
Davinais: 所以那個star的是樓上嗎ww,可是那個寫的很爛還沒寫完(X 11/16 23:01
Davinais: 而且我也不是修甲班計概(X 11/16 23:01
aa12783509: 厲害 自學的新手可以寫到2000多行XDDD 11/30 01:15
aa12783509: 不過就是土法煉鋼而已XDD 想到什麼寫什麼 用最簡單的 11/30 01:16
aa12783509: 方式 一步一步寫出來~~~ 11/30 01:16
aa12783509: countine的部分可以看一下教學 會比較清楚~~~ 11/30 01:18
aa12783509: 看到你好像都只有用if...else的用法!! 不知道你自學 11/30 01:18
aa12783509: 是學到哪裡學到多少,上面有人提到的switch是一個蠻好 11/30 01:19
aa12783509: 使用的方法!!! 可以幫助你解少很多行的程式碼!!! 11/30 01:19
aa12783509: 這部分 可以小小提供我自己看過的資料可以去看 11/30 01:21
aa12783509: 它裡面的流程控制 應該可以幫助妳很多~~~ 11/30 01:22
aa12783509: 至於邏輯的部分 如果你對語言的架構跟使用很清楚的話! 11/30 01:22
aa12783509: 我自己的方法會是 在紙上 先寫出 假設判斷好了 要用 11/30 01:23
aa12783509: if 還是while還是還是哪些方法 會先寫出來 在看怎麼跑 11/30 01:23
aa12783509: 會來的直接打程式碼 一直想他是怎樣 會來的比較好~~ 11/30 01:23
aa12783509: 雖然我懂得也不多 也是還在自學 一起加油吧!!! 11/30 01:24