#下面定义一个列表,用于用户注册账户,填写密码进行比对
d=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9']
ply=input('请选择注册/登录:')#让用户选择注册/登录
if ply=='注册':#当用户选择注册时
user = input('请输入账户:');pw = input('请输入密码:')#输入注册的账户和密码
if len(user)<4 or len(user)>6:#限制用户账号在4-6个字符
print('账户注册无效,请输入4-6位的账户!')
elif user.isdigit():#用户名不能只是数字
print('账户注册无效,用户名应包含大小写字母和数字!')
elif user.isalnum()==False:#不让用户用有空格或标点
print('账户注册无效,用户名不能有空格和特殊字符!')
elif user.isupper()==True:#用户名不能只是大写字母
print('账户注册无效,用户名应包含大小写字母和数字!')
elif user.islower()==True:#用户名不能只是小写字母
print('账户注册无效,用户名应包含大小写字母和数字!')
elif not(user[0].isalpha()):#用户名开头不能是数字
print('账户注册无效,用户名开头请使用字母!')
elif len(pw)<8 or len(pw)>16:#密码长度为8-16位字符
print('账户注册无效,请输入8-16位的密码!')
elif pw.isalnum()==False:#密码不能有标点和空格
print('账户注册无效,密码不能有空格和特殊字符!')
elif pw.isupper()==True:#密码不能全是大写字母
print('账户注册无效,密码应包含大小写字母和数字!')
elif pw.islower()==True:#密码不能全是小写字母
print('账户注册无效,用户名应包含大小写字母和数字!')
elif pw.isdigit():#密码不能只是数字
print('账户注册无效,密码应包含大小写字母和数字!')
for i in pw:#for循环,定义变量i遍历密码的内容
if i not in d:#如果遍历的密码不在d列表内,则打印输出下面这句话
print('账户注册无效,密码',i,'是违规字符')
else:
uw=user+':'+pw#定义一个变量,账户:变量
zcfile=open('zhuce.txt',mode='a')#a模式打开文件,添加账户到注册文件内
zcfile.write(uw)#添加账户:密码到文档内
zcfile.close()#添加完,关闭文件
elif ply=='登录':#当用户选择登录时
user = input('请输入账户:');pw = input('请输入密码:')#输入账号,密码
ppfile=open('zhuce.txt',mode='r')#r模式打开注册用户存档文档
nr=ppfile.read()#定义变量保存文档的读取信息
ppfile.close()
cdwdfile=open('cundang.txt',mode='r')#打开存档信息文档
cdread=cdwdfile.read()#读取存档信息
cdlist=cdread.split(':')#将存档信息转化为列表形式,方便对变量进行赋值
cdwdfile.close()#操作完毕,关闭文件
if user+':'+pw in nr:#对比账户,密码是否存在
if user+':'+pw in cdread:#验证用户,密码是否在存档文件内,如果有存档,则读取存档内容,赋值给变量
js=cdlist[2]#角色是存档列表下标为2的字符
l=int(cdlist[3])# l=等级,y=经验值,jb=金币数,lsc=连胜次数,n=游戏次数
y=int(cdlist[4])
jb=int(cdlist[5])
lsc=int(cdlist[6])
n=int(cdlist[7])
print('您剩余的游戏次数为:', n, end='\t')
print('您的金币数为:', jb, end='\t')
print('您当前的经验值为:', y, end='\t')
print('您当前的等级为:', l, end='\t')
print('您当前连胜次数为:', lsc)
else:
js = input('请设定角色:')
l = 0;
y = 0;
jb = 0;
lsc = 0;
n = 5 # l=等级,y=经验值,jb=金币数,lsc=连胜次数,n=游戏次数
print('登录成功开始游戏!')
import random#导入随机库
comlist=['石头','剪刀','布']#设定计算机随机的值
computer=random.choice(comlist)#电脑产生随机值
print(computer)#打印出电脑的随机值
while n>0:#当游戏次数>0时,进入循环,开始游戏
usr=input('请出拳,输入石头,剪刀,布:')#让玩家出拳
if usr=='石头' or usr=='剪刀' or usr=='布':#如果玩家出的是石头,剪刀,或布,则进行下面的判断
if usr=='石头' and computer=='剪刀' or usr=='剪刀' and computer=='布' or usr=='布' and computer=='石头':
print('恭喜,您赢了!')
jb+=10;y+=10;lsc+=1#赢得对局金币+10,经验+10,连胜+1
if lsc==5:#当连胜5次后
n+=1;lsc-=lsc#游戏次数+1,连胜次数清零
if y==(l+1)*36:#当游戏经验=等级+1 *36时
l+=1;y-=y#等级提升1,所得经验清零
elif usr==computer:#当玩家出拳和电脑一样则为平局
print('这局游戏打平了!')
n-=1;lsc-=lsc#当游戏平局,游戏次数-1,连胜次数清零
else:
print('不好意思,您输了!')
n-=1;lsc-=lsc#游戏对局输了,游戏次数-1,连胜次数清零
if n<2:#当游戏次数少于两次时提示是否购买次数
gm=input('您的游戏次数少于2次,是否购买游戏次数,50金币1次:')
if gm=='是':#如果玩家输入是
if jb>=50:#判断玩家金币是否>=50枚
jb-=50;n+=1#如果玩家有50枚金币,就-50金币,游戏次数+1
else:#如果没有50金币,提示金币不足
print('您的金币不足!')
else:#如果不购买次数,提示次数不足
print('您的游戏次数已经不足2次,请注意!')
else:#如玩家输入的不是石头,剪刀,布,就提示下面这局话
print('输入错误,请重新出拳!')
n-=1;lsc-=lsc
print('您剩余的游戏次数为:',n,end='\t')
print('您的金币数为:',jb,end='\t')
print('您当前的经验值为:',y,end='\t')
print('您当前的等级为:',l,end='\t')
print('您当前连胜次数为:',lsc)
xw=input('对局结束,是否继续游戏:')
if xw=='是':
continue
else:
play = input('请选择是/否进行存档:')#游戏结束,是否选择存档
if play == '是':#选择存档
cd = open('cundang.txt', mode='w')
#定义变量,内容为账户:密码:等级:经验:金币:连胜次数
cnr = user + ':' + pw + ':' +js+':'+ str(l) + ':' + str(y) + ':' + str(jb) + ':' + str(lsc)+':'+str(n)
cd.write(cnr)#将信息保存到文档内
cd.close()
print('退出游戏!')
break
else:
print('退出游戏!')#如不存档,直接退出游戏
break
else:
print('当前用户不存在,请重新登录或注册')#如果输入的账号,密码不在文档中,则提示这段话
else:
print('输入错误!请输入注册或者登录')#如果用户输入的内容不是注册/登录,提示这句话
python编写石头剪刀布小游戏
最新推荐文章于 2024-07-12 16:16:27 发布