栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【Python】YouGiOh

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Python】YouGiOh

本代码可直接拿来使用,由于学业原因没有充足的时间去完成这个代码,本人学习代码不久,变量命名和代码化简什么的还有待提高,不喜勿喷

请在使用前确保已安装threading、time和tqdm库

如有错误欢迎指正
import threading
import time
from tqdm import tqdm, trange
import random

def timeprint0():
    print(format('33[1;31m===============作者:明月吾风==============',))
def timeprint1():
    print(format('该代码仅供学习使用,不得用于商业','=^29'))
def timeprint2():
    print(format('该游戏为文字游戏,尚未进行游戏开发','=^28'))
def timeprint3():
    print(format('如有错误欢迎指出','=^35'))
def timeprint4():
    print('='*41)
    print('='*41)
    
def startaddcard():
    global myallcard,yourallcard,myhandcard,yourhandcard,turn
    if turn == 1:
        position = random.randint(0,len(myallcard)-1)
        myhandcard.append(myallcard[position])
        print('你抽了一张:{}'.format(myallcard[position].name))
        del myallcard[position]
        return turn,myallcard,myhandcard
    else:
        position = random.randint(0,len(yourallcard)-1)
        yourhandcard.append(yourallcard[position])
        del yourallcard[position]
        return turn,yourallcard,yourhandcard
    
def start4card():
    global myallcard,yourallcard,myhandcard,yourhandcard
    while len(myhandcard)<4 or len(yourhandcard) < 4:
        startaddcard()
        turnover()
    print('决斗开始!')
    return myallcard,yourallcard,myhandcard,yourhandcard

def addacard():
    global myallcard,yourallcard,myhandcard,yourhandcard,turn
    if turn == 1:
        print('我方的抽卡阶段')
        time.sleep(0.5)
        print('我:我的回合,抽卡!')
        time.sleep(1)
        position = random.randint(0,len(myallcard)-1)
        myhandcard.append(myallcard[position])
        print('你抽了一张:{}'.format(myallcard[position].name))
        del myallcard[position]
        return turn,myallcard,myhandcard
    else:
        print('对方的抽卡阶段')
        time.sleep(0.5)
        print('对方:我的回合,抽卡!')
        time.sleep(1)
        position = random.randint(0,len(yourallcard)-1)
        yourhandcard.append(yourallcard[position])
        del yourallcard[position]
        return turn,yourallcard,yourhandcard
    
def addtwocard():
    global myusemagic,cancelopportunity,yourdeadcard,mydeadcard,myhandcard,yourhandcard,myallcard,yourallcard,turn,cancelopportunity
    x = True
    if (add2card in myhandcard or add2card in myusemagic) and len(myallcard)>=2 and turn == 1:
        print('我:从手卡中,发动魔法,强欲之壶!')
        time.sleep(0.8)
        if blackcancelmagic(x) == True:
            mydeadcard.append(add2card)
            try:
                myhandcard.remove(add2card)
            except:
                myusemagic.remove(add2card)
            position = random.randint(0,len(myallcard)-1)
            myhandcard.append(myallcard[position])
            position = random.randint(0,len(myallcard)-1)
            myhandcard.append(myallcard[position])
        else:
            mydeadcard.append(add2card)
    elif (add2card in myhandcard or add2card in myusemagic) and len(myallcard)==1 and turn ==1:
        print('我:从手卡中,发动魔法,强欲之壶!')
        mydeadcard.append(add2card)
        try:
            myhandcard.remove(add2card)
        except:
            myusemagic.remove(add2card)
        position = random.randint(0,len(myallcard)-1)
        myhandcard.append(myallcard[position])
    elif add2card in yourhandcard and len(yourallcard)>=2 and turn == 2:
        x = True
        print('对方:从手卡中,发动魔法,强欲之壶!')
        if xyzcancelmagic(x) == True:
            yourdeadcard.append(add2card)
            yourhandcard.remove(add2card)
            position = random.randint(0,len(yourallcard)-1)
            yourhandcard.append(yourallcard[position])
            position = random.randint(0,len(yourallcard)-1)
            yourhandcard.append(yourallcard[position])
        else:
            yourdeadcard.append(add2card)
    elif add2card in yourhandcard and len(yourallcard)==2:
        x = True
        print('对方:从手卡中,发动魔法,强欲之壶!')
        if xyzcancelmagic(x) == True:
            yourdeadcard.append(add2card)
            yourhandcard.remove(add2card)
            position = random.randint(0,len(yourallcard)-1)
            yourhandcard.append(myallcard[position])
        else:
            yourdeadcard.append(add2card)
    
def turnover():
    global turn
    if turn == 1:
        turn = 2
    elif turn == 2:
        turn = 1
        
def throwcard():
    global myhandcard,yourhandcard,turn,yourdeadcard,mydeadcard
    if len(myhandcard)>6 and turn==1:
        print('我方的结束阶段')
        time.sleep(0.5)
        print('请丢弃%d张牌'%(len(myhandcard)-6))
        while len(myhandcard)>6:
            position = int(input('请输入序列号:'))
            print('你丢弃了一张:{}'.format(myhandcard[position-1].name))
            mydeadcard.append(myhandcard[position-1])
            del myhandcard[position-1]
        return myhandcard,mydeadcard
    if len(yourhandcard)>6 and turn==2:
        print('对方的结束阶段')
        time.sleep(0.5)
        while len(yourhandcard)>6:
            yourdeadcard.append(yourhandcard[0])
            print('对方丢弃了一张:',yourhandcard[0].name)
            del yourhandcard[0]
        return yourhandcard,yourdeadcard

