设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
12
返回列表 发新帖
楼主: syydelt
打印 上一主题 下一主题

五轮射门小游戏

[复制链接]

1

主题

0

好友

50

积分

注册会员

Rank: 2

11#
发表于 2019-7-4 12:27:25 |显示全部楼层
#定义射门/守门函数
import random
def shemen(she,shou):
    g=0
    print('现在由'+she+'射门,'+shou+'守门')
    if she==zhanghu:
        s='射'
    else:
        s='守'
    while g!='1' and g!='2':
        g=input(zhanghu+'请选择%s门的方向:' %s)
    j=random.randint(1,3)
    if int(g)!=j:
        print('哈哈!'+ she +'球进啦!')
        return 1
    else:
        print('唉!'+she+'球没进!')
        return 0

print('''               欢迎参加点球大战
射门/守门方向:1表示左边,2表示右边''')
zhanghu=input('请输入你的用户名:')

#打开历史成绩文件,比对账户,输出历史成绩,
f=open('dianqiuchengji.txt')
lines = f.readlines()
f.close()

i=0
m=-1
print (zhanghu+' 欢迎您!')
for line in lines:
    data = line.split()
    if zhanghu==data[0]:
        print('历史成绩:'+line)
        m=i
        data0=data  #记录账号序列
        break
    i +=1
if m==-1:
    print('历史成绩:空白')

   
#游戏过程
print("----------let's go--------")
jiqi=0
geren=0
i=0
while i<5 or (i>=5 and geren==jiqi):
    i +=1
    print('第'+str(i)+'轮射门开始')
    geren=geren+shemen(zhanghu,'机器')   
    print('现在'+zhanghu+'和机器的比分为  '+str(geren)+':'+str(jiqi))
    if i<=5 and (geren>jiqi+6-i or jiqi>geren+5-i):
        break
    jiqi=jiqi+shemen('机器',zhanghu)
    print('现在'+zhanghu+'和机器的比分为  '+str(geren)+':'+str(jiqi))
    if abs(geren-jiqi)+i-5>0 and i<5:
        break
chengji=str(geren)+':'+str(jiqi)
print('经过'+str(i)+'轮较量,'+zhanghu+'和机器的比分为'+chengji)
if geren>jiqi:
    print('获胜的为'+zhanghu)
else:
    print('获胜的为机器')
print('游戏结束,下次再会!')

#更新历史成绩
f=open('dianqiuchengji.txt','w')
if m==-1:
    data0=zhanghu+' '+chengji+'\n'
    print(lines)
    lines.append(data0)
    print(lines)
else:
    data0.append(chengji+'\n')
    print(lines)
    lines[m]=' '.join(data0)
    print(lines)
f.writelines(lines)
f.close()
回复

使用道具 举报

1

主题

0

好友

50

积分

注册会员

Rank: 2

12#
发表于 2019-7-5 08:55:37 |显示全部楼层
dianqiuchengji.txt
运行前:
李尘 3:4 4:2 3:4
xiha 2:3 3:1
558 4:3 3:0 2:3
王彬 0:3 0:1 0:2 6:5 4:3
张涛 6:5
运行后:
李尘 3:4 4:2 3:4
xiha 2:3 3:1
558 4:3 3:0 2:3
王彬 0:3 0:1 0:2 6:5 4:3
张涛 6:5 3:2
西瓜 5:4

回复

使用道具 举报

1

主题

0

好友

50

积分

注册会员

Rank: 2

13#
发表于 2019-7-5 08:56:40 |显示全部楼层
syydelt 发表于 2019-7-4 12:27
#定义射门/守门函数
import random
def shemen(she,shou):

增加成绩读取和储存功能
回复

使用道具 举报

1

主题

0

好友

50

积分

注册会员

Rank: 2

14#
发表于 2019-7-5 08:58:09 |显示全部楼层
运行结果:  
             欢迎参加点球大战
射门/守门方向:1表示左边,2表示右边
请输入你的用户名:张涛
张涛 欢迎您!
历史成绩:张涛 6:5

