Python开发双人对战乒乓球小游戏
文章目录
- 效果展示
- 一、环境准备
- 二、开发步骤
- 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开发双人对战乒乓球小游戏相关推荐
- 【Python游戏】Python实现一个可以切换单人或双人对战乒乓球小游戏 | 附带源码
相关文件 想学Python的小伙伴可以关注小编的公众号[Python日志] 有很多的资源可以白嫖的哈,不定时会更新一下Python的小知识的哈!! 需要源码的小伙伴可以在公众号回复 乒乓球 Pytho ...
- 一小时学会C++开发双人对战版五子棋游戏,小白看完也能自己写游戏啦!
VC++ 双人对战的五子棋游戏 界面新颖附源码,VC.NET源码项目,五子棋-UI美化实例源码.看一看截图吧,是不是看上去很有感觉的五子棋. 程序流程图: 游戏界面如下: 项目结构展示: 部分源码展示 ...
- 用Python写一个双人对战足球小游戏,堪比国足的技术【附带源码】
开发环境 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理介绍 这是一个 ...
- 【Python游戏】双人对战足球小游戏,堪比国足的技术 | 附带源码
相关文件 关注小编,私信小编领取哟! 当然别忘了一件三连哟~~ 公众号:Python日志 可以关注小编公众号,会不定时的发布一下Python小技巧,还有很多资源可以免费领取哟!! 源码领取:加Pyth ...
- 《影子跟随算法》目前试着自己写一个联网双人对战的小游戏 看到一篇网络同步的文章很受启发 这里记录一下
文章转载于:http://www.skywind.me/blog/archives/131 影子跟随算法由普通DR(dead reckoning)算法发展而来,我将其称为"影子跟随" ...
- python乒乓球小游戏_100行-python乒乓球小游戏
今天在b站上看到一个好的挺有意思的视频,<用Python开发双人对战乒乓球小游戏>,哈哈哈,于是就快速看完啦,然后照着写了一个.传送门用Python开发双人对战乒乓球小游戏_哔哩哔哩 (゜ ...
- Python快速编程入门#学习笔记02# |第十章 :Python计算生态与常用库(附.小猴子接香蕉、双人乒乓球小游戏源码)
全文目录 学习目标 1. Python计算生态概述 1.1 Python计算生态概述 2. Python生态库的构建与发布 2.1 模块的构建与使用 * 2.1.1第三方库/模块导入的格式 2.2 包 ...
- 用python编写乒乓球小游戏--Turtle功能的应用
用python编写乒乓球小游戏–Turtle功能的应用 python有很多功能强大的代码库,Turtle是一款用于游戏开发的代码库.通过编写乒乓球小游戏可以了解这个库的基本的代码的使用 先创建游戏的背 ...
- c++代码小游戏_用Python编写一个打乒乓球小游戏
Python功能十分强大,从科学计算到人工智 能,当然Python还可以编写游戏代码喔,虽然不是主流,但是是否应该了解一下呢?茶余饭后,编写一个很有趣的小游戏,编程半小时,能玩一整天,不断的调整游戏参 ...
最新文章
- 【转】memcached工作原理介绍
- java简单线程池实例代码
- python一些常用方法_python常用的一些技巧
- 数据结构之二叉树的先序、中序、后续的求法
- 详解Python中的JSON以及在Python中使用JSON
- Eclipse代码自动补全
- 容器源码分析之Stack(四)
- java list 转 scala_Java与Scala集合互转
- CQRS简单入门(Golang)
- 使用Web API ASP.NET Core 2.2部署Angular 8应用程序
- 我与小娜(04):时空变换,亦真亦幻
- vsn服务器 需要先建项目才能,急求!项目马上上线,但是Oracle服务器存在问题...
- http status 状态码汇总
- 1.3 线性回归的sklearn实现
- 2021年研究生数学建模竞赛优秀论文汇总
- Unity3D 常用快捷键
- PotPlayer v1.7 纯净绿色版 最好用的本地视频播放器下载
- 西门子杯大赛比赛总结与体会
- 鱼眼相机1080P的标定内参转换为720P的内参鱼眼相机标定方法
- 常用三种写透明度的方法