def callmonster():
    global myusemonster,yourusemonster,myhandcard,yourhandcard,allcard,turn,mydeadcard,yourdeadcard
    callopportunity = 1
    if turn == 1:
        choose = input('你所要召唤的怪兽为:')
        for i in allcard:
            if i in myhandcard and callopportunity == 1:
                if choose == i.name:
                    if i.level!=None and i.level <= 4 and callopportunity == 1:
                        myusemonster.append(i)
                        myhandcard.remove(i)
                        chooseoccasion = input('选择攻击或防御状态:atk(攻击)/def(防御)')
                        if chooseoccasion == 'atk':
                            print(i.name,i.attraction)
                            print('我:我以攻击姿态通常召唤一只怪兽!')
                        elif chooseoccasion == 'def':
                            print('我:我覆盖一张卡片!')
                            i.occasion = 0
                            return i.occasion
                        callopportunity = 0
                    elif i.level!=None and i.level<=6 and i.level>=5 and callopportunity == 1:
                        choose1 = input('选择场上一只怪兽献祭:')
                        for j in myusemonster:
                            if choose1 == j.name:
                                mydeadcard.append(j)
                                myusemonster.remove(j)
                                myusemonster.append(i)
                                myhandcard.remove(i)
                                chooseoccasion = input('选择攻击或防御状态:atk(攻击)/def(防御)')
                                if chooseoccasion == 'atk':
                                    print(i.name,i.attraction)
                                    print('我:我以攻击姿态解放召唤一只怪兽!')
                                elif chooseoccasion == 'def':
                                    print('我:我覆盖一张卡片!')
                                    i.occasion = 0
                                    return i.occasion
                                callopportunity = 0
                            else:
                                None
                    elif i.level!=None and i.level>=7 and callopportunity == 1:
                        choose1 = input('选择场上两只怪兽献祭:第一只:')
                        choose2 = input('第二只:')
                        for j in myusemonster:
                            for k in myusemonster:
                                if choose1 == j.name and choose2 == k.name:
                                    mydeadcard.append(j)
                                    mydeadcard.append(k)
                                    myusemonster.remove(j)
                                    myusemonster.remove(k)
                                    myusemonster.append(i)
                                    myhandcard.remove(i)
                                    chooseoccasion = input('选择攻击或防御状态:atk(攻击)/def(防御)')
                                    if chooseoccasion == 'atk':
                                        print(i.name,i.attraction)
                                        print('我:我以攻击姿态解放召唤一只怪兽!')
                                        if i == blueeyes:
                                            time.sleep(1)
                                            print('我的骄傲!我的灵魂!')
                                            time.sleep(1)
                                            print('出来吧!青眼白龙!')
                                            time.sleep(1)
                                    elif chooseoccasion == 'def':
                                        print('我:我覆盖一张卡片!')
                                        i.occasion = 0
                                        return i.occasion
                                    callopportunity = 0
                                else:
                                    None
                else:
                    None
    elif turn == 2:
        for i in allcard:
            if i in yourhandcard and callopportunity == 1:
                    if  i.level!=None and i.level <= 4:
                        yourusemonster.append(i)
                        yourhandcard.remove(i)
                        print('对方:我通常召唤一只怪兽!')
                        callopportunity = 0
                    elif i.level!=None and i.level<=6 and i.level>=5 and callopportunity == 1:
                        for j in yourusemonster:
                            if j.level <=4:
                                yourdeadcard.append(j)
                                yourusemonster.remove(j)
                                yourusemonster.append(i)
                                yourhandcard.remove(i)
                                print('对方:我解放召唤一只怪兽!')
                                if i == blackmagiciangirl:
                                    time.sleep(1)
                                    print('最伟大的魔术师有一个他最得意的弟子!')
                                    time.sleep(1)
                                    print('出来吧!黑魔术少女!')
                                    time.sleep(1)
                                    callopportunity = 0
                                callopportunity = 0
                            else:
                                None
                    elif i.level!=None and len(yourusemonster)>=2 and i.level>=7 and callopportunity == 1:
                        for j in yourusemonster:
                            for k in yourusemonster:
                                if j != k and j.level<=6 and k.level<=6:
                                    yourdeadcard.append(j)
                                    youedeadcard.append(k)
                                    yourusemonster.remove(j)
                                    yourusemonster.remove(k)
                                    yourusemonster.append(i)
                                    yourhandcard.remove(i)
                                    print('对方:我解放召唤一只怪兽!')
                                    if i == blackmagiciangirl:
                                        time.sleep(1)
                                        print('这是我最强的王牌,我最忠诚的仆人!')
                                        time.sleep(1)
                                        print('出来吧!黑魔术师!')
                                        time.sleep(1)
                                    callopportunity = 0
                                else:
                                    None
            else:
                None

def setupacard():
    global myhandcard,myusemagic,yourhandcard,yourusemagic,turn
    if turn == 1:
        if len(myusemagic)<3:
            for i in myhandcard:
                if i.attraction == None:
                    choose = input('是否覆盖魔法陷阱卡‘{}’y/Y:'.format(i.name))
                    if choose == 'y' or choose == 'Y': 
                        myusemagic.append(i)
                        myhandcard.remove(i)
                        print(i.name)
                        print('我:我覆盖一张卡片!')
                    else:
                        None
    elif  turn == 2 :
        for oi in allcard:
            if oi in yourhandcard and  oi.attraction == None and len(yourusemagic)<3:
                if oi == powerstrength:
                    yourhandcard.remove(oi)
                    yourusemagic.append(oi)
                    print('对方:我覆盖一张卡片!')
                while len(yourhandcard)>=6 and len(yourusemagic)<2:
                    yourhandcard.remove(oi)
                    yourusemagic.append(oi)
                    print('对方:我覆盖一张卡片!')
    return myhandcard,myusemagic,yourhandcard,yourusemagic,turn

def monsterkongkiki():
    global myusemonster,yourusemonster,mylife,yourlife,mydeadcard,yourdeadcard,turn,count
    mymonsteratk = []
    mymonsterdef = []
    mymonstername = []
    mymonstername2 = []
    yourmonsteratk = []
    yourmonstername = [] 
    if turn == 1 and count==True:
        for i in myusemonster:
            if i.name=='真青眼究极龙':
                atkopportunitytriple = 1
                count = 2
                while 1==1:
                    if count==0:
                        break
                    if atkopportunitytriple ==1:
                        choose = input('指定攻击对象为(停止攻击直接回车):')
                        x = True
                        if hannoi(x)==False:
                            break
                        try:
                            if choose == '':
                                break
                            elif choose == '玩家' and len(yourusemonster)==0:
                                print('直接攻击!')
                                time.sleep(1)
                                yourlife = yourlife - i.attraction
                                print('对方受到了%d的生命值伤害'%i.attraction)
                                atkopportunitytriple-=1
                            elif choose != '玩家' and len(yourusemonster) >0:
                                for oi in yourusemonster:
                                    if oi.name == choose and atkopportunitytriple>=1:
                                        if oi.occasion == 1 and i.attraction > oi.attraction:
                                            yourlife = yourlife - i.attraction + oi.attraction
                                            print('对方受到了%d的生命值伤害'%(i.attraction - oi.attraction))
                                            yourdeadcard.append(oi)
                                            yourusemonster.remove(oi)
                                            atkopportunitytriple-=1
                                        elif oi.occasion == 1 and i.attraction  == oi.attraction:
                                            yourdeadcard.append(oi)
                                            mydeadcard.append(i)
                                            myusemonster.remove(i)
                                            yourusemonster.remove(oi)
                                        elif oi.occasion == 1 and i.attraction < oi.attraction:
                                            mylife = mylife + i.attraction - oi.attraction
                                            mydeadcard.append(i)
                                            myusemonster.remove(i)
                                            print('我方受到了%d的生命值伤害'%(oi.attraction - i.attraction))
                                        elif oi.occasion == 0:
                                            print(oi.name, oi.defendence)
                                            if i.attraction > oi.defendence:
                                                yourusemonster.remove(oi)
                                                atkopportunitytriple-=1
                                            elif i.attraction == oi.defendence:
                                                atkopportunitytriple-=1
                                                oi.occasion == -1
                                            elif i.attraction < oi.defendence:
                                                mylife = mylife + i.attraction - oi.defendence
                                                print('我方受到了%d的生命值伤害'%(oi.defendence - i.attraction))
                                                atkopportunitytriple-=1
                                                oi.occasion == -1
                                        elif oi.occasion == -1:
                                            if i.attraction > oi.defendence:
                                                yourusemonster.remove(oi)
                                                atkopportunitytriple-=1
                                            elif i.attraction == oi.defendence:
                                                atkopportunitytriple-=1
                                            elif i.attraction < oi.defendence:
                                                mylife = mylife + i.attraction - oi.defendence
                                                print('我方受到了%d的生命值伤害'%(oi.defendence - i.attraction))
                                                atkopportunitytriple-=1
                        except:
                            None
                    elif atkopportunitytriple == 0 and count!=0 and len(myblendmonster)>0:
                        choose = input("是否发动‘真青眼究极龙’的效果?Y/y(其它取消):")
                        if choose == 'Y' or choose == 'y':
                            if count != 0:
                                if count == 2:
                                    print('我:我发动‘真青眼究极龙’的效果!')
                                    time.sleep(0.8)
                                    print('我:通过送墓额外卡组的一只怪兽,‘真青眼究极龙’一回合可以做三次攻击!')
                                    print('我:真青眼究极龙攻击,究极爆裂!')
                                elif count == 1:
                                    print('我:真青眼究极龙攻击,究极爆裂!')
                                removeblendmonsterposition = random.randint(0,len(myblendcard)-1)
                                print('{}被送去了墓地'.format(myblendcard[removeblendmonsterposition].name))
                                mydeadcard.append(myblendcard[removeblendmonsterposition])
                                myblendcard.remove(myblendcard[removeblendmonsterposition])
                                count-=1
                                atkopportunitytriple+=1
                        else:
                            break
            if i.name=='青眼双爆裂龙':
                atkopportunitydouble,playatk = 2,1
                while atkopportunitydouble!=0 or yourlife>0:
                    if (playatk == 0 and len(yourusemonster)==0):
                        break
                    choose = input('指定攻击对象为(停止攻击直接回车):')
                    x = True
                    if hannoi(x)==False:
                        break
                    try:
                        if choose == '':
                            break
                        if choose == '玩家' and len(yourusemonster)==0:
                            playatk = 0
                            print('直接攻击!')
                            time.sleep(1)
                            yourlife = yourlife - i.attraction
                            print('对方受到了%d的生命值伤害'%i.attraction)
                        elif choose != '玩家' and len(yourusemonster) >0:
                            for oi in yourusemonster:
                                if oi.name == choose and atkopportunitydouble>=1:
                                    if oi.occasion == 1 and i.attraction > oi.attraction:
                                        yourlife = yourlife - i.attraction + oi.attraction
                                        print('对方受到了%d的生命值伤害'%(i.attraction - oi.attraction))
                                        yourdeadcard.append(oi)
                                        yourusemonster.remove(oi)
                                        atkopportunitydouble-=1
                                    elif oi.occasion == 1 and i.attraction  == oi.attraction:
                                        yourdeadcard.append(oi)
                                        mydeadcard.append(i)
                                        yourusemonster.remove(oi)
                                    elif oi.occasion == 1 and i.attraction < oi.attraction:
                                        mylife = mylife + i.attraction - oi.attraction
                                        print('我方受到了%d的生命值伤害'%(oi.attraction - i.attraction))
                                    elif oi.occasion == 0:
                                        print(oi.name, oi.defendence)
                                        if i.attraction > oi.defendence:
                                            yourusemonster.remove(oi)
                                            atkopportunitydouble-=1
                                        elif i.attraction == oi.defendence:
                                            atkopportunitydouble-=1
                                            oi.occasion == -1
                                        elif i.attraction < oi.defendence:
                                            mylife = mylife + i.attraction - oi.defendence
                                            print('我方受到了%d的生命值伤害'%(oi.defendence - i.attraction))
                                            atkopportunitydouble-=1
                                            oi.occasion == -1
                                    elif oi.occasion == -1:
                                        if i.attraction > oi.defendence:
                                            yourusemonster.remove(oi)
                                            atkopportunitydouble-=1
                                        elif i.attraction == oi.defendence:
                                            atkopportunitydouble-=1
                                        elif i.attraction < oi.defendence:
                                            mylife = mylife + i.attraction - oi.defendence
                                            print('我方受到了%d的生命值伤害'%(oi.defendence - i.attraction))
                                            atkopportunitydouble-=1
                    except:
                        None
            else:
                if i.occasion == 1:
                    position = myusemonster.index(i)
                    exec('atkopportunity%s = 1'%position)
                    eval('%s'%position)
                    choose = input('指定攻击对象为:')
                    x = True
                    try:
                        if hannoi(x)==False:
                            None
                        else:
                            if choose != '玩家' and len(yourusemonster) >0:
                                for oi in yourusemonster:
                                    if oi.name == choose and 'atkopportunity%s >= 1'%position:
                                        if oi.occasion == 1 and i.attraction > oi.attraction:
                                            yourlife = yourlife - i.attraction + oi.attraction
                                            print('对方受到了%d的生命值伤害'%(i.attraction - oi.attraction))
                                            yourdeadcard.append(oi)
                                            yourusemonster.remove(oi)
                                            exec('atkopportunity%s -= 1'%position)
                                        elif oi.occasion == 1 and i.attraction  == oi.attraction:
                                            yourdeadcard.append(oi)
                                            mydeadcard.append(i)
                                            yourusemonster.remove(oi)
                                            myusemonster.remove(i)
                                        elif oi.occasion == 1 and i.attraction < oi.attraction:
                                            mylife = mylife + i.attraction - oi.attraction
                                            print('我方受到了%d的生命值伤害'%(oi.attraction - i.attraction))
                                            mydeadcard.append(i)
                                            myusemonster.remove(i)
                                            break
                                        elif oi.occasion == 0:
                                            print(oi.name, oi.defendence)
                                            if i.attraction > oi.defendence:
                                                yourusemonster.remove(oi)
                                                exec('atkopportunity%s -= 1'%position)
                                            elif i.attraction == oi.defendence:
                                                exec('atkopportunity%s -= 1'%position)
                                                oi.occasion == -1
                                            elif i.attraction < oi.defendence:
                                                mylife = mylife + i.attraction - oi.defendence
                                                print('我方受到了%d的生命值伤害'%(oi.defendence - i.attraction))
                                                exec('atkopportunity%s -= 1'%position)
                                                oi.occasion == -1
                                        elif oi.occasion == -1:
                                            if i.attraction > oi.defendence:
                                                yourusemonster.remove(oi)
                                                exec('atkopportunity%s -= 1'%position)
                                            elif i.attraction == oi.defendence:
                                                exec('atkopportunity%s -= 1'%position)
                                            elif i.attraction < oi.defendence:
                                                mylife = mylife + i.attraction - oi.defendence
                                                print('我方受到了%d的生命值伤害'%(oi.defendence - i.attraction))
                                                exec('atkopportunity%s -= 1'%position)
                            elif choose == '玩家' and len(yourusemonster) == 0:
                                print('直接攻击!')
                                time.sleep(1)
                                yourlife = yourlife - i.attraction
                                print('对方受到了%d的生命值伤害'%i.attraction)
                                break
                    except:
                        None
    if turn == 2 and count==True:
        for i in myusemonster:
            if i.occasion == 1:
                mymonsteratk.append(i.attraction)
                mymonstername.append(i)
            elif i.occasion == -1:
                mymonsterdef.append(i.defendence)
                mymonstername2.append(i)
        for oi in yourusemonster:
            yourmonsteratk.append(oi.attraction)
            yourmonstername.append(oi)
            positionoi = yourusemonster.index(oi)
            exec('atkopportunity%s = 1'%positionoi)
            eval('%s'%positionoi)
            print('对方:进入战斗阶段!')
            x = True
            if hannoi(x)==False:
                break
            try:
                if max(yourmonsteratk) > max(mymonsteratk):
                    changeoccasion(x=2)
                    positioni = mymonsteratk.index(max(mymonsteratk))
                    positionoi = yourmonsteratk.index(max(yourmonsteratk))
                    print('对方用{}攻击我方的{}'.format(yourmonstername[positionoi].name,mymonstername[positioni].name))
                    time.sleep(1)
                    if defenddooruse()=='Y' or 'y':
                        mymonsteratk.remove(max(mymonsteratk))
                        mydeadcard.append(mymonstername[positioni])
                        myusemonster.remove(mymonstername[positioni])
                    else:
                        mylife = mylife - max(yourmonsteratk) + max(mymonsteratk)
                        print('我方受到了%d的生命值伤害'%(max(yourmonsteratk) -max(mymonsteratk)))
                        exec('atkopportunity%s = 0'%positionoi)
                        yourmonsteratk.remove(max(yourmonsteratk))
                        del yourmonstername[positionoi]
                        mymonsteratk.remove(max(mymonsteratk))
                        mydeadcard.append(mymonstername[positioni])
                        myusemonster.remove(mymonstername[positioni])
                        del mymonstername[positioni]
            except:
                None
            try:
                if max(yourmonsteratk) < max(mymonsteratk):
                    changeoccasion(x=1)
            except:
                None
            try:
                if max(yourmonsteratk) > max(mymonsterdef):
                    changeoccasion(x=2)
                    positioni = mymonsterdef.index(max(mymonsterdef))
                    positionoi = yourmonsteratk.index(max(yourmonsteratk))
                    print('对方用{}攻击我方的{}'.format(yourmonstername[positionoi].name,mymonstername2[positioni].name))
                    time.sleep(1)
                    if yourmonstername[positionoi] == yourusemonster[positionoi].name:
                        exec('atkopportunity%s = 0'%positionoi)
                        yourmonsteratk.remove(max(yourmonsteratk))
                        del yourmonstername[positionoi]
                        mymonsterdef.remove(max(mymonsterdef))
                    for i in myusemonster:
                        if i == mymonstername2[positioni]:
                            mydeadcard.append(i)
                            myusemonster.remove(i)
                            break
                    del mymonstername2[positioni]
            except:
                None
            try:
                if len(myusemonster)==0 and oi.occasion==1:
                    if 'atkopportunity%s == 1'%positionoi:
                        print('直接攻击!')
                        time.sleep(1)
                        if defenddooruse()=='y' or defenddooruse()=='Y':
                            None
                        else:
                            mylife = mylife - oi.attraction
                            print('我方受到了%d的生命值伤害'%oi.attraction)
                else:
                    for oi in yourusemonster:
                        if oi.occasion == 1 and oi.attraction>=1500:
                            for i in myusemonster:
                                if i.occasion == 0:
                                    print('对方用{}攻击我方的{}'.format(oi.name,i.name))
                                    i.occasion =-1
                                    print(i.name, i.defendence)
                                    if oi.attraction>i.defendence:
                                        mydeadcard.append(i)
                                        myusemonster.remove(i)
                                    else:
                                        yourlife = yourlife + oi.attraction - i.defendence
                                        if oi.attraction0:
        mymonsteratk = []
        mymonsterdef = []
        mymonstername = []
        mymonstername2 = []
        for i in myusemonster:
            if i.occasion==1:
                mymonsteratk.append(i.attraction)
                mymonstername.append(i)
            if i.occasion == -1:
                mymonsterdef.append(i.defendence)
                mymonstername2.append(i)
        time.sleep(0.5)
        x = True
        print('对方:从手卡,发动魔法,千把刀!')
        try:
            if xyzcancelmagic(x)==True:
                if len(mymonsteratk)>0 and max(mymonsteratk)>1400:
                    print('我方{}被破坏'.format(mymonstername[mymonsteratk.index(max(mymonsteratk))].name))
                    mydeadcard.append(mymonstername[mymonsteratk.index(max(mymonsteratk))])
                    myusemonster.remove(mymonstername[mymonsteratk.index(max(mymonsteratk))])
                elif len(mymonsterdef)>0 and max(mymonsteratk)<=1500:
                    print('我方{}被破坏'.format(mymonstername2[mymonsterdef.index(max(mymonsterdef))].name))
                    mydeadcard.append(mymonstername2[mymonsterdef.index(max(mymonsterdef))])
                    myusemonster.remove(mymonstername2[mymonsterdef.index(max(mymonsterdef))])
                else:
                    position = random.randint(0,len(myusemonster)-1)
                    print('我方{}被破坏'.format(myusemonster[position].name))
                    mydeadcard.append(myusemonster[position])
                    myusemonster.remove(myusemonster[position])
        except:
            None
        finally:
            yourdeadcard.append(blackknite)
            try:
                yourhandcard.remove(blackknite)
            except:
                yourusemagic.remove(blackknite)          
def black_magic():
    global myusemagic,yourhandcard,yourdeadcard,mydeadcard,myusemonster,cancelopportunity
    time.sleep(0.5)
    x = True
    if len(myusemagic)>=2:
        print('对方:从手卡,发动魔法,黑·魔·导!')
        if xyzcancelmagic(x) == True:
            for i in myusemagic:
                print('我方{}被破坏'.format(i.name))
                mydeadcard.append(i)
                myusemagic.remove(i)
        try:
            yourhandcard.remove(blackmagic)
        except:
            yourusemagic.remove(blackmagic)
        finally:
            yourdeadcard.append(blackmagic)
        
def sizhesusheng():
    global cancelopportunity,myhandcard,yourhandcard,yourdeadcard,yourusemonster,mydeadcard,myusemonster,turn
    if (bringtolife in myusemagic or bringtolife in myhandcard) and turn == 1:
        print("我:从手卡,发动魔法‘死者苏生’!")
        x = True
        time.sleep(0.8)
        if blackcancelmagic(x) == True:
            choose = input('选择要复活的怪兽:')
            for oi in yourdeadcard:
                if oi.name == choose and oi.attraction>0 and oi.dead == 1:
                    chooseoccasion = input('选择攻击或防御状态:atk(攻击)/def(防御)')
                    if chooseoccasion == 'atk':
                        print('我:我特殊召唤一只怪兽!')
                        print(oi.name,oi.attraction)
                        oi.occasion=1
                    elif chooseoccasion == 'def':
                        print('我:我特殊召唤一只怪兽!')
                        print(oi.name,oi.attraction)
                        oi.occasion = -1
                    myusemonster.append(oi)
                    yourdeadcard.remove(oi)
                    mydeadcard.append(bringtolife)
            for i in mydeadcard:
                if i.name == choose and i.attraction>0 and i.dead ==1:
                    chooseoccasion = input('选择攻击或防御状态:atk(攻击)/def(防御)')
                    if chooseoccasion == 'atk':
                        print('我:我特殊召唤一只怪兽!')
                        print(i.name,i.attraction)
                        i.occasion=1
                    elif chooseoccasion == 'def':
                        print('我:我特殊召唤一只怪兽!')
                        print(i.name,i.attraction)
                        i.occasion = -1
                    myusemonster.append(i)
                    mydeadcard.remove(i)
        try:
            myhandcard.remove(bringtolife)
        except:
            myusemagic.remove(bringtolife)
        finally:
            mydeadcard.append(bringtolife)
    if (bringtolife in yourusemagic or bringtolife in yourhandcard) and turn == 2:
        deadmonsteratk = []
        deadmonstername = []
        for i in mydeadcard:
            if i.attraction != None and i.dead == 1:
                deadmonsteratk.append(i.attraction)
                deadmonstername.append(i)
        for oi in yourdeadcard:
            if oi.attraction != None and oi.dead ==1:
                deadmonsteratk.append(oi.attraction)
                deadmonstername.append(oi)
        try:
            if bringtolife in yourusemagic:
                print("对方:发动盖卡,发动魔法‘死者苏生’!")
            if bringtolife in yourhandcard:
                print("对方:从手卡,发动魔法‘死者苏生’!")
            time.sleep(0.5)
            x=True
            if xyzcancelmagic(x) == True:
                if max(deadmonsteratk)>1500:
                    print('对方:我特殊召唤一只怪兽!')
                    yourusemonster.append(deadmonstername[deadmonsteratk.index(max(deadmonsteratk))])
                    yourdeadcard.append(bringtolife)
                    deadmonstername[deadmonsteratk.index(max(deadmonsteratk))].occasion = 1
                    if deadmonstername[deadmonsteratk.index(max(deadmonsteratk))] in yourdeadcard:
                        yourdeadcard.remove(deadmonstername[deadmonsteratk.index(max(deadmonsteratk))])
                    else:
                        mydeadcard.remove(deadmonstername[deadmonsteratk.index(max(deadmonsteratk))])
                    print(max(deadmonsteratk),deadmonstername[deadmonsteratk.index(max(deadmonsteratk))].name)
            try:
                yourhandcard.remove(bringtolife)
            except:
                yourusemagic.remove(bringtolife)
            finally:
                yourhandcard.remove(bringtolife)
                return deadmonstername[deadmonsteratk.index(max(deadmonsteratk))].occasion,myhandcard,yourhandcard,yourdeadcard,yourusemonster,mydeadcard,myusemonster,turn

        except:
            None
        
def blendmonster():
    global myblendcard,yourblendcard,myhandcard,yourhandcard,yourdeadcard,yourusemonster,mydeadcard,myusemonster,turn,myusemagic,yourusemagic
    if (blend in myhandcard or blend in myusemagic) and turn ==1:
        print('我:现在你能体会到我们之间的差距了吧,发动融合!')
        x = True
        time.sleep(0.8)
        if blackcancelmagic(x) == True:
            choose = input('想要融合的怪兽为:')
            if '青眼双爆裂龙' == choose:
                callblueeyesdouble()
            if '真青眼究极龙'== choose:
                callblueeyestriple()
            if 'XYZ-首领龙炮' == choose:
                callxyzaddup()
        else:
            try:
                myhandcard.remove(blend)
            except:
                myusemagic.remove(blend)
            finally:
                mydeadcard.append(blend)
    if (blend in yourhandcard or blend in yourusemagic) and turn == 2:
        print('对方:现在该轮到我使用魔法卡了吧,发动融合!')
        x = True
        if xyzcancelmagic(x)==True:
            callblackmagiciandouble()
        else:
            mydeadcard.append(blend)
            try:
                yourusemagic.remove(blend)
            except:
                yourhandcard.remove(blend)
def callblueeyesdouble():
    count = 0
    blueeyeslist = myusemonster+myhandcard
    while blueeyes in blueeyeslist:
        count+=1
        blueeyeslist.remove(blueeyes)
    if count>=2:
        chooseoccasion =  input('选择攻击或防御状态:atk(攻击)/def(防御)')
        if chooseoccasion == 'def':
            blueeyesdouble.occasion = -1
            print('我:我融合召唤一只怪兽!')
        else:
            blueeyesdouble.occasion = 1
            print('我:我以攻击姿态融合召唤一只怪兽!')
        try:
            if count==2 or count==3:
                myusemonster.append(blueeyesdouble)
                myblendcard.remove(blueeyesdouble)
                mydeadcard.append(blend)
                try:
                    myusemagic.remove(blend)
                except:
                    myhandcard.remove(blend)
                count=0
            while count<2:
                try:
                    myhandcard.remove(blueeyes)
                    mydeadcard.append(blueeyes)
                    count+=1
                except:
                    None
                try:
                    myusemonster.remove(blueeyes)
                    mydeadcard.append(blueeyes)
                    count+=1
                except:
                    None
        except:
            print('程序有点错误,请联系管理员修复')
def callblueeyestriple():
    count = 0
    blueeyeslist = myusemonster+myhandcard
    while blueeyes in blueeyeslist:
        count+=1
        blueeyeslist.remove(blueeyes)
    if count==3:
        chooseoccasion =  input('选择攻击或防御状态:atk(攻击)/def(防御)')
        if chooseoccasion == 'def':
            blueeyesdouble.occasion = -1
            print('我:我融合召唤一只怪兽!')
        else:
            blueeyesdouble.occasion = 1
            print('我:我以攻击姿态融合召唤一只怪兽!')
        try:
            while blueeyestriple not in myusemonster:
                try:
                    myhandcard.remove(blueeyes)
                    count-=1
                except:
                    myusemonster.remove(blueeyes)
                    count-=1
                if count == 0:
                    myusemonster.append(blueeyestriple)
                    mydeadcard.append(blend)
                    myblendcard.remove(blueeyestriple)
                    try:
                        myusemagic.remove(blend)
                    except:
                        myhandcard.remove(blend)
                    finally:
                        mydeadcard.append(blend)
        except:
            print('程序有点错误')
def callxyzaddup():
    kanonlist=myhandcard+myusemonster
    if xkanon in kanonlist and ykanon in kanonlist and zkanon in kanonlist:
        chooseoccasion =  input('选择攻击或防御状态:atk(攻击)/def(防御)')
        if chooseoccasion == 'def':
            blueeyesdouble.occasion = -1
            print('我:我融合召唤一只怪兽!')
        else:
            blueeyesdouble.occasion = 1
            print('我:我以攻击姿态融合召唤一只怪兽!')
        try:
            try:
                myhandcard.remove(xkanon)
            except:
                myusemonster.remove(xkanon)
            try:
                myhandcard.remove(ykanon)
            except:
                myusemonster.remove(ykanon)
            try:
                myhandcard.remove(zkanon)
            except:
                myusemonster.remove(zkanon)
            mydeadcard.append(xkanon)
            mydeadcard.append(ykanon)
            mydeadcard.append(zkanon)
            myusemonster.append(xyzaddup)
            myblendcard.remove(xyzaddup)
            try:
                myusemagic.remove(blend)
            except:
                myhandcard.remove(blend)
            finally:
                mydeadcard.append(blend)
        except:
            print('程序有点错误')
def xyzcancelmagic(x):
    global yourlife,myusemonster,cancelopportunity
    if xyzaddup in myusemonster and cancelopportunity==1:
        choose = input("是否发动'XYZ-首领龙炮'的效果?y/Y(其它取消)")
        if choose == 'Y' or choose == 'y':
            print("我:这个瞬间,我发动'XYZ-首领龙炮'的效果")
            time.sleep(0.8)
            print("我:一回合一次,无效你的魔法卡并给你造成500点伤害!")
            x = False
            yourlife-=500
            print('对方受到了500点伤害')
            cancelopportunity-=1
    else:
        x = True
        return x
def callblackmagiciandouble():
    blacklist = yourusemonster+yourhandcard
    if blackmagician in blacklist and blackmagiciangirl in blacklist:
        try:
            yourusemonster.remove(blackmagician)
        except:
            yourhandcard.remove(blackmagician)
        finally:
            yourdeadcard.append(blackmagician)
        try:
            yourusemonster.remove(blackmagiciangirl)
        except:
            yourhandcard.remove(blackmagiciangirl)
        finally:
            yourdeadcard.append(blackmagiciangirl)
        yourusemonster.append(blackmagiciandouble)
        yourblendcard.remove(blackmagiciandouble)
        yourdeadcard.append(blend)
        try:
            yourhandcard.remove(blend)
        except:
            yourusemagic.remove(blend)
def blackcancelmagic(x):
    global cancelopportunity
    if blackmagiciandouble in yourusemonster and cancelopportunity==1:
        print("对方:这个瞬间,我发动'黑魔术师徒'的效果")
        time.sleep(0.8)
        print("对方:一回合一次,无效你的魔法卡!")
        x = False
        cancelopportunity-=1
    return x
def blackaddcard():
    global addopportunity,yourallcard,yourhandcard
    if blackmagiciandouble in yourusemonster and cancelopportunity==1:
        yourmagiclist = []
        for oi in yourallcard:
            if oi.ethnic == '魔法卡':
                yourmagiclist.append(oi)
        if len(yourmagiclist)>0:
            print("对方:这个瞬间,我发动'黑魔术师徒'的效果")
            time.sleep(0.8)
            print("对方:一回合一次,从卡组中加入一张魔法卡!")
            addmagiccard = random.randint(0,len(yourmagiclist)-1)
            for oi in yourallcard:
                if oi == yourmagiclist[addmagiccard]:
                    yourhandcard.append(oi)
                    yourallcard.remove(oi)
                    print('对方从卡组把一张魔法卡加入手卡')
        else:
            None
        
def magiccallblack():
    global yourusemonster,yourallcard,yourlife,yourusemagic,yourhandcard,yourdeadcard,myusemonster
    mymonsteratk = []
    for i in myusemonster:
        mymonsteratk.append(i.attraction)
    if (blackbreadth in yourhandcard or blackbreadth in yourusemagic) and blackmagician in yourallcard:
        print('对方:发动魔法,‘黑魔术的幕布’!')
        time.sleep(0.8)
        x=True
        if xyzcancelmagic(x)==True:
            print('对方:支付一半生命值,特殊召唤‘黑魔术师’!')
            easycalldef()
        
def hannoi(x):
    global yourusemonster,yourusemagic,yourdeadcard,myusemonster,yourlife,myusemagic,mydeadcard,turn
    mymonsteratk=[i.attraction for i in myusemonster if i.occasion==1]
    yourmonsteratk=[oi.attraction for oi in yourusemonster if oi.occasion==1]
    if powerstrength in myusemagic and turn == 2:
        choose = input('是否发动‘汉诺伊的崇高力量’y/Y')
        if choose == 'y' or choose == 'Y':
            print('我:这个瞬间,发动盖卡,‘汉诺伊的崇高力量’!')
            time.sleep(0.8)
            print('我:破坏你场上所有攻击表示的怪兽!')
            x = False
            for oi in yourusemonster:
                if oi.occasion==1:
                    yourusemonster.remove(oi)
                    yourdeadcard.append(oi)
                    myusemagic.remove(powerstrength)
                    mydeadcard.append(powerstrength)
                    print('{}被送入墓地'.format(oi.name))
    if powerstrength in yourusemagic and turn==1:
        try:
            if max(yourmonsteratk)=2 or any([i for i in mymonsteratk if i>=3000]):
                x = False
                easymagicdef()
        if any([i for i in mymonsteratk if i>=yourlife]):
            try:
                easymagicdef()
                x = False
            except:
                None
        else:
            easymagicdef()
            x = False
    return x

