设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 9065|回复: 1
打印 上一主题 下一主题

学习Python,个人完善了踢点球小游戏(分享)

[复制链接]

2

主题

0

好友

20

积分

新手上路

Rank: 1

跳转到指定楼层
楼主
发表于 2017-12-27 13:26:34 |只看该作者 |倒序浏览
在学习借鉴crossin老师和其他吧友代码的基础上,补充完善了点球小游戏,供交流分享。
本人代码有点长,有其他更精简的语句,求分享。
代码如下:
from random import choice
d=['left','center','right']
c=['up','down']
score=[0,0]

def order(x,y): #决定先踢还是先守门
   if x==y:
      print('You kick first!')
      return 1
   else:
      print('You save first!')
      return 0
   
def you_kick():
      print('YOU KICK:choose one side to shoot')
      print('left,center,right')
      you=input()
      while you not in d:
            print('Choose again,spell right!')
            you=input()
      print('you kicked: '+you)
      com=choice(d)
      print('computer saved: '+com)
      if you!=com:
         print('goal!')
         score[0]+=1
      else:
         print('Oops...')      
      print('Score: %d(you) - %d(com)\n'%(score[0],score[1]))

def you_save():
      print('YOU SAVE:choose one side to save')
      print('left,center,right')
      you=input()
      while you not in d:
            print('Choose again,spell right!')
            you=input()
      print('you saved: '+you)
      com=choice(d)
      print('computer kicked: '+com)
      if you!=com:
         print('Oops...')
         score[1]+=1  
      else:
         print('saved!')      
      print('Score: %d(you) - %d(com)\n'%(score[0],score[1]))


print('Now start the penerlty!\n')
print('Deside the order to kick')
print('Please choose the side of coin:')#猜硬币,决定踢点球顺序
print('up,down')
you=input()
while you not in c:
   print('Choose again,spell right!')
   you=input()
ref=choice(c)
print('The side of coin is '+ref)
order=order(you,ref)
print('===Game Start!!!===\n')


for i in range(5):
    print('==Round %d==\n'%(i+1))
    if order==1: # 猜对硬币先踢
       you_kick()
       if (abs(score[0]-score[1])>(4-i)): #5轮常规点球内提前结束判定,下同
          break
       you_save()
       if (abs(score[0]-score[1])>(4-i)):
          break
      
    elif order==0: #猜错硬币先守门
       you_save()
       if (abs(score[0]-score[1])>(4-i)):
          break
       you_kick()
       if (abs(score[0]-score[1])>(4-i)):
          break
   
while (score[0]==score[1]): #5轮常规点球若踢平,后续1vs1决胜
    i+=1
    print('==Round %d==\n'%(i+1))
    if order==1:
       you_kick()
       you_save()
    else:
       you_save()
       you_kick()

print('Game over!!!')
if score[0]>score[1]:
   print('You win!')
else:
   print('You lose...')
回复

使用道具 举报

6

主题

2

好友

654

积分

实习版主

Rank: 7Rank: 7Rank: 7

沙发
发表于 2017-12-28 19:42:41 |只看该作者
赞一个
回复

使用道具 举报

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

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

GMT+8, 2024-9-21 20:33 , Processed in 0.013591 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部