Python-Pong-Game

我还加了音效,类似于小时候游戏机上的弹球游戏 

import os
import turtle
import pygame#初始化pygame
pygame.init()#加载声音文件
bounce_sound = pygame.mixer.Sound("bounce.mp3")wn = turtle.Screen()
wn.title("Pong by @")
wn.bgcolor("black")
wn.setup(width=800, height=600)
wn.tracer(0)
#阻止了窗口更新#Score
score_a = 0
score_b = 0#Paddle A
paddle_a = turtle.Turtle()
paddle_a.speed(0)
paddle_a.shape("square")
paddle_a.color("white")
paddle_a.shapesize(stretch_wid=5,stretch_len=1)
paddle_a.penup()
paddle_a.goto(-350,0)#Paddle B
paddle_b = turtle.Turtle()
paddle_b.speed(0)
paddle_b.shape("square")
paddle_b.color("white")
paddle_b.shapesize(stretch_wid=5,stretch_len=1)
paddle_b.penup()
paddle_b.goto(+350,0)#Ball
ball = turtle.Turtle()
ball.speed(0)
ball.shape("square")
ball.color("white")
ball.penup()
ball.goto(0,0)
ball.dx = 0.1
ball.dy = -0.1#Pen
pen = turtle.Turtle()
pen.speed(0)
pen.color("white")
pen.penup()
pen.hideturtle()
pen.goto(0,260)
pen.write("Player A: 0 PlayerB: 0",align="center",font=("Courier",24,"normal"))#Function
def paddle_a_up():y = paddle_a.ycor()y += 20paddle_a.sety(y)def paddle_a_down():y = paddle_a.ycor()y -= 20paddle_a.sety(y)def paddle_b_up():y = paddle_a.ycor()y += 20paddle_b.sety(y)def paddle_b_down():y = paddle_a.ycor()y -= 20paddle_b.sety(y)#Keyboard binding
wn.listen()
wn.onkeypress(paddle_a_up,"w")
wn.onkeypress(paddle_a_down,"s")
wn.onkeypress(paddle_b_up,"Up")
wn.onkeypress(paddle_b_down,"Down")#Main game loop
while True:wn.update()#Move the ballball.setx(ball.xcor() + ball.dx)ball.sety(ball.ycor() + ball.dy)#Border checkingif ball.ycor() > 290:ball.sety(290)ball.dy *= -1bounce_sound.play()  # 使用pygame播放声音if ball.ycor() < -290:ball.sety(-290)ball.dy *= -1bounce_sound.play()  # 使用pygame播放声音if ball.xcor() > 390:ball.goto(0,0)ball.dx *= -1score_a += 1pen.clear()pen.write("Player A: {}  PlayerB: {}".format(score_a,score_b),align="center", font=("Courier", 24, "normal"))if ball.xcor() < -390:ball.goto(0,0)ball.dx *= -1score_a += 1pen.clear()pen.write("Player A: {}  PlayerB: {}".format(score_a,score_b),align="center", font=("Courier", 24, "normal"))#Paddle and ball collisionsif ball.xcor() > 340 and ball.xcor() < 350 and (ball.ycor() < paddle_b.ycor() + 40 and ball.ycor() > paddle_b.ycor() -40):ball.setx(340)ball.dx *= -1bounce_sound.play()  # 使用pygame播放声音if ball.xcor() < -340 and ball.xcor() > -350 and (ball.ycor() < paddle_a.ycor() + 40 and ball.ycor() > paddle_a.ycor() -40):ball.setx(-340)ball.dx *= -1bounce_sound.play()  # 使用pygame播放声音

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/737323.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣题目训练(18)

2024年2月11日力扣题目训练 2024年2月11日力扣题目训练561. 数组拆分566. 重塑矩阵572. 另一棵树的子树264. 丑数 II274. H 指数127. 单词接龙 2024年2月11日力扣题目训练 2024年2月11日第十八天编程训练&#xff0c;今天主要是进行一些题训练&#xff0c;包括简单题3道、中等…

光栅化处理(Rasterization)

1.垂直可视角度 ​ 通常使用不同镜头的相机拍摄同一物品的时候&#xff0c;其可以看到的物体的范围是不同的&#xff0c;那么如何表示这一镜头下摄像机所能看到的范围呢&#xff1f;我们定义了一个概念——可视角。如下图所示(两条红线所框出来的角)&#xff1a; 实际上当我们…

LoadBalancer 客户端的负载均衡器+openFeign 请求转发

LoadBalancer Spring Cloud LoadBalancer是Spring Cloud中负责客户端负载均衡的模块&#xff0c;其主要原理是从nacos中获取服务列表通过选择合适的服务实例来实现负载均衡。 源码跟踪 可以看到这里的intercept()方法&#xff0c;拦截了用户的HttpRequest请求&#xff0c;然…

【鸿蒙 HarmonyOS 4.0】通知

一、介绍 通知旨在让用户以合适的方式及时获得有用的新消息&#xff0c;帮助用户高效地处理任务。应用可以通过通知接口发送通知消息&#xff0c;用户可以通过通知栏查看通知内容&#xff0c;也可以点击通知来打开应用&#xff0c;通知主要有以下使用场景&#xff1a; 显示接…

ctfshow web入门 php特性 web146-web150