def defenddooruse():
    global myallcard,myusemagic
    if defenddoor in myusemagic:
        choose = input('是否发动‘反击之门’的效果‘Y/y’:')
        if choose == 'y' or choose == 'Y':
            print('我:这个瞬间,我发动盖卡‘反击之门’!')
            time.sleep(0.8)
            print('我:抵挡一次伤害,然后我要从卡组抽一张卡!')
            time.sleep(0.8)
            position = random.randint(0,len(myallcard)-1)
            myhandcard.append(myallcard[position])
            print('你抽了一张:{}'.format(myallcard[position].name))
            del myallcard[position]
            myusemagic.remove(defenddoor)
            mydeadcard.append(defenddoor)
    else:
        choose = ''
    return choose

def magiccallblackmagiciangirl():
    if (blackmagician in yourusemonster or blackmagiciandouble in yourusemonster) and (courtesyvalue in yourhandcard or courtesyvalue in yourusemagic) and blackmagiciangirl in yourallcard:
        if courtesyvalue in yourhandcard:
            print('对方:从手卡,发动魔法‘贤者的宝石’!')
        if courtesyvalue in yourusemagic:
            print('对方:打开盖卡,发动魔法‘贤者的宝石’!')
        time.sleep(0.8)
        print('对方:‘黑魔术师’在场时发动这个魔法,可以从卡组中特殊召唤‘黑魔术少女’!')
        yourallcard.remove(blackmagiciangirl)
        yourusemonster.append(blackmagiciangirl)
        yourdeadcard.append(courtesyvalue)
        try:
            yourhandcard.remove(courtesyvalue)
        except:
            yourusemagic.remove(courtesyvalue)
    
#函数定义区@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

def easycalldef():
    global yourusemonster,yourallcard,yourlife,yourusemagic,yourhandcard,yourdeadcard
    yourusemonster.append(blackmagician)
    yourallcard.remove(blackmagician)
    yourdeadcard.append(blackbreadth)
    try:
        yourhandcard.remove(blackbreadth)
    except:
        yourusemagic.remove(blackbreadth)
    yourlife = yourlife//2

def easymagicdef():
    if powerstrength in yourusemagic:
        print('对方:我就是在等这个时候,发动盖卡‘汉诺伊的崇高力量’!')
        time.sleep(0.8)
        print('对方:你的攻击预示了你的失败,破坏你所有攻击表示的怪兽!')
        yourusemagic.remove(powerstrength)
        yourdeadcard.append(powerstrength)
        for i in myusemonster:
            if i.occasion==1:
                myusemonster.remove(i)
                mydeadcard.append(i)
                print('{}被送入墓地'.format(i.name))
                

    
#辅助函数定义区@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

# print(format('加载中....','=^30'))
# for i in trange(100):
#     time.sleep(0.05)
# print(format('加载成功!','=^30'))
# timer0,timer1,timer2,timer3,timer4 = threading.Timer(2,timeprint0),threading.Timer(4,timeprint1),threading.Timer(6,timeprint2),threading.Timer(8,timeprint3),threading.Timer(10,timeprint4)

#开局打印区@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@22

# timer0.start()
# timer1.start()
# timer2.start()
# timer3.start()
# timer4.start()
# time.sleep(13)
# startgame = input('开始游戏请输入‘y/Y’:')


#游戏主体区################################################################################################3
class yougioh:
    def __init__(self,name,level,defendence,attraction,ethnic,special,skill,occasion,dead):
        self.name = name
        self.level = level
        self.defendence = defendence
        self.attraction = attraction
        self.ethnic = ethnic
        self.special = special
        self.skill  = skill
        self.occasion = occasion
        self.dead = dead
        
blueeyes = yougioh('青眼白龙',8,3000,3000,'怪兽卡','龙族,光属性,通常怪兽','以高攻击力高防御力著称',1,1)
dragonmirror = yougioh('龙之镜',None,None,None,'魔法卡','通常魔法','可以将墓地存在的符合融合条件的卡除外进行融合',None,1)
dragontemple = yougioh('龙之陵庙',None,None,None,'魔法卡','通常魔法','可以将卡组的怪兽卡送入墓地,如果送入的怪兽卡为通常怪兽则可以再送墓一张怪兽卡',None,1)
blend = yougioh('融合',None,None,None,'魔法卡','通常魔法','可以将手上和场上的可以进行融合的卡进行融合',None,1)
bringtolife = yougioh('死者苏生',None,None,None,'魔法卡','通常魔法','可以把我方或对方的一张怪兽卡复活到我方',None,1)
add2card = yougioh('强欲之壶',None,None,None,'魔法卡','通常魔法','可以抽两张卡',None,1)
powerstrength = yougioh('汉诺伊的崇高力量',None,None,None,'陷阱卡','通常陷阱','对方的怪兽进行攻击时把对方所有攻击表示的怪兽全部破坏',None,1)
defenddoor = yougioh('反击之门',None,None,None,'陷阱卡','通常陷阱','我方受到伤害时可以抵消一次伤害并抽一张卡',None,1)
xkanon = yougioh('X-首领加农',4,1600,1800,'怪兽卡','机器族,光属性,通常怪兽','以X变形形态变化',1,1)
ykanon = yougioh('Y-首领加农',4,1600,1600,'怪兽卡','机器族,光属性,通常怪兽','以Y变形形态变化',1,1)
zkanon = yougioh('Z-首领加农',4,1400,1600,'怪兽卡','机器族,光属性,通常怪兽','以Z变形形态变化',1,1)
destroyloop = yougioh('破坏轮',None,None,None,'陷阱卡','通常陷阱','对方怪兽攻击时可以破坏该怪兽,但是双方要受到该怪兽的攻击力的数值伤害',None,1)
blackmagician = yougioh('黑魔术师',7,2500,2500,'怪兽卡','魔法师族,暗属性,通常怪兽','世上最强的魔法师',1,1)
blackmagic = yougioh('黑魔导',None,None,None,'魔法卡','通常魔法','当场上存在黑魔术师时,破坏对方所有的魔法陷阱卡',None,1)
blackknite = yougioh('千把刀',None,None,None,'魔法卡','通常魔法','当场上存在黑魔术师时,破坏对方的一张卡',None,1)
blackmagiciangirl = yougioh('黑魔术少女',6,1800,2000,'怪兽卡','魔法师族,暗属性,通常怪兽','世上最强的魔法师的徒弟',1,1)
skygift = yougioh('天空的宝牌',None,None,None,'魔法卡','通常魔法','将双方的手牌补至6张',None,1)
blackbreadth =  yougioh('黑魔术的幕布',None,None,None,'魔法卡','通常魔法','可以从卡组或手牌特殊召唤黑魔术师',None,1)
courtesyvalue = yougioh('贤者的宝石',None,None,None,'魔法卡','通常魔法','当场上存在黑魔术师时,可以从卡组特殊召唤黑魔术少女',None,1)
magicalblend = yougioh('魔术化融合',None,None,None,'魔法卡','通常魔法','可以从卡组里选择融合素材送入墓地进行魔法师族怪兽的融合',None,1)
kulipo = yougioh('栗子球',1,200,200,'怪兽卡','魔法师族,暗属性,通常怪兽','栗子球在手卡上时,将要受到伤害时可以丢弃此卡免疫该伤害',1,1)

