py乒乓球代码 /为了孙曌凌,优快云

缅怀球王贝利,今天咱们代言一波国球,也就是乒乓,在最开始会看到上面有两个名字,吴一凡vs孙曌凌,你可以用w s操控吴一凡,也可以用上下键操控孙曌凌,如有观众想换个名字,可以再86行改一下接下来。

源代码展示: (纯属猿创)

import turtle as t # 导入turtle库

import time

player_speed = 10 # 球拍移动速度

xm_score = 0 # 小明的分数

dm_score = 0 # 大明的分数

# 1. 创建背景

game = t.Screen() #创建窗口

game.title("打乒乓") # 窗口标题

game.bgcolor("black") # 窗口背景

game.setup(800, 600) # 窗口宽高

game.tracer(0)

# 2. 创建小明球拍

xm = t.Turtle() # 创建画笔

xm.ht() # 先隐藏

xm.up() # 开始绘画

xm.speed(0) # 让球拍瞬间去左侧

xm.color('blue') # 球拍颜色

xm.shape('square')

xm.shapesize(5, 1) # 球拍大小

xm.goto(-350, 0) # 球拍位置

xm.st() # 再显示

# 3. 创建大明球拍

dm = t.Turtle()

dm.ht() # 先隐藏

dm.up()

dm.speed(0)

dm.color('red')

dm.shape('square')

dm.shapesize(5, 1)

dm.goto(350, 0)

dm.st() # 再显示

# 小明向上移动

def xm_up():

y = xm.ycor()

if (y < 250) :

y = y + player_speed

xm.sety(y)

# 小明向下移动

def xm_down():

y = xm.ycor()

if( y> -240):

y = y - player_speed

xm.sety(y)

# 大明向上移动

def dm_up():

y = dm.ycor()

if (y < 250):

y = y + player_speed

dm.sety(y)

# 大明向下移动

def dm_down():

y = dm.ycor()

if (y > -240):

y = y - player_speed

dm.sety(y)

# 4. 监听键盘 进行移动球拍

game.listen()

game.onkeypress(xm_up, 'w')

game.onkeypress(xm_down, 's')

game.onkeypress(dm_up, 'Up')

game.onkeypress(dm_down, 'Down')

# 5. 创建乒乓球

pp = t.Turtle()

pp.up()

pp.speed(0)

pp.color('white') # 颜色

pp.shape('circle') # 圆形

pp.st() # 再显示

pp.dx = 0.4 # 调整球x轴速度

pp.dy = 0.4 # 调整球y轴速度

# 屏幕显示成绩

def write_score():

pen.clear()

score_text = "吴一凡:{} 孙曌凌:{}".format(xm_score, dm_score)

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

# 9. 绘画成绩文字

pen = t.Turtle()

pen.ht()

pen.up()

pen.color('white')

pen.goto(-30, 250)

write_score()

# 判定是否要退出

running = True

# 设置running为false 停止循环

def stop_loop():

global running

running = False

# . 获得窗口的Tk对象,并注册关闭事件

root = game.getcanvas().winfo_toplevel()

root.protocol('WM_DELETE_WINDOW', stop_loop)

# 主循环

while running:

# 刷新屏幕

game.update()

# 6.让乒乓球动起来

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

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

# 当乒乓球碰到边界会反弹回来

if (pp.ycor() > 290) or (pp.ycor() < -290):

pp.dy *= -1

# 7. 接球

y_up = dm.ycor() + 50

y_down = dm.ycor() - 50

if (pp.ycor() < y_up and pp.ycor() > y_down and pp.xcor() > 340):

pp.dx *= -1

pp.setx(339) # 让乒乓球脱离球拍

if (pp.ycor() < xm.ycor() + 50 and pp.ycor() > xm.ycor() - 50 and pp.xcor() < -340):

pp.dx *= -1

pp.setx(-339) # 让乒乓球脱离球拍

# 8. 球出界 并 加分

if (pp.xcor() > 380):

time.sleep(0.2) # 睡眠0.1s

pp.goto(0, 0)

xm_score += 1

print("吴一凡得分!")

write_score() # 更新屏幕成绩

if (pp.xcor() < -380):

time.sleep(0.2) # 睡眠0.1s

pp.goto(0, 0)

dm_score += 1

print("孙曌凌得分!")

write_score() # 更新屏幕成绩

最近由于阳的事,没有更新,实在抱歉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值