用python编写乒乓球小游戏–Turtle功能的应用

python有很多功能强大的代码库,Turtle是一款用于游戏开发的代码库。通过编写乒乓球小游戏可以了解这个库的基本的代码的使用

先创建游戏的背景,页面的话感觉跟matlab的交互页面的编辑还有easygui差不多。import os 与游戏本身无关,是为了后面可能添加音效而引用的

#创建游戏背景
import os
import turtle as t
game = t.Screen()
game.title("双人乒乓球对战")
game.bgcolor("black")
#os.system("pause")  或   input()  可以使程序暂停,不过此处使用可能导致程序直接终止,所以使用game.mianloop()
game.mainloop()
game.setup(800,600)

先创建一个球拍
这里必须提一下Turtle创建可视的对象的实质是创建一支画笔,有笔本身和笔所画出的轨迹。

#创建球拍
pai = t.Turtle()   #对象其实是画笔
pai.ht()  #隐藏球拍
pai.up()  #隐藏轨迹
pai.speed(0) #运动速度为瞬移
pai.color("blue")
pai.shape('square')
pai.shapesize(5,1)      #对上面的正方形进行拉伸
#根据800*400建立直角坐标系,进行移动
pai.goto(-350,0)    #现在会有一条运动轨迹,所以第二条将其隐藏
pai.st()    #到位后再显示出来

第二个球拍同理,只需要换个颜色和坐标。坐标(0,0)为显示框的正中央,再背景创建时。我规定坐标范围是(800,600),相当于800*600的矩形框,大家也可以自己调整,但是后面的代码都会发生变化

pai2 = t.Turtle()
pai2.ht()
pai2.up()
pai2.speed(0)
pai2.color("white")
pai2.shape('square')
pai2.shapesize(4,1)
pai2.goto(350,0)
pai2.st()

然后添加乒乓球(在这里我想到了植物大战僵尸的魔改版,其实也可以不抬起画笔(doge))

#添加乒乓球
ball = t.Turtle()
ball.up()   #不需要隐藏但是不能画一条线
ball.speed(0)
ball.color("yellow")
ball.shape('circle')   #d=20
ball.goto(0,0)
ball.st()
ball.vx = 2   #直接定义X轴和Y轴的速度
ball.vy = 2
player1score = 0
player2score = 0

现在考虑打印分数,最后一行的代码有许多函数的内置参数,感兴趣的朋友可以参考我另一则博客Turtle内置部分函数的用法

pen = t.Turtle()   #创建一个画笔来打印分数
pen.ht() #隐藏最初的箭头,不影响书写(后面打印的字)
pen.up() #只要选定位置与初始化位置(0,0)不相符就会有轨迹
pen.color('white')
pen.goto(-10,260)
X = 'play1: {}  play2: {}'.format(player1score,player2score)
pen.write(X,align='center',font=('Arial',20,'bold'))

最后让球拍和乒乓球动起来吧
这里的键位设定不知道是不是我电脑的原因(惠普的按键总是奇奇怪怪),只能开英文大写才行

#移动球拍
#自定义方向键
#先定义方法
def pai_up():y = pai.ycor()y = y + 12pai.sety(y)
def pai_down():y = pai.ycor()y = y - 12pai.sety(y)
def pai2_up():y = pai2.ycor()y = y + 12pai2.sety(y)
def pai2_down():y = pai2.ycor()y = y - 12pai2.sety(y)
game.listen()   #听从玩家指令
game.onkey(pai_up,'W')   #开始自定义键位,为了避免输入法的问题直接开大写
game.onkey(pai_down,'S')
game.onkey(pai2_up,'I')
game.onkey(pai2_down,'K')#用循环使乒乓球动起来
while True:ball.setx(ball.xcor()+ball.vx)ball.sety(ball.ycor()+ball.vy)if (ball.ycor() > 290) or (ball.ycor() < -290):   #防止出界(只针对上下)--反弹--动量守恒ball.vy *= -1if (ball.xcor() > 390) or (ball.xcor() < -390):ball.vx *= -1if (ball.ycor() < pai2.ycor() + 50) and (ball.ycor() > pai2.ycor() - 50) and (ball.xcor() > 330):ball.vx *= -1if (ball.ycor() < pai.ycor() + 50) and (ball.ycor() > pai.ycor() -50) and (ball.xcor() < -330 ):ball.vx *= -1#判断出界if ball.xcor() > 380 :ball.goto(0,0)player1score += 1pen.clear()X = 'play1: {}  play2: {}'.format(player1score, player2score)pen.write(X, align='center', font=('Arial', 20, 'bold'))if ball.xcor() < -380:player2score += 1pen.clear()    #作为幕布不会刷新,则需要认为地刷新(清除上一次的显示)X = 'play1: {}  play2: {}'.format(player1score, player2score)pen.write(X, align='center', font=('Arial', 20, 'bold'))  #这个方法被多次调用,为了简化也可以定义一个方法

用python编写乒乓球小游戏--Turtle功能的应用相关推荐

  1. Python 编写石头剪刀布小游戏

    Python 编写石头剪刀布小游戏 一个简单的小游戏 程序只运行一次 每次出拳一次要运行一次,很麻烦,要让程序一直运行 长期玩游戏不利于身心健康,玩游戏要有度不是 免费玩了这么多次,要给项目创造一点收 ...

  2. 用Python编写微信小游戏“跳一跳”的运行脚本

    前言 更新了微信后发现了一款小游戏跳一跳,但是玩了一下午最高才达到200,每次差点破纪录后总是手抖就挂掉了,气的想要砸手机..闲来无事刷微博的时候正好看到有人分析如何编写脚本自动运行游戏破了3000多 ...

  3. Python编写俄罗斯方块小游戏

    俄罗斯方块是俄罗斯人发明的一款休闲类的小游戏,这款小游戏可以说是很多人童年的主打电子游戏了,本文我们使用 Python 来实现这款小游戏. 很多人学习python,不知道从何学起. 很多人学习pyth ...

  4. python编写抽奖小游戏

    python代码 import random #抽奖系统 #等级 dj = ["一","二","三"] #奖品 jp = ["th ...

  5. python编写五子棋小游戏 (电脑自走棋)

    class Checkerboard:def __init__(self, line_points):self._line_points = line_pointsself._checkerboard ...

  6. 吾昂王的Python之路---利用python编写石头剪刀布小游戏

    ~~ 整体思路: ~~ 首先: 用变量 获取 输入的石头 剪刀 布 其次: 利用条件判断 玩家一 输入的为 石头 剪刀 还是 布 若为石头 若玩家一输出非1 2 3 其中一个则退出语句 则执行 下一个 ...

  7. c++代码小游戏_用Python编写一个打乒乓球小游戏

    Python功能十分强大,从科学计算到人工智 能,当然Python还可以编写游戏代码喔,虽然不是主流,但是是否应该了解一下呢?茶余饭后,编写一个很有趣的小游戏,编程半小时,能玩一整天,不断的调整游戏参 ...

  8. 用Python编写一个打乒乓球小游戏

    点击上方"背锅侠Tester",从陌生到恋爱的感觉~ 听说看超哥的文章会上瘾 不要把工作当作生活的工具,把工作当生意做: 愿自己身体健健康康家人平安 祝各位同上,2019更精彩@a ...

  9. Python快速编程入门#学习笔记02# |第十章 :Python计算生态与常用库(附.小猴子接香蕉、双人乒乓球小游戏源码)

    全文目录 学习目标 1. Python计算生态概述 1.1 Python计算生态概述 2. Python生态库的构建与发布 2.1 模块的构建与使用 * 2.1.1第三方库/模块导入的格式 2.2 包 ...

最新文章

  1. Doxygen生成代码关系调用图
  2. ES6笔记(4)-- Symbol类型
  3. python3 random函数_Python3 中 random模块
  4. 《ASP.NET Web 站点高级编程》勘误 Part 3
  5. 数据库-主键和外键及其约束
  6. [RK3399 Android7.1] 开启保存上一次重启前日志
  7. 《iOS 6高级开发手册(第4版)》——1.8节使用加速度移动屏幕上的对象
  8. Python csv文件读写(csv模块)(转载)
  9. java毕业论文范文3_java毕业论文范文3篇
  10. macOS pages 插入公式快捷键
  11. 请帮助和关心Unix-Center
  12. 山东大学暑期实训——智能人物画像综合分析系统
  13. 易泊夏武离线车牌识别,车牌识别SDK
  14. android SwipeMenuLayout实现控件侧滑删除
  15. 使用c语言实现三子棋游戏
  16. 微信支付服务商分账-请求单次分账
  17. STC89C52RC - 1 - 简述以及最小操作系统
  18. 七夕-wikipedia
  19. 需求收集方法工具,以及进行需求分析的6大要素
  20. Kubernetes Pod的重启策略+健康检查(实现应用自修复);

热门文章

  1. 航空售票系统--数据库代码部分
  2. HTML5游戏化互动学习平台,h5游戏平台_触摸型互动slg黄油手游
  3. 执行python manage.py migrate报错问题解决
  4. 年月日时的天干推算方法
  5. HadoopHA部署(1+x)
  6. auc评测指标如何计算?其他的评测指标有吗?假设阙值为0.5,如何计算这个点?
  7. EasyExcel代码层面设置写出的Excel样式、以及拦截器策略的使用、自动列宽设置、EasyExcel默认设置详解
  8. 台式计算机打印机共享,如何连接共享打印机,教您电脑如何连接共享打印机
  9. 我精心整理的一些大牌男装正品店
  10. 初创企业该追求盈利还是高估值