python實(shí)現(xiàn)斗地主分牌洗牌
本文實(shí)例為大家分享了python實(shí)現(xiàn)斗地主分牌洗牌的具體代碼,供大家參考,具體內(nèi)容如下
1、建立一個(gè)序列,共54個(gè)元素,表示一副撲克牌,初始化時(shí)是有順序的。
2、編寫一段代碼完成洗牌功能,即將剛才的序列從有序的排列變成隨機(jī)的無序排列。
3、編寫一段代碼完成切牌功能,即找到一個(gè)1-54的隨機(jī)數(shù),將剛才洗牌后的序列從這個(gè)隨機(jī)數(shù)開始。
4、編寫一段代碼完成發(fā)牌功能,將剛才這個(gè)切牌后的無序序列,按順序分發(fā)到三個(gè)序列中去,并剩余三張底牌(也是一個(gè)序列)。
5、編寫一段代碼完成理牌功能,首先將分牌后的每個(gè)序列排序(有自帶的函數(shù)),然后按照從大到小的順序按牌型的方式顯示出來。
6、完成隨機(jī)叫地主功能,隨機(jī)出現(xiàn)一個(gè)地主,將三張底牌分給這個(gè)地主,形成新的序列并且降序排列。
7、要顯示出牌的名稱,如:Spade2(黑桃2)、Heart2(紅桃2)、Club2(梅花2)、Diamond2(方片2)等,也可以用縮寫:S2、H2、C2、D2等。可以使用映射(即字典),也可以自行編寫顯示程序。
代碼如下
poker=[] #產(chǎn)生一副牌
pokers=[]
num=101 #用101代指黑桃1,102代指紅桃1,201代指黑桃2
for length in range(0,52):
poker.append(num)
num+=1
if (length+1)%4==0:
num-=4
num+=10
poker.extend([230,240])
print(poker)
import random #洗牌 奇數(shù)為一組 偶數(shù)為一組
for leng in range(0,8):
poker1=[]
poker2=[]
for length in range(0,54):
if length%2==0:
poker1.append(poker[length])
else:
poker2.append(poker[length])
temp=random.randrange(0,2) #為1時(shí) 偶奇相加 ,為2時(shí)奇偶相加,共2**8種結(jié)果
if temp%2==0:
poker=poker1+poker2
else:
poker=poker2+poker1
print(poker)
number=int(input("請輸入切牌的位置;")) #切牌
poker1=poker[0:number]
poker2=poker[number:54]
poker=poker2+poker1
print(poker)
player1=[] #分牌
player2=[]
player3=[]
for length in range(0,51):
if length%3==0:
player1.append(poker[length])
if length%3==1:
player2.append(poker[length])
if length%3==2:
player3.append(poker[length])
for length in range(51,54): #剩下的三張牌 (地主的牌)
num=(poker[length]-90)//10
temp=num
if num==11:
temp='J'
if num==12:
temp='Q'
if num==13:
temp='K'
if poker[length]%10==1:
name=str(temp)+'S'
pokers.append(name)
elif poker[length]%10==2:
name=str(temp)+'H'
pokers.append(name)
elif poker[length]%10==3:
name=str(temp)+'C'
pokers.append(name)
elif poker[length]%10==4:
name=str(temp)+'D'
pokers.append(name)
elif poker[length]==230:
name='小王'
pokers.append(name)
elif poker[length]==240:
name='大王'
pokers.append(name)
print(pokers)
power=random.randrange(1,4)
if power==1:
player1.extend(poker[51:54])
if power==2:
player2.extend(poker[51:54])
if power==3:
player3.extend(poker[51:54])
player1.sort() #降序
player2.sort()
player3.sort()
player1=player1[::-1]
player2=player2[::-1]
player3=player3[::-1]
player1s=[] #顯示
player2s=[]
player3s=[]
for length in range(0,len(player1)): #顯示 player1
num=(player1[length]-90)//10
temp=num
if num==11:
temp='J'
if num==12:
temp='Q'
if num==13:
temp='K'
if player1[length]%10==1:
name=str(temp)+'S'
player1s.append(name)
elif player1[length]%10==2:
name=str(temp)+'H'
player1s.append(name)
elif player1[length]%10==3:
name=str(temp)+'C'
player1s.append(name)
elif player1[length]%10==4:
name=str(temp)+'D'
player1s.append(name)
elif player1[length]==230:
name='小王'
player1s.append(name)
elif player1[length]==240:
name='大王'
player1s.append(name)
for length in range(0,len(player2)): #顯示 player2
num=(player2[length]-90)//10
temp=num
if num==11:
temp='J'
if num==12:
temp='Q'
if num==13:
temp='K'
if player2[length]%10==1:
name=str(temp)+'S'
player2s.append(name)
elif player2[length]%10==2:
name=str(temp)+'H'
player2s.append(name)
elif player2[length]%10==3:
name=str(temp)+'C'
player2s.append(name)
elif player2[length]%10==4:
name=str(temp)+'D'
player2s.append(name)
elif player2[length]==230:
name='小王'
player2s.append(name)
elif player2[length]==240:
name='大王'
player2s.append(name)
for length in range(0,len(player3)): #顯示 player3
num=(player3[length]-90)//10
temp=num
if num==11:
temp='J'
if num==12:
temp='Q'
if num==13:
temp='K'
if player3[length]%10==1:
name=str(temp)+'S'
player3s.append(name)
elif player3[length]%10==2:
name=str(temp)+'H'
player3s.append(name)
elif player3[length]%10==3:
name=str(temp)+'C'
player3s.append(name)
elif player3[length]%10==4:
name=str(temp)+'D'
player3s.append(name)
elif player3[length]==230:
name='小王'
player3s.append(name)
elif player3[length]==240:
name='大王'
player3s.append(name)
if len(player1s)==17:
print('農(nóng)民:',player1s)
else:
print('地主:',player1s)
if len(player2s)==17:
print('農(nóng)民:',player2s)
else:
print('地主:',player2s)
if len(player3s)==17:
print('農(nóng)民:',player3s)
else:
print('地主:',player3s)
(顯示可先編為函數(shù),使用時(shí)引用,可減少代碼行數(shù))
(此方法未用python內(nèi)置函數(shù),如果你嫌麻煩可在此基礎(chǔ)上再次優(yōu)化)
更多有趣的經(jīng)典小游戲?qū)崿F(xiàn)專題,分享給大家:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python數(shù)據(jù)處理中pd.concat與pd.merge的區(qū)別及說明
這篇文章主要介紹了Python數(shù)據(jù)處理中pd.concat與pd.merge的區(qū)別及說明,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
python 圖像判斷,清晰度(明暗),彩色與黑白實(shí)例
這篇文章主要介紹了python 圖像判斷,清晰度(明暗),彩色與黑白實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
如何用Python實(shí)現(xiàn)自動(dòng)發(fā)送微博
大家好,本篇文章主要講的是如何用Python實(shí)現(xiàn)自動(dòng)發(fā)送微博,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏2022-01-01
Scrapy爬蟲多線程導(dǎo)致抓取錯(cuò)亂的問題解決
本文針對Scrapy爬蟲多線程導(dǎo)致抓取錯(cuò)亂的問題進(jìn)行了深入分析,并提出了相應(yīng)的解決方案,具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11
python自帶tkinter庫實(shí)現(xiàn)棋盤覆蓋圖形界面
這篇文章主要為大家詳細(xì)介紹了python自帶tkinter庫實(shí)現(xiàn)棋盤覆蓋圖形界面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
如何使用Python JSON解析和轉(zhuǎn)換數(shù)據(jù)
JSON 是文本,使用 JavaScript 對象表示法編寫,Python 有一個(gè)內(nèi)置的 json 包,可用于處理 JSON 數(shù)據(jù),本文給大家介紹使用Python JSON解析和轉(zhuǎn)換數(shù)據(jù)的方法,感興趣的朋友跟隨小編一起看看吧2023-11-11
Python3編碼問題 Unicode utf-8 bytes互轉(zhuǎn)方法
今天小編就為大家分享一篇Python3編碼問題 Unicode utf-8 bytes互轉(zhuǎn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10