----------let's go--------
第1轮射门开始
现在由张涛射门,机器守门
张涛请选择射门的方向:1
哈哈!张涛球进啦!
现在张涛和机器的比分为  1:0
现在由机器射门,张涛守门
张涛请选择守门的方向:1
哈哈!机器球进啦!
现在张涛和机器的比分为  1:1
第2轮射门开始
现在由张涛射门,机器守门
张涛请选择射门的方向:1
唉!张涛球没进!
现在张涛和机器的比分为  1:1
现在由机器射门,张涛守门
张涛请选择守门的方向:1
唉!机器球没进!
现在张涛和机器的比分为  1:1
第3轮射门开始
现在由张涛射门,机器守门
张涛请选择射门的方向:11
张涛请选择射门的方向:1
唉!张涛球没进!
现在张涛和机器的比分为  1:1
现在由机器射门,张涛守门
张涛请选择守门的方向:1
唉!机器球没进!
现在张涛和机器的比分为  1:1
第4轮射门开始
现在由张涛射门,机器守门
张涛请选择射门的方向:1
唉!张涛球没进!
现在张涛和机器的比分为  1:1
现在由机器射门,张涛守门
张涛请选择守门的方向:1
哈哈!机器球进啦!
现在张涛和机器的比分为  1:2
第5轮射门开始
现在由张涛射门,机器守门
张涛请选择射门的方向:1
哈哈!张涛球进啦!
现在张涛和机器的比分为  2:2
现在由机器射门,张涛守门
张涛请选择守门的方向:1
唉!机器球没进!
现在张涛和机器的比分为  2:2
第6轮射门开始
现在由张涛射门,机器守门
张涛请选择射门的方向:1
哈哈!张涛球进啦!
现在张涛和机器的比分为  3:2
现在由机器射门,张涛守门
张涛请选择守门的方向:1
唉!机器球没进!
现在张涛和机器的比分为  3:2
经过6轮较量,张涛和机器的比分为3:2
获胜的为张涛
游戏结束,下次再会!
['李尘 3:4 4:2 3:4\n', 'xiha 2:3 3:1\n', '558 4:3 3:0 2:3\n', '王彬 0:3 0:1 0:2 6:5 4:3\n', '张涛 6:5\n']
['李尘 3:4 4:2 3:4\n', 'xiha 2:3 3:1\n', '558 4:3 3:0 2:3\n', '王彬 0:3 0:1 0:2 6:5 4:3\n', '张涛 6:5 3:2\n']
>>>
===================== RESTART: C:\Python34\dianqiu1.4.py =====================
               欢迎参加点球大战
射门/守门方向:1表示左边,2表示右边
请输入你的用户名:西瓜
西瓜 欢迎您!
历史成绩:空白
----------let's go--------
第1轮射门开始
现在由西瓜射门,机器守门
西瓜请选择射门的方向:1
哈哈!西瓜球进啦!
现在西瓜和机器的比分为  1:0
现在由机器射门,西瓜守门
西瓜请选择守门的方向:1
哈哈!机器球进啦!
现在西瓜和机器的比分为  1:1
第2轮射门开始
现在由西瓜射门,机器守门
西瓜请选择射门的方向:1
唉!西瓜球没进!
现在西瓜和机器的比分为  1:1
现在由机器射门,西瓜守门
西瓜请选择守门的方向:2
唉!机器球没进!
现在西瓜和机器的比分为  1:1
第3轮射门开始
现在由西瓜射门,机器守门
西瓜请选择射门的方向:2
哈哈!西瓜球进啦!
现在西瓜和机器的比分为  2:1
现在由机器射门,西瓜守门
西瓜请选择守门的方向:2
哈哈!机器球进啦!
现在西瓜和机器的比分为  2:2
第4轮射门开始
现在由西瓜射门,机器守门
西瓜请选择射门的方向:1
哈哈!西瓜球进啦!
现在西瓜和机器的比分为  3:2
现在由机器射门,西瓜守门
西瓜请选择守门的方向:2
哈哈!机器球进啦!
现在西瓜和机器的比分为  3:3
第5轮射门开始
现在由西瓜射门,机器守门
西瓜请选择射门的方向:2
哈哈!西瓜球进啦!
现在西瓜和机器的比分为  4:3
现在由机器射门,西瓜守门
西瓜请选择守门的方向:22
西瓜请选择守门的方向:2
哈哈!机器球进啦!
现在西瓜和机器的比分为  4:4
第6轮射门开始
现在由西瓜射门,机器守门
西瓜请选择射门的方向:2
哈哈!西瓜球进啦!
现在西瓜和机器的比分为  5:4
现在由机器射门,西瓜守门
西瓜请选择守门的方向:2
唉!机器球没进!
现在西瓜和机器的比分为  5:4
经过6轮较量,西瓜和机器的比分为5:4
获胜的为西瓜
游戏结束,下次再会!
['李尘 3:4 4:2 3:4\n', 'xiha 2:3 3:1\n', '558 4:3 3:0 2:3\n', '王彬 0:3 0:1 0:2 6:5 4:3\n', '张涛 6:5 3:2\n']
['李尘 3:4 4:2 3:4\n', 'xiha 2:3 3:1\n', '558 4:3 3:0 2:3\n', '王彬 0:3 0:1 0:2 6:5 4:3\n', '张涛 6:5 3:2\n', '西瓜 5:4\n']
>>>
回复

使用道具 举报

1

主题

0

好友

50

积分

注册会员

Rank: 2

15#
发表于 2019-7-5 10:55:02 |显示全部楼层
求大神指教!
1、感觉这样写比较麻烦,如果还想统计胜利的场次就更麻烦了,不知道能不能用Excel文件来储存和读取会好一些,还是多建几个文件来解决。
2、我也碰巧实现了点球成绩的存储功能,我还想问一下append这个追加结果为什么把最后一个'2:3\n'的'\n'就没有了,虽然我也想达到这个效果,是因为join吗?我在命令行输入看好像不行呀!
>>> l=['12\n']
>>> l
['12\n']
>>> l.append('13\n')
>>> l
['12\n', '13\n']
>>>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-17 13:55 , Processed in 0.018860 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部