文章目录

    • 效果展示
  • 一、环境准备
  • 二、开发步骤
    • 1、创建游戏背景
    • 2、创建球拍
    • 3、让球拍动起来
    • 5、创建乒乓球
    • 6、让乒乓球动起来
    • 7、接球
    • 8、得分
  • 三、完整代码

效果展示



一、环境准备

安装pycharm:
下载地址:https://mp.weixin.qq.com/s/CW-ALGcKJffuuAVrHyqqkg

安装turtle库

pip install turtle  -i  https://pypi.douban.com/simple/

二、开发步骤

1、创建游戏背景

import turtle as t  # 导入turtle库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('yellow')  # 球拍颜色
xm.shape('square')
xm.shapesize(5, 1)   # 球拍大小
xm.goto(-350, 0)     # 球拍位置
xm.st()  # 再显示

3、让球拍动起来

# 小明向上移动
def xm_up():y = xm.ycor()if (y < 250) :y = y + player_speedxm.sety(y)# 小明向下移动
def xm_down():y = xm.ycor()if( y> -240):y = y - player_speedxm.sety(y)# 大明向上移动
def dm_up():y = dm.ycor()if (y < 250):y = y + player_speeddm.sety(y)# 大明向下移动
def dm_down():y = dm.ycor()if (y > -240):y = y - player_speeddm.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、创建乒乓球

# 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轴速度

6、让乒乓球动起来

    # 6.让乒乓球动起来pp.setx(pp.xcor() + pp.dx)pp.sety(pp.ycor() + pp.dy)

7、接球

    # 7. 接球y_up = dm.ycor() + 50y_down = dm.ycor() - 50if (pp.ycor() < y_up and pp.ycor() > y_down and pp.xcor() > 340):pp.dx *= -1pp.setx(339)  # 让乒乓球脱离球拍if (pp.ycor() < xm.ycor() + 50 and pp.ycor() > xm.ycor() - 50 and pp.xcor() < -340):pp.dx *= -1pp.setx(-339) # 让乒乓球脱离球拍

8、得分

# 8. 球出界 并 加分if (pp.xcor() > 380):time.sleep(0.2)  # 睡眠0.1spp.goto(0, 0)xm_score += 1print("小明得分!")write_score()  # 更新屏幕成绩if (pp.xcor() < -380):time.sleep(0.2)  # 睡眠0.1spp.goto(0, 0)dm_score += 1print("大明得分!")write_score()  # 更新屏幕成绩

三、完整代码

import turtle as t  # 导入turtle库
import timeplayer_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_speedxm.sety(y)# 小明向下移动
def xm_down():y = xm.ycor()if( y> -240):y = y - player_speedxm.sety(y)# 大明向上移动
def dm_up():y = dm.ycor()if (y < 250):y = y + player_speeddm.sety(y)# 大明向下移动
def dm_down():y = dm.ycor()if (y > -240):y = y - player_speeddm.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 runningrunning = 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() + 50y_down = dm.ycor() - 50if (pp.ycor() < y_up and pp.ycor() > y_down and pp.xcor() > 340):pp.dx *= -1pp.setx(339)  # 让乒乓球脱离球拍if (pp.ycor() < xm.ycor() + 50 and pp.ycor() > xm.ycor() - 50 and pp.xcor() < -340):pp.dx *= -1pp.setx(-339) # 让乒乓球脱离球拍# 8. 球出界 并 加分if (pp.xcor() > 380):time.sleep(0.2)  # 睡眠0.1spp.goto(0, 0)xm_score += 1print("小明得分!")write_score()  # 更新屏幕成绩if (pp.xcor() < -380):time.sleep(0.2)  # 睡眠0.1spp.goto(0, 0)dm_score += 1print("大明得分!")write_score()  # 更新屏幕成绩

Python开发双人对战乒乓球小游戏相关推荐

  1. 【Python游戏】Python实现一个可以切换单人或双人对战乒乓球小游戏 | 附带源码

    相关文件 想学Python的小伙伴可以关注小编的公众号[Python日志] 有很多的资源可以白嫖的哈,不定时会更新一下Python的小知识的哈!! 需要源码的小伙伴可以在公众号回复 乒乓球 Pytho ...

  2. 一小时学会C++开发双人对战版五子棋游戏,小白看完也能自己写游戏啦!

    VC++ 双人对战的五子棋游戏 界面新颖附源码,VC.NET源码项目,五子棋-UI美化实例源码.看一看截图吧,是不是看上去很有感觉的五子棋. 程序流程图: 游戏界面如下: 项目结构展示: 部分源码展示 ...

  3. 用Python写一个双人对战足球小游戏,堪比国足的技术【附带源码】

    开发环境 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理介绍 这是一个 ...

  4. 【Python游戏】双人对战足球小游戏,堪比国足的技术 | 附带源码

    相关文件 关注小编,私信小编领取哟! 当然别忘了一件三连哟~~ 公众号:Python日志 可以关注小编公众号,会不定时的发布一下Python小技巧,还有很多资源可以免费领取哟!! 源码领取:加Pyth ...

  5. 《影子跟随算法》目前试着自己写一个联网双人对战的小游戏 看到一篇网络同步的文章很受启发 这里记录一下

    文章转载于:http://www.skywind.me/blog/archives/131 影子跟随算法由普通DR(dead reckoning)算法发展而来,我将其称为"影子跟随" ...

  6. python乒乓球小游戏_100行-python乒乓球小游戏

    今天在b站上看到一个好的挺有意思的视频,<用Python开发双人对战乒乓球小游戏>,哈哈哈,于是就快速看完啦,然后照着写了一个.传送门用Python开发双人对战乒乓球小游戏_哔哩哔哩 (゜ ...

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

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

  8. 用python编写乒乓球小游戏--Turtle功能的应用

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

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

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

最新文章

  1. 【转】memcached工作原理介绍
  2. java简单线程池实例代码
  3. python一些常用方法_python常用的一些技巧
  4. 数据结构之二叉树的先序、中序、后续的求法
  5. 详解Python中的JSON以及在Python中使用JSON
  6. Eclipse代码自动补全
  7. 容器源码分析之Stack(四)
  8. java list 转 scala_Java与Scala集合互转
  9. CQRS简单入门(Golang)
  10. 使用Web API ASP.NET Core 2.2部署Angular 8应用程序
  11. 我与小娜(04):时空变换,亦真亦幻
  12. vsn服务器 需要先建项目才能,急求!项目马上上线,但是Oracle服务器存在问题...
  13. http status 状态码汇总
  14. 1.3 线性回归的sklearn实现
  15. 2021年研究生数学建模竞赛优秀论文汇总
  16. Unity3D 常用快捷键
  17. PotPlayer v1.7 纯净绿色版 最好用的本地视频播放器下载
  18. 西门子杯大赛比赛总结与体会
  19. 鱼眼相机1080P的标定内参转换为720P的内参鱼眼相机标定方法
  20. 常用三种写透明度的方法

热门文章

  1. 雅思写作 Day 1 阅读笔记
  2. Atlas 2.2.0源码编译及安装步骤
  3. 厉害了!寓教于乐,用玩游戏的方式学习 Git!
  4. 【设计思想解读开源框架】Java基础入门清华大学出版社课后答案
  5. 关于SWF文件格式的一些说明
  6. 网格离散曲率算法(二次曲面拟合)
  7. ai建立使用图案_AI高级教程:创建无缝拼贴图案的方法
  8. 计算机启动后有微软标志但不能进入桌面,电脑开机后进不了桌面,教您电脑开机后无法进入桌面怎么办...
  9. SQL语句创建视图:
  10. FPS游戏服务器设计的问题