python教程100_100行-python乒乓球小游戏|python教程|python入门|python教程

import turtle as t

# 添加分数

def add_score(who):

pen.clear()

who.score += 1

score_text = 'p1:{},p2:{}'.format(p1.score, p2.score)

pen.write(score_text, align='center', font={"Arial", 20, 'bold'})

# 创造玩家

class player(t.Turtle):

def __init__(self, color, shape, goto):

super(player, self).__init__()

self.ht() # 隐藏动画

self.up() # 抬起画笔

self.score = 0 # 设置默认成绩

self.color(color) # 设置颜色

self.speed(0) # 设置速度

self.goto(goto) # 设置默认位置

self.shape(shape) # 设置形状

self.shapesize(5, 1) # 设置形状比例

self.st() # 显示动画

# 向上移动

def set_up(self):

y = self.ycor()

y = y + 20

self.sety(y)

# 向下移动

def set_down(self):

y = self.ycor()

y = y - 20

self.sety(y)

game = t.Screen()

game.title("双人乒乓球")

game.bgcolor('black')

game.setup(800, 600)

p1 = player(color="blue", shape="square", goto=(-390, 0))

p2 = player(color="red", shape="square", goto=(380, 0))

# 设置球

pp = t.Turtle()

pp.ht()

pp.up()

pp.speed(0)

pp.color('yellow')

pp.shape('circle')

pp.dx = 5

pp.dy = 5

pp.st()

# 设置画笔,画成绩

pen = t.Turtle()

pen.ht()

pen.up()

pen.color("white")

pen.goto(-50, 250)

score_text = 'p1:{},p2:{}'.format(p1.score, p2.score)

pen.write(score_text, align='center', font={"Arial", 20, 'bold'})

# 监听按键

game.listen()

game.onkey(p1.set_up, 'w')

game.onkey(p1.set_down, 's')

game.onkey(p2.set_up, 'Up')

game.onkey(p2.set_down, 'Down')

# 循环游戏

while True:

# game.update()

pp.setx(pp.xcor() + pp.dx)

pp.sety(pp.ycor() + pp.dy)

if pp.ycor() > 290 or pp.ycor() < -290: # 上下边界接住后反弹

pp.dy *= -1

# 允许的接住的范围区域

p1_y_range_up = p1.ycor() + 50

p1_y_range_down = p1.ycor() - 50

p2_y_range_up = p2.ycor() + 50

p2_y_range_down = p2.ycor() - 50

# 左右边界接住反弹,或者对手得分

if pp.xcor() < -370:

if p1_y_range_up > pp.ycor() > p1_y_range_down:

pp.dx *= -1

else:

print("p1 lose")

print("p2 得分")

add_score(p2)

pp.goto(0, 0)

elif pp.xcor() > 360:

if p2_y_range_up > pp.ycor() > p2_y_range_down:

pp.dx *= -1

else:

print("p2 lose")

print("p1 得分")

add_score(p1)

pp.goto(0, 0)

game.mainloop()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值