Python 板


LINE

作業要用thread做一個類似心臟病的遊戲 每個玩家手上會有一些牌 如果玩家手中的牌花色或數字一樣就會進行強牌的動作 搶到牌後就捨棄掉配對的牌 如果所以玩家沒有相同花色或數字則會進行偷牌的動作 偷到的牌會加入手牌中 遊戲是做出來了 但是總是會有一人持續掌權一陣子才換人(也就是連續搶/偷牌) 如果加上延遲(time.sleep),又會變成輪流每個人一個動作 請問我該怎麼做避免同個人一直搶牌呢(或是公平一些)? --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.110.31.250
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1494171602.A.5E0.html
1F:推 Raymond0710: 用lock 看誰先acquire呢05/08 01:21
2F:→ ymps3502: 我是把acquire放在迴圈裡,所以當Lock的時候,其他threa05/08 02:58
3F:→ ymps3502: d會在迴圈空轉直到有thread release,可是當A thread re05/08 03:00
4F:→ ymps3502: lease 時有非常高的機會再度搶到lock05/08 03:00
5F:→ Leon: Use priority05/08 04:59
6F:推 adgjl5645: 你有考慮到 Python 的 GIL 嗎?這種情況下應該做不出你05/08 05:21
爬了一下GIL的問題,所以只能自己設定每個thread的priority來解決囉?
7F:→ adgjl5645: 想像中的 multithread 的情況喔05/08 05:21
8F:推 mars90226: 乾脆你自己隨機分配現在該執行的是哪個thread05/08 09:54
是有想過如果同個玩家連續搶到三次就不讓他搶下一次啦…
9F:→ zerof: code?05/08 10:30
這是run裡面的 while len(self.cards) != 0 and not GAMEOVER: threadLock.acquire() if match_card(self.cards): # 強牌 elif STEAL: # 偷牌 print_all_players_card() # 會更新下一張牌,並確認是否可以STEAL threadLock.release() ※ 編輯: ymps3502 (111.80.114.99), 05/08/2017 10:59:40 ※ 編輯: ymps3502 (223.143.103.77), 05/08/2017 11:21:21
10F:→ zerof: ...Lock 要共用才是對的 05/08 12:31
11F:→ zerof: https://repl.it/HlZ9/0 05/08 12:31
阿,不好意思,我想說為了閱讀方便所以寫成threading.Lock(),實際上有在外面宣告threadLock = threading.Lock(),上面的code我修正過了 ※ 編輯: ymps3502 (140.120.15.137), 05/08/2017 13:52:50
12F:→ zerof: ....所以是每個 threading 各跑一個 while without IO? 05/08 14:06
是的
13F:→ blc: random延遲? 05/08 15:24
※ 編輯: ymps3502 (140.120.15.137), 05/08/2017 15:42:46
14F:→ zerof: 那沒用, lock 前 print(end="") or sleep(random()/1000)之 05/08 15:46
15F:→ zerof: 類的吧, 後者會比較明顯一點 05/08 15:46
感謝各位,使用random有明顯改善了! ※ 編輯: ymps3502 (140.120.15.137), 05/08/2017 15:54:33







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP