各位大佬好!
这是我第一次写问章,
有不足请多多指教。(毕竟我只是一名小学生)
一段python三国杀代码
import random
import time
import datetime
t=time
r=random
def hm(heart,cheart):
print('你的血', heart)
print('电脑的血', cheart)
def wx():
bb=['无懈可击',' ',' ',' ',' ']
bbb=r.choice(bb)
if bbb=='无懈可击':
return 1
else:
return 0
sha=0
tao=0
shan=0
csha=0
ctao=0
cshan=0
flag=1
xpp='无'
je=r.randint(1000,10000)
#结束 炸弹丸 急救丸 激光 回春术
print(' 制作:一只飞快的蛐蛐')
t.sleep(2)
print('loading...')
t.sleep(3)
print('欢迎来到三国杀')
t.sleep(1)
print('指令简介:')
t.sleep(0.5)
print('==================')
print('-指令:开始游戏 -')
print('-指令:查询版本 -')
print('-指令:退出 -')
print('==================')
t.sleep(0.5)
print('开始游戏吗? 开始游戏/不开始')
a=input()
while a!='开始游戏':
if a=='退出':
quit('欢迎下次再来!')
if a=='不开始':
print('开始游戏吗?请输入:')
a = input()
continue
t.sleep(1)
print('开始游戏吗?请输入:')
a = input()
if a == '开始游戏':
print('请选人物 赵云 马超 吕布 曹操 张飞')
d=['赵云','马超','吕布','曹操','张飞']
b=input()
for i in range(20):
if d[i]==b:
d.pop(i)
break
c=r.choice(d)
corw=c
rw=b
if b=='赵云' or b=='马超':
heart=20
print('【同等之战】')
elif b=='吕布' or b=='曹操':
heart=10
print('【无限反击】')
elif b=='张飞':
heart = 1
print('【绝地求生】')
else:
print('你不好好输入')
print('人物默认为---(无名氏)')
b='---'
heart = 1
print('【绝地求生】')
t.sleep(1)
jz=['coc','cocpp']
ccard3=['桃','杀']
card=[' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ']
ccard=[' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ']
cardr=['杀','桃','闪']
ppcard=['顺手牵羊','火烧连营','空城计','万箭齐发','李代桃僵','久经沙场','决斗','草船借箭','无懈可击','无中生有']
em=['剑','盾','弩','羽扇','火焰杀']
cdw=['不朽青铜','不屈白银','荣耀星钻','无敌战神','必胜王牌','勇者巅峰','大师']
for i in range(20):
card[i]=r.choice(cardr)
for i in range(20):
ccard[i]=r.choice(cardr)
for i in range(20):
if card[i]=='杀':
sha+=1
if card[i]=='桃':
tao+=1
if card[i]=='闪':
shan+=1
for i in range(20):
if ccard[i]=='杀':
csha+=1
if ccard[i]=='桃':
ctao+=1
if ccard[i]=='闪':
cshan+=1
cheart=20
t.sleep(0.5)
print('正在匹配中....')
t.sleep(3)
print('你的人物是',b)
print('你的血量是',heart)
print('你的卡牌是',card)
print(' ')
cdv=r.choice(cdw)
print('电脑的人物是',c)
print('电脑的血量是',cheart)
t.sleep(2)
y = '关闭'
yocp = []
z = '关闭'
lfag = 0
while cheart>0 and heart>0 :
t.sleep(1)
print('-===================== round', flag, '=======================-')
if lfag!=flag:
if (corw!='张飞' and rw!='张飞') and (rw=='曹操' or corw=='曹操'):
print('曹操技能【吸血大王】')
if rw=='曹操':
heart+=2
cheart-=1
if corw=='曹操':
cheart+=2
heart-=1
elif (corw=='张飞' or rw!='张飞') and (rw=='曹操' or corw=='曹操'):
print('曹操技能【吸血大王】')
print('张飞技能【坚不可摧】')
if (rw=='马超' and corw=='吕布') or (corw=='马超' and rw=='吕布'):
print('马超技能【长枪突刺】')
if rw=='马超':
cheart-=1
else:
heart-=1
if rw=='赵云':
print('赵云技能【举世无双】')
if corw=='吕布':
print('吕布技能【马中赤兔】')
else:
cheart-=2
if corw=='赵云':
print('赵云技能【举世无双】')
if rw == '吕布':
print('吕布技能【马中赤兔】')
else:
heart -= 2
if cheart==0 and tao>0:
bs=input('电脑濒死是/否救他?')
if bs=='是':
cheart+=1
xp+=1
tao-=1
print('已救活')
else:
break
elif cheart<0:
break
elif cheart<=0 and tao<=0:
break
if heart==0 and tao>0:
bs=input('你濒死是/否救自己?')
if bs=='是':
cheart+=1
tao-=1
print('已救活')
else:
break
elif heart<0:
break
elif heart<=0 and tao<=0:
break
print('你的血', heart, '***----VS----***电脑的血', cheart)
print('你的牌',sha,'【杀】',tao,'【桃】',shan,'【闪】')
t.sleep(0.5)
if y=='启动' and b<3 and lfag!=flag:
cheart-=1
print('【火烧连营】电脑减1血')
hm(heart, cheart)
b+=1
if z=='启动' and c<3 and lfag!=flag:
heart-=1
print('【火烧连营】你减1血')
hm(heart, cheart)
c+=1
t.sleep(1)
if wx()==1:
cms='有'
else:
cms='无'
if len(yocp)<3 and lfag!=flag:
yocpp = r.choice(ppcard)
yocp.append(yocpp)
print('你获得一张【', yocpp, '】')
print('你的技能')
print(yocp)
nu=r.randint(1,20)
boem='无'
if nu>=5 and nu<=7:
yoem = r.choice(em)
print('你获得', yoem)
print('输入【装备】使用')
boem='有'
print('你的回合:')
lfag = flag
yoc = input()
if yoc!='杀' and yoc!='桃' and yoc!='闪' and yoc!='没牌了' and yoc!='结束' and yoc!='退出' and yoc not in yocp and yoc!='装备':
print('错误重输!')
continue
if yoc == '杀' and sha==0:
print('你没这张牌')
continue
if yoc == '桃' and tao==0:
print('你没这张牌')
continue
if yoc == '闪':
print('你不能直接出【闪】')
continue
if yoc == '装备':
if boem=='有':
if yoem=='盾':
print('以装备使用')
heart+=tao
heart+=3
tao=3
hm(heart, cheart)
boem='无'
elif yoem=='剑':
print('以装备使用')
cheart-=sha
cheart-=3
sha=3
hm(heart, cheart)
boem='无'
elif yoem=='弩':
print('以装备使用')
print('你出几张【杀】?(最多不能超过',sha,')')
qbg=int(input())
if qbg<=sha:
cheart-=qbg
else:
cheart-=5
hm(heart, cheart)
boem = '无'
elif yoem=='羽扇':
print('以装备使用')
if cheart>heart:
ppf=heart
heart=cheart
cheart=ppf
else:
heart+=5
cheart-=2
hm(heart, cheart)
boem = '无'
else:
print('以装备使用')
cheart-=3
hm(heart, cheart)
boem = '无'
else:
print('你没装备')
continue
if yoc == '退出':
quit('欢迎下次再来!')
if yoc == '没牌了':
if sha==0 and tao==0:
print('好的!')
break
else:
print('你还有牌')
continue
if yoc=='顺手牵羊':
for i in range(1000):
if yocp[i]==yoc:
yocp.pop(i)
break
print('你使用【顺手牵羊】')
if cms=='有':
print('电脑用【无懈可击】')
cms='无'
continue
if ctao > 0 or csha > 0 or cshan > 0:
if ctao <= 0:
if csha <= 0:
shan+=1
cshan-=1
print('你牵来了一张【闪】')
hm(heart,cheart)
else:
sha+=1
csha-=1
print('你牵来了一张【杀】')
hm(heart, cheart)
elif ctao > 0:
if csha > 0:
if cshan > 0:
adc = r.choice(cardr)
if adc == '杀':
sha += 1
csha -= 1
print('你牵来了一张【杀】')
hm(heart, cheart)
elif adc == '桃':
tao += 1
ctao -= 1
print('你牵来了一张【桃】')
hm(heart, cheart)
else:
shan += 1
cshan -= 1
print('你牵来了一张【闪】')
hm(heart, cheart)
else:
adc = r.choice(ccard3)
if adc == '杀':
sha += 1
csha -= 1
print('你牵来了一张【杀】')
hm(heart, cheart)
elif adc == '桃':
tao += 1
ctao -= 1
print('你牵来了一张【桃】')
hm(heart, cheart)
elif csha<=0:
tao += 1
ctao -= 1
print('你牵来了一张【桃】')
hm(heart, cheart)
continue
elif yoc=='火烧连营':
for i in range(1000):
if yocp[i]==yoc:
yocp.pop(i)
break
print('你使用【火烧连营】')
if cms=='有':
print('电脑用【无懈可击】')
cms='无'
continue
y='启动'
b=0
print('三回合内对手每回合减一血')
t.sleep(0.5)
hm(heart,cheart)
elif yoc=='空城计':
for i in range(1000):
if yocp[i]==yoc:
yocp.pop(i)
break
print('你使用【空城计】')
if cms == '有':
print('电脑用【无懈可击】')
cms = '无'
continue
flag += 1
t.sleep(0.5)
yockcj=input('是否出【杀】?')
if yockcj=='是':
if rw=='吕布':
cheart-=4
else:
cheart-=2
print('你出【杀】电脑减二血')
hm(heart,cheart)
continue
else:
kcj = input('是否出【桃】?')
if kcj == '是':
heart += 2
print('你出【桃】你加二血')
hm(heart, cheart)
continue
else:
print('好的!')
continue
elif yoc=='万箭齐发':
for i in range(1000):
if yocp[i]==yoc:
yocp.pop(i)
break
print('你使用【万箭齐发】')
if cms == '有':
print('电脑用【无懈可击】')
cms = '无'
continue
cheart-=csha
cheart+=1
t.sleep(0.5)
hm(heart,cheart)
elif yoc=='无懈可击':
print('你无法在你的回合使用【无懈可击】')
continue
elif yoc=='李代桃僵':
for i in range(1000):
if yocp[i]==yoc:
yocp.pop(i)
break
print('你使用【李代桃僵】')
heart+=ctao
heart-=1
t.sleep(0.5)
hm(heart,cheart)
elif yoc == '久经沙场':
for i in range(1000):
if yocp[i]==yoc:
yocp.pop(i)
break
print('你使用【久经沙场】')
if cms == '有':
print('电脑用【无懈可击】')
cms = '无'
continue
heart -= 3
cheart -= 5
t.sleep(0.5)
hm(heart, cheart)
elif yoc=='决斗':
for i in range(1000):
if yocp[i]==yoc:
yocp.pop(i)
break
print('你使用【决斗】')
if cms == '有':
print('电脑用【无懈可击】')
cms = '无'
continue
print('你出【杀】还是【桃】?(【杀】有',sha,'张,【桃】有',tao,'张)')
jd=input()
if rw=='吕布':
if jd=='杀'and sha>1:
if csha>1:
print('电脑也出【杀】')
csha-=1
sha-=1
elif csha<=1:
cheart-=2
print('电脑没有【杀】')
elif jd=='桃'and tao>0:
if ctao>0 :
print('电脑也出【桃】')
ctao-=1
tao-=1
elif ctao <= 0:
cheart-=2
print('电脑没有【桃】')
else:
print('输入错误')
print('无法使用【决斗】')
print('【决斗】自动删除...')
t.sleep(0.5)
hm(heart,cheart)
else:
if jd=='杀'and sha>0:
if csha>0:
print('电脑也出【杀】')
csha-=1
sha-=1
elif csha<=0:
cheart-=1
print('电脑没有【杀】')
elif jd=='桃'and tao>0:
if ctao>0 :
print('电脑也出【桃】')
ctao-=1
tao-=1
elif ctao <= 0:
cheart-=2
print('电脑没有【桃】')
else:
print('输入错误')
print('无法使用【决斗】')
print('【决斗】自动删除...')
t.sleep(0.5)
hm(heart,cheart)
elif yoc == '草船借箭':
for i in range(1000):
if yocp[i]==yoc:
yocp.pop(i)
break
print('你使用【草船借箭】')
if cms == '有':
print('电脑用【无懈可击】')
cms = '无'
continue
ccjj=csha+1
print('你借来',ccjj,'张【杀】')
sha+=csha
sha+=1
csha=5
t.sleep(0.5)
hm(heart, cheart)
elif yoc=='无中生有':
if len(yocp)>3:
print('技能区已满无法使用【无中生有】')
continue
for i in range(1000):
if yocp[i]==yoc:
yocp.pop(i)
break
print('你使用【无中生有】')
yocpp = r.choice(ppcard)
yocp.append(yocpp)
print('你获得一张【', yocpp, '】')
print('你的技能')
print(yocp)
t.sleep(0.5)
hm(heart,cheart)
continue
if sha>0 or tao>0 or csha>0 or ctao>0:
if yoc == '闪':
print('在说一遍:你不能直接出【闪】')
if yoc=='桃' and tao>0:
tao -= 1
heart+=1
print('你出【桃】加一血')
print('你的血',heart)
print('电脑的血',cheart)
print('继续')
if yoc=='杀' and sha>0:
sha -= 1
s='无'
for i in ccard:
if i=='闪' and cshan>0:
print('你出【杀】电脑出【闪】')
s='有'
cshan-=1
break
if s!='有':
if rw=='吕布':
cheart-=2
else:
cheart-=1
print('你出【杀】电脑减一血')
print('你的血',heart)
print('电脑的血',cheart)
print('继续')
t.sleep(1)
print('你的血', heart, '***----VS----***电脑的血', cheart)
t.sleep(0.5)
if cheart<=0 or heart<=0:
break
flag += 1
print('电脑回合:')
t.sleep(1)
cboem = '无'
if nu>=16 and nu<=18:
coem=r.choice(em)
print('电脑获得',coem)
cboem='有'
if cboem == '有':
if coem == '盾':
print('电脑使用装备【盾】')
cheart += ctao
cheart += 3
ctao = 3
hm(heart, cheart)
cboem = '无'
continue
elif coem == '剑':
print('电脑使用装备【剑】')
heart -= csha
heart -= 3
csha = 3
hm(heart, cheart)
cboem = '无'
continue
elif coem == '弩':
print('电脑使用装备【弩】')
heart -= csha
hm(heart, cheart)
boem = '无'
continue
elif coem == '羽扇':
print('电脑使用装备【羽扇】')
if heart > cheart:
ppf = heart
heart = cheart
cheart = ppf
else:
cheart += 5
heart-=2
hm(heart, cheart)
boem = '无'
continue
else:
print('电脑使用装备【火焰杀】')
heart -= 3
hm(heart, cheart)
boem = '无'
continue
h = r.choice(jz)
if h == 'coc':
if ctao > 0 or csha > 0:
if ctao <= 0:
coc = '杀'
elif csha <= 0:
coc = '桃'
else:
coc = r.choice(ccard3)
else:
cocpp = r.choice(ppcard)
h = 'cocpp'
else:
cocpp = r.choice(ppcard)
if h=='cocpp':
if cocpp == '空城计':
print('电脑使用【空城计】')
t.sleep(0.5)
if '无懈可击' in yocp:
print('你使用【无懈可击】')
for i in range(1000):
if yocp[i] == '无懈可击':
yocp.pop(i)
break
continue
if corw=='吕布':
heart -= 4
else:
heart -= 2
print('电脑出【杀】你减二血')
hm(heart, cheart)
elif cocpp == '顺手牵羊':
print('电脑使用【顺手牵羊】')
if '无懈可击' in yocp:
print('你使用【无懈可击】')
for i in range(1000):
if yocp[i] == '无懈可击':
yocp.pop(i)
break
continue
if tao > 0 or sha > 0 or shan > 0:
if tao <= 0:
if sha == 0:
cshan += 1
shan -= 1
print('电脑牵了你一张【闪】')
hm(heart, cheart)
else:
csha += 1
sha -= 1
print('电脑牵了你一张【杀】')
hm(heart, cheart)
elif tao > 0:
if sha > 0:
if shan > 0:
adc = r.choice(cardr)
if adc == '杀':
csha += 1
sha -= 1
print('电脑牵了你一张【杀】')
hm(heart, cheart)
elif adc == '桃':
ctao += 1
tao -= 1
print('电脑牵了你一张【桃】')
hm(heart, cheart)
else:
cshan += 1
shan -= 1
print('电脑牵了你一张【闪】')
hm(heart, cheart)
else:
adc = r.choice(ccard3)
if adc == '杀':
csha += 1
sha -= 1
print('电脑牵了你一张【杀】')
hm(heart, cheart)
elif adc == '桃':
ctao += 1
tao -= 1
print('电脑牵了你一张【桃】')
hm(heart, cheart)
elif csha == 0:
ctao += 1
tao -= 1
print('电脑牵了你一张【桃】')
hm(heart, cheart)
elif cocpp == '火烧连营':
print('电脑使用【火烧连营】')
if '无懈可击' in yocp:
print('你使用【无懈可击】')
for i in range(1000):
if yocp[i] == '无懈可击':
yocp.pop(i)
break
continue
z = '启动'
c = 0
t.sleep(0.5)
hm(heart, cheart)
elif cocpp == '万箭齐发':
print('电脑使用【万箭齐发】')
if '无懈可击' in yocp:
print('你使用【无懈可击】')
for i in range(1000):
if yocp[i] == '无懈可击':
yocp.pop(i)
break
continue
heart -= sha
heart += 1
t.sleep(0.5)
hm(heart, cheart)
elif cocpp == '李代桃僵':
print('电脑使用【李代桃僵】')
cheart += tao
cheart -= 1
t.sleep(0.5)
hm(heart, cheart)
elif cocpp == '久经沙场':
print('电脑使用【久经沙场】')
if '无懈可击' in yocp:
print('你使用【无懈可击】')
for i in range(1000):
if yocp[i] == '无懈可击':
yocp.pop(i)
break
continue
cheart -= 3
heart -= 5
t.sleep(0.5)
hm(heart, cheart)
elif cocpp == '决斗':
print('电脑使用【决斗】')
if '无懈可击' in yocp:
print('你使用【无懈可击】')
for i in range(1000):
if yocp[i] == '无懈可击':
yocp.pop(i)
break
continue
if csha>0:
print('电脑出【杀】')
jc='杀'
else:
print('电脑出【桃】')
jc='桃'
if corw=='吕布' and sha>1:
print('你出 2 张【杀】还是【桃】?(【杀】有',sha,'张,【桃】有',tao,'张)')
jd=input()
elif corw!='吕布' and sha>0:
print('你出【杀】还是【桃】?(【杀】有', sha, '张,【桃】有', tao, '张)')
jd = input()
elif sha<=0:
print('你无法出杀')
jd = '无'
if jc == '杀':
if jd != '杀':
print('你没出【杀】')
if corw=='吕布':
csha -= 1
heart-=4
else:
csha -= 1
heart-=2
else:
if corw=='吕布':
csha -= 1
sha -= 2
else:
csha -= 1
sha -= 1
print('你出【杀】')
elif jc == '桃':
if jd != '桃':
print('你没出【桃】')
ctao -= 1
heart -= 2
else:
ctao -= 1
tao -= 1
print('你出【桃】')
else:
print('输入错误')
heart-=2
t.sleep(0.5)
hm(heart, cheart)
elif cocpp=='草船借箭':
print('电脑使用【草船借箭】')
if '无懈可击' in yocp:
print('你使用【无懈可击】')
for i in range(1000):
if yocp[i] == '无懈可击':
yocp.pop(i)
break
continue
ccjj=sha + 1
print('电脑借来',ccjj,'张【杀】')
csha+=csha
csha+=1
sha=5
t.sleep(0.5)
hm(heart, cheart)
if h == 'coc':
if coc=='桃' and ctao>0:
cheart += 1
ctao-=1
print('电脑出【桃】加一血')
print('你的血',heart)
print('电脑的血',cheart)
print('继续')
if coc=='杀' and csha>0:
x='0'
csha-=1
for i in card:
if i=='闪' and shan>0:
x=input('电脑出【杀】你是否出【闪】')
break
if x=='是':
shan-=1
print('你出【闪】躲避电脑')
print('你的血',heart)
print('电脑的血',cheart)
print('继续')
elif x=='否':
if corw=='吕布':
heart-=2
else:
heart-=1
print('你没出【闪】减一血')
print('你的血',heart)
print('电脑的血',cheart)
print('继续')
elif x=='0':
heart-=1
print('电脑出【杀】你没有【闪】')
print('减一血')
print('你的血', heart)
print('电脑的血', cheart)
else:
if corw == '吕布':
heart -= 2
else:
heart -= 1
print('电脑出【杀】你没有【闪】')
print('减一血')
print('你的血', heart)
print('电脑的血', cheart)
elif sha<=0 and tao<=0 and shan<=0:
print('你/电脑没牌了')
if heart<cheart:
quit('游戏结束,你输了')
elif heart>cheart:
quit('游戏结束,你赢了')
elif heart==cheart:
print('游戏结束,平局')
quit()
if sha<=0 and tao<=0:
print('你/电脑没牌了')
if heart<cheart:
print('游戏结束,你输了')
quit()
elif heart>cheart:
print('游戏结束,你赢了')
quit()
elif heart==cheart:
print('游戏结束,平局')
quit()
if heart<=0 and cheart!=0:
print('游戏结束,你输了')
quit()
elif heart!=0 and cheart<=0:
print('游戏结束,你赢了')
quit()
elif heart<=0 and cheart<=0:
print('游戏结束,平局')
quit()
quit('好吧,下次再玩!')
代码水平不高,请多多指教。