1.web146 :被过滤了&#xff0c;三元运算符用不了&#xff0c;还可以用位运算符&#xff0c;逻辑运算符,等&#xff0c;逻辑运算符要注意或运算符的短路性 eval(return 1|phpinfo()|1) eval(return 1phpinfo()|1) payload&#xff1a; v11&v20&v3(~%8C%86%8C%8B%9A%92…

粉嘟嘟的免费wordpress模板

粉色好看的wordpress免费模板&#xff0c;用免费wordpress模板也可以搭建网站。 https://www.wpniu.com/themes/11.html

产品开发流程的意义:确保事情做正确——以苹果公司的iPhone为例

产品开发流程的意义&#xff1a;确保事情做正确——以苹果公司的iPhone为例 在当今高度竞争的商业环境中&#xff0c;产品开发流程的重要性愈发凸显。一个精心设计和执行的产品开发流程不仅确保了产品开发的顺利进行&#xff0c;同时也为产品的质量和市场竞争力提供了坚实的保…

Anaconda 的一些配置

Anaconda 安装及修改环境默认位置 https://blog.csdn.net/qq_54562136/article/details/128932352 最重要的一步&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;改文件夹权限 Anaconda创建、激活、退出、删除虚拟环境 修改pip install 默认安装路径

你真的用对了知识管理系统了吗?这篇文章教会你

面对信息化社会的信息爆炸&#xff0c;知识管理系统如同一艘救生船&#xff0c;帮助我们捕捉、储存、共享重要的知识&#xff0c;并提高工作效率。但是&#xff0c;你真的用对了知识管理系统吗&#xff1f;让这篇文章成为你的参考指南。 了解知识管理系统的功能导则 首先&…

数据通信练习题

1.0osi七层模型 应用层 data 表示层 会话层 传输层 数据段 防火墙&#xff0c;端口&#xff08;TCP UDP&#xff09; 网络层 数据包 路由器 数据链路层 数据帧 交换机 物理层 比特流 网卡 2.IP地址分类 私有地址 A类 0--127 10.0.0.0…

vue学习笔记23-组件事件⭐

组件事件 在组件的模板表达式中&#xff0c;可以直接使用$emit方法触发自定义事件&#xff1b;触发自定义事件的目的是组件之间传递数据 好好好今天又碰到问题了&#xff0c;来吧来吧 测试发现其他项目都可以 正常的run ,就它不行 搜索发现新建项目并进入以后&#xff0c;用指…

数据结构->双向链表带你体验开火车(哨兵)与拼接火车(应用)厢的乐趣

✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;橘橙黄又青-CSDN博客 目的&#xff1a;学习双向带头链表的增&#xff0c;删&#xff0c;查&#xff0c;销毁…

每日OJ题_牛客OR57 手套

目录 牛客OR57 手套 解析代码 牛客OR57 手套 手套_牛客题霸_牛客网 class Gloves { public:int findMinimum(int n, vector<int> left, vector<int> right) {} }; 解析代码 class Gloves { public:int findMinimum(int n, vector<int> left, vector<i…

Tomcat容器经常重启问题排查

报错代码: INFO [Catalina-utility-2] org.apache.catalina.core.StandardContext.reload Reloading Context with name [] has started1.查看内存占用情况:top 可以发现java线程正常情况下占用高达24%的内存资源 2.继续排查:top -Hp 29580 可以发现主要有子线程Catalina-ut…

Java高级编程—注解

文章目录 1.注解的概述2.常见的Annotation示例2.1 生成文档相关的注解2.2 在编译时进行格式检查的注解2.3 跟踪代码依赖性&#xff0c;实现替代配置文件功能的注解 3.自定义Annotation4.JDK中的元注解4.1 Retention4.2 Target4.3 Documented & Inherited 5. JDK8中注解的新…

服务器出现故障如何恢复数据?

服务器数据恢复案例之服务器raid6中3块硬盘离线导致阵列崩溃的数据恢复案例 服务器故障&#xff1a; 服务器中有一组由6块盘组建的 RAID6&#xff0c;这台网站服务器上运行MYSQL数据库和存放其它类型的文件。该组raid中有两块磁盘离线&#xff0c;管理员没有及时更换磁盘&#…

【Numpy】练习题100道(1-25题)

#学习笔记# 在学习神经网络的过程中发现对numpy的操作不是非常熟悉&#xff0c;遂找到了Numpy 100题。 Git-hub链接 目录 1 题目列表&#xff1a; 2 题解&#xff1a; 1 题目列表&#xff1a; 导入numpy包&#xff0c;并将其命名为np&#xff08;★☆☆&#xff09; 打印…

Spring boot创建第一个项目

作者简介&#xff1a; zoro-1&#xff0c;目前大二&#xff0c;正在学习Java&#xff0c;数据结构&#xff0c;spring等 作者主页&#xff1a; zoro-1的主页 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f496; Spring boot创建第一个项目 sp…

基于单片机的视觉导航小车设计

目 录 摘 要 I Abstract II 引 言 1 1 总体方案设计 3 1.1 方案论证 3 1.2 项目总体设计 3 2 项目硬件设计 4 2.1 主控模块设计 4 2.1.1单片机选型 4 2.1.2 STM32F103RCT6芯片 4 2.2单片机最小系统电路 5 2.3电机驱动模块设计 7 2.4红外模块设计 8 2.5红外遥控模块设计 9 2.6超…

设计模式深度解析:工厂方法模式与抽象工厂模式的深度对比

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 探索设计模式的魅力&#xff1a;工厂方法模式文章浏览阅读17k次&#xff0c;点赞105次&#xff0…