python 贪心算法实现 斗地主发牌

#coding=utf-8
import  random;
#num 可以修改顺序  已达到改变牌大小
num=['3','4','5','6','7','8','9','10','J','Q','k','A','2'];
color=['♠','❤','♣','♢'];
kings=["Big","Small"];
list = [];
keep=[];
# 0~12 12*4=48  48+2(两张鬼牌)=50
for a in range(0,51):
    # a=50  实际上是 54张牌
    list.append(a);


#随机打乱顺序
random.shuffle(list);
#print("打乱顺序:",end='');


#print(list);


#添加到玩家的手牌中
def inPlayer(b,number):
    count = number// 4;
    yu =  number % 4;
    a=[];
    #49 和50 代表是鬼牌
    if(number==49):
        a.append(13);
        a.append(0);
    elif (number ==50):
        a.append(13);
        a.append(1);
    else:
        a.append(count);
        a.append(yu);
    b.append(a);


for a in range(0,3):
    this=list[a];
    inPlayer(keep,this);


#玩家一
one=[];
#玩家二
two=[];
#玩家三
three=[];


#分牌
for i in range(3,list.__len__()):
    p=i%3;
    number=list[i];
    if(p==0):
        inPlayer(one,number);
        continue;
    if(p==1):
        inPlayer(two,number);
        continue;
    if(p==2):
        inPlayer(three,number);
        continue;




#快速排序
#define a function
def quick(a,left,right):
    if(left>=right):
        return
    else:
        key=a[left];
        low = left;
        high= right;
        while (left < right):
            while (left < right and a[right] >= key):
                right -= 1;


            a[left] = a[right];
            while (left < right and a[left] <= key):
                left += 1;


            a[right] = a[left];


        a[left] = key;


        quick(a,low,left-1);
        quick(a,left+1,high);




quick(keep,0,keep.__len__()-1);
quick(one,0,one.__len__()-1)
quick(two,0,two.__len__()-1)
quick(three,0,three.__len__()-1)


def changeText(a):
    for i in range(0,a.__len__()):
        if(a[i][0]==13):
            if(a[i][1]==0):
                a[i]=kings[1];
            else:
                a[i]=kings[0];
        else:
            a[i]=str(num[a[i][0]])+str(color[a[i][1]]);


changeText(keep);
changeText(one);
changeText(two);
changeText(three);


print("地主牌",end=' ');
print(keep);
print("第一位玩家",end=' ');
print(one);
print("第二位玩家",end=' ');
print(two);
print("第三位玩家",end=' ');
print(three);

                
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值