blueeyesdouble = yougioh('青眼双爆裂龙',8,2500,3000,'怪兽卡','龙族,光属性,融合怪兽','青眼白龙X2  此卡只能通过融合召唤特殊召唤,青眼双爆裂龙一回合能做对怪兽进行两次攻击,且不会被战斗破坏',1,0)
blueeyestriple = yougioh('真青眼究极龙',12,4000,4500,'怪兽卡','龙族,光属性,融合怪兽','青眼白龙X3  此卡只能通过融合召唤特殊召唤,青眼究极龙可以把额外卡组的一只融合怪兽送去墓地,增加一次攻击机会,一回合最多只能攻击三次',1,0)
xyzaddup = yougioh('XYZ-首领龙炮',10,2300,2800,'怪兽卡','机械族,光属性,融合怪兽','X-首领加农+Y-首领加农+Z-首领加农  此卡只能通过融合召唤特殊召唤,一回合一次,每当对方发动魔法陷阱卡时能无效一次,并且给予对方500点伤害',1,0)
blackmagiciandouble = yougioh('黑魔术师徒',10,2800,3000,'怪兽卡','魔术师族,暗属性,融合怪兽',"黑魔术师+黑魔术少女  此卡只能通过融合召唤特殊召唤,一回合一次,可以随机将一张魔法卡加入手牌,此卡在场上也被视为'黑魔术师'",1,0)

allcard = {blackmagician,blackmagic,blackknite,blackmagiciangirl,blend,bringtolife,powerstrength,skygift,blackbreadth,courtesyvalue,magicalblend,kulipo,blueeyes,dragonmirror,dragontemple,blend,bringtolife,add2card,powerstrength,defenddoor,xkanon,ykanon,zkanon,destroyloop}

myhandcard = []
yourhandcard = []
# myallcard = [blend,blend,defenddoor,defenddoor,powerstrength,xkanon,ykanon,zkanon]
# yourallcard = [blackmagician,blackmagician,blend,powerstrength,courtesyvalue,bringtolife,blackmagiciangirl,blackmagiciangirl,blackknite,blackbreadth]

myallcard = [blueeyes,blueeyes,blueeyes,dragonmirror,dragontemple,dragontemple,dragontemple,blend,blend,blend,bringtolife,add2card,powerstrength,defenddoor,defenddoor,defenddoor,xkanon,ykanon,zkanon,destroyloop]
yourallcard = [blackmagician,blackmagician,blackmagic,blackknite,blackknite,blackmagiciangirl,blackmagiciangirl,blend,blend,bringtolife,powerstrength,skygift,blackbreadth,blackbreadth,courtesyvalue,courtesyvalue,magicalblend,magicalblend,magicalblend,add2card,kulipo]

mydeadcard = []
yourdeadcard = []

myusemonster = []
yourusemonster = []

myusemagic =[]
yourusemagic = []
myallmagic = [dragonmirror,dragontemple,blend,bringtolife,add2card,powerstrength,defenddoor,destroyloop]

myblendcard = [blueeyesdouble,blueeyestriple,blueeyesdouble,xyzaddup,xyzaddup]
yourblendcard = [blackmagiciandouble,blackmagiciandouble,blackmagiciandouble]

yourothercard = []

mylife,yourlife,demage,count = 4000,4000,0,False

tossresult = random.randint(1,2)
if tossresult == 1:
    print('你为先手')
    turn = 1
else:
    print('你为后手')
    turn = 2
start4card()
time.sleep(1)
while mylife>0 and yourlife>0:
    if len(myallcard)==0 and turn ==1:
        print('你输了,因为卡组没有牌可抽了')
        break
    if len(yourallcard)==0 and turn ==2:
        print('你赢了,因为对手没有牌可抽了')
        break
    addacard()
    time.sleep(0.5)
    if turn ==2:
        cancelopportunity,addopportunity = 1,1
        addtwocard()
        for i in yourusemonster:
            print('场上:',i.name)
        for i in yourhandcard:
            print('手牌:',i.name)
        magiccallblack()
        magiccallblackmagiciangirl()
        blendmonster()
        blackaddcard()
        if bringtolife in yourhandcard and len(yourusemonster)<=2:
            sizhesusheng()
        callmonster()
        blackmasha()
        setupacard()
        monsterkongkiki()
    elif turn == 1:
        cancelopportunity=1
        addtwocard()
        for i in myusemonster:
            print('场上:',i.name)
        for i in myhandcard:
            print('手牌:',i.name)
        if bringtolife in myhandcard and len(myusemonster)<=2:
            sizhesusheng()
        if blend in myhandcard or blend in myusemagic:
            blendmonster()
        for i in myhandcard:
            if i.occasion == None and len(myusemagic)<3:
                print('{}可以覆盖'.format(i.name))
                setupacard()
        callmonster()
        changeoccasion(x=0)
        for i in myusemonster:
            if i.occasion == 1:
                print('{}可以进行攻击'.format(i.name))
                choose = input('攻击:1,取消:其他  ')
                if choose == '1':
                    monsterkongkiki()
                else:
                    None
        
    throwcard()
    print(len(myusemagic),len(yourusemagic))
    for i in yourdeadcard:
        print('墓地:',i.name)
    for i in mydeadcard:
        print('墓地:',i.name)
    turnover()
    if count==False:
        count=True
    
if mylife<=0:
    print('你输了,因为你的生命值归零了')

if yourlife<=0:
    print('你赢了,因为对手生命值归零了')

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/923701.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号