pygame小游戏代码_Py之pygame:有趣好玩——利用pygame库实现一个移动底座弹球的小游戏...

Py之pygame:有趣好玩——利用pygame库实现一个移动底座弹球的小游戏

目录

输出结果

实现代码


输出结果

de1ea0581939538b7e8ab9212c2f5123.png

142aee1cd3bd6cfa9821017df9ffcb83.png

实现代码

# -*- coding: utf-8 -*-#Py之pygame:有趣好玩——利用pygame库实现一个移动底座弹球的小游戏import pygame as pg
from pygame.locals import *    #将pygame所有常量导入,如后面的QUIT
from time import sleep
import sys#设置基本屏幕参数
pg.init()                          #初始化,如果没有的话字体会报错等等
scr=pg.display.set_mode((600,550))   #设置屏幕大小
pg.display.set_caption(("移动底座弹球的小游戏"))   #设置屏幕标题
pp=255, 255, 0          #red是一个元组,表示乒乓球橙色
green=0,255,0
white=255,255,255
dizuo=120, 63, 4       #底座颜色灰土色
pink=255, 0, 255
cs=225,121,21           #乒乓球颜色,橙色#设计一下乒乓球的运动方式,乒乓球在屏幕内运动
x=120  #乒乓球的坐标设置为(x,y)
y=120
vx=3   #设置初速度vx,vy,当乒乓球到达屏幕边缘的时候速度取反,也就是乒乓球到达左右两边缘的时候vx取反,上下边缘的时候vy取反。
vy=3
a=200  #a代表乒乓板的x坐标值,因为乒乓板y坐标值是固定的My_font=pg.font.Font(None,40)  #40是字的大小,设置字体,None表示没有,代指pygame默认的字体,但是这样的字体缺点是不能打印出中文。
zt1=pg.font.SysFont('华文楷体',24)  #楷体,a=pg.font.get_fonts()  #获得系统自带的字体
zt2=pg.font.SysFont('华文楷体',20)
zt21=pg.font.SysFont('幼圆',29)def printtext(font,text,x,y,color): #设计一个函数,在游戏屏幕上打印文本,代码表示先把文本转换成一个位图然后打印在屏幕上,打印文本需要打印的具体坐标和文本颜色,字体等参数。img=font.render(text,True,color)   #转换为位图scr.blit(img,(x,y))#设置得分,基础记分量,为什么设置基础记分量?我想的是经过一段时间后乒乓球会加速,从而逐渐增加游戏难度,当然,基础记分量也要翻倍。
c=0   #c是加速器,如果接了10次,那么加速
fs=0   #fs是分数,接到一次乒乓球就加分
k=1  #基础加分量#游戏的主要代码了,pygame采用帧和轮询的方式,帧是指会不断刷新,也就是while True循环,轮询是不断的询问用户的输入。
#在下面代码中,会不断获取鼠标具体坐标和QUIT事件是否发生。Scr.fill会用RGB值为(199,21,133)的颜色刷新屏幕,
#以后画圆写字都在这基础上,下一次循环后又刷新。因此在屏幕中乒乓球和乒乓板就会动态呈现出来。
while True:scr.fill((199,21,133))  #游戏背景色background = pg.image.load('F:/File_Python/Resources/00102.jpg').convert()scr.blit(background, (0, 0)) for eve in pg.event.get():if eve.type == QUIT:    #点击左上角的×sys.exit()         #如果无效,可以试试exit()函数mx,my=pg.mouse.get_pos()     #获得鼠标的x,y坐标a=mx   #鼠标x坐标就是乒乓板的坐标,因此移动鼠标乒乓板也移动#画乒乓球和画乒乓板了,我们可以简化为圆形和矩形pg.draw.circle(scr,pp,(x,y),40,0)pg.draw.rect(scr,dizuo,(a,530,100,20),0)#考虑乒乓球的运动,如果乒乓球碰到左右屏幕边缘,vx取反,碰到上边缘或者碰到乒乓板的时候,vy取反,其余情况表示乒乓板没有接触到乒乓球,跳出循环,游戏结束。x=x+vxy=y+vyif x>550 or x<40:vx=-vxif y<40:vy=-vyif y>510 and abs(a-x+50)<50:if vy>0:vy=-vyelse:passc=c+1     #每接到3次后乒乓球加速fs=fs+k    #加分if c>=3:c=0k=k+k  #乒乓球加速后记分量双倍if vx>0:  #加速vx=vx+1else:vx=vx-1else:passelif y>510 and abs(a-x+50)>50:break#在while循环最后,我写一下得分,规则,还有刷新,刷新很重要!sleep(0.005)  #休眠一定时间,不然乒乓球速度依然很快printtext(zt21,"移动鼠标控制底座左右移动",120,20,pink)printtext(zt2,"得分",550,12,green)printtext(zt2,str(fs),560,32,green)pg.display.update()
#在循环结束后就是前面乒乓板没有接触到乒乓球后发生的情况,最后是游戏结束的代码,毕竟这游戏靠看得分看成败
scr.fill((28, 69, 135))   #游戏结束后全屏改变颜色
zt3=pg.font.SysFont('华文楷体',60)
zt4=pg.font.SysFont('华文楷体',40)
printtext(zt3,"你好,游戏结束",60,120,white)
printtext(zt4,'总得分: '+str(fs),120,400,white)
pg.display.update()   

142aee1cd3bd6cfa9821017df9ffcb83.png

参考文章
用Python编写一个打乒乓球小游戏

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

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

相关文章

java 小题目_java一个小题目

1.给定一个字符串String s"abcdefg";将字符串倒序成一个新字符串2.判断一个字符串是不是回文字符串 比如&#xff1a;"abcdcba" "上海自来水来自海上"1.解Java代码package com.newer.cjl.api;public class zuoye1 {public static void main(Stri…

python中字典的输出序列_python3:序列_字典(常用基础知识)

#字典&#xff1a;字典&#xff1a;无序的、可变的序列&#xff0c;也称关联数组&#xff0c;或散列表①格式{键:值}②通过键读取元素③字典是任意对象的无序集合④字典可任意嵌套&#xff0c;如元素可以为列表、字典、列表的列表等⑤字典的键必须是唯一的。不可重复&#xff0…

jenkins 集成java搅拌_如何将Gauge与Jenkins集成

我对Gauge测试工具有点熟悉&#xff0c;现在我正在通过Jenkins执行它 .首先&#xff1a;我在"Execute Windows Batch Command"字段中设置 gauge --version . 这是输出&#xff1a;Started by user anonymousBuilding in workspace C:\jenkins\workspace\Run_Gauge_Te…

大学生python实验心得体会_大学生实训心得体会3篇

转眼间为期两个星期的实训就结束了&#xff0c;但是安利公司的物流配送、黄埔港、益邦物流公司、南沙港以及学校里面的航海模拟实验中心、轮机实训实验楼这些实训过程仍历历在目。以下是小编整理的大学生实训心得体会&#xff0c;欢迎阅读。大学生实训心得体会1通过实训中心老师…

大白菜pe解锁bitlocker_微PE工具箱 v2.1 官方版,最好用的 Win10PE 系统

微PE工具箱 v2.1 – 最好用的WinPE装机维护工具&#xff01;WinPE工具箱&#xff0c;装机维护最得力的助手&#xff0c;最后救命稻草。化繁为简&#xff0c;小材大用&#xff0c;一键安装&#xff0c;极速启动。微PE工具箱&#xff0c;最好用的PE工具箱&#xff0c;没有之一。无…

mysql5.6 pt-query-digest_pt-query-digest安装及分析

slow log 设置&#xff1a;cat my.cnf# For advice on how to change settings please see# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html[mysqld]#skip-grant-tables# Remove leading # and set to the amount of RAM for the most important …

mysql的执行效率_数据库执行效率的对比测试

今天看了一篇很有意思的文章&#xff0c;对比数据库和普通编程语言的效率测试&#xff0c;测试的语言分别是mysql的存储过程&#xff0c;oracle plsql和perl.测试机器是同一台机器上&#xff0c;测试标准是计算100万次的cos函数oracle代码create or replace procedure oraclesp…

linux修改python版本修改哪个配置文件_linux安装python修改默认python版本方法

linux默认是安装了python&#xff0c;默认是安装python2.6.6&#xff0c;可能安装的版本是不能符合我们需要的python要求的。我们需要重新安装python的版本&#xff0c;今天演示一下安装python3首先下载一个 wget 文件的地址 执行命令进行下载下载完成以后进行解压&#xff…

java算法的递归问题设计_java算法-递归算法思想

递归算法是跟常见的算法思想。使用递归算法&#xff0c;往往可以简化代码编写&#xff0c;提高程序的可读性。但是&#xff0c;不适合的递归往往导致程序的执行效率变低。一、递归算法基本思想递归算法即在程序中不断反复调用自身来叨叨求解问题的方法。此处的重点是调用自身&a…

delstr函数python_Python Day26:多态、封装、内置函数:__str__、__del__、反射(反省)、动态导入模块...

## 多态pythonOOP中标准解释:多个不同类型对象,可以响应同一个方法,并产生不同结果,即为多态多态好处:只要知道基类使用方法即可,不需要关心具体哪一个类的对象实现的,以不变应万变,提高灵活性/扩展性多态,一般都需要一个管理多态的方法,方法的函数就是类的对象,在方法中通过点…

java8用什么tomcat_Tomcat8+JDK8安装与配置

一&#xff0c;系统配置1.操作系统&#xff1a;win10 64位2.tomcat版本&#xff1a;Tomcat8 64位3.Java版本&#xff1a;JDK8 64位二&#xff0c;软件下载下载到本地后直接打开安装&#xff0c;修改存储目录&#xff0c;如图&#xff1a;2.2 Tomcat8下载&#xff0c;官网地址&…

逻辑回归python正则化 选择参数_吴恩达机器学习笔记(三)——正则化(Regularization)...

1.过拟合的问题(Over-fitting)如果我们有非常多的特征&#xff0c;我们通过学习得到的假设可能能够非常好地适应训练集(代价函数可能几乎为0)&#xff0c;但是可能会不能推广到新的数据。(1)下图是一个回归问题的例子&#xff1a;第一个模型是一个线性模型&#xff0c;欠拟合&a…

Java简单记事本设计实验报告_基于JAVA的记事本设计报告.doc

基于JAVA的记事本设计报告华北科技学院计算机系综合性实验报告PAGE第 PAGE 11 页XX学校计算机系综合性实验实 验 报 告课程名称 Java程序设计实验学期 至 学年 第 学期学生所在系部 计算机系年级 专业班级学生姓名 学号任课教师实验成绩计算机系制《 Java程序设计》课程综合性实…

谷歌离开游览器不触发_谷歌游览器

谷歌浏览器不错&#xff0c;可保存不同的账户&#xff0c;互相不干扰。有2个账号&#xff0c;工作账号和个人账号&#xff0c;泾渭分明&#xff0c;不会打架&#xff0c;管理账号。总经理管理公司人员&#xff0c;厂长管理工人&#xff0c;业务员要管理自己账号&#xff0c;管理…

java scanner nextlin_java – Scanner nextLine()偶尔会跳过输入

让我猜一下 – 你没有显示使用上面尝试获取lastName的扫描器的代码.在那次尝试中,你没有处理行尾令牌,所以它是悬空的,只是被你试图获取lastName的nextLine()调用吞噬.例如,如果你有这个&#xff1a;Scanner keyboard new Scanner(System.in);System.out.print("Enter a …

python office库_python库编程.os平台.office平台

1.库安装Python库 PyPI – Python Package Index &#xff1a;https://pypi.python.org/(1) Python库的自定义安装&#xff1a;找到库所在网站&#xff0c;根据指示下载安装安装numpy库库所在网站&#xff1a;http://www.numpy.org/下载地址&#xff1a;http://sourceforge.ne…

java编译系统资源不足_Ant编译项目资源不足

今天用ant编译项目出现 [javac] 系统资源不足。的错误&#xff0c;如下Buildfile: build.xml-compile:[javac] Compiling 919 source files to E:\DSHR\dshr\WebContent\WEB-INF\classes[javac][javac][javac] 系统资源不足。[javac] 有关详细信息&#xff0c;请参阅以下堆栈追…

java线程三部分_java 多线程三

注意到 java 多线程一 中 MyThread2 运行结果出现0、-1&#xff0c;那是因为在操作共享数据时没有加锁导致。加锁的方式&#xff1a;1、同步方法2、同步代码块3、锁读过 java.util.concurrent 集合源码就知道&#xff1a;HashMap:public V put(K key, V value) {...}Hashtable:…

python简述定义函数的规则_Python的函数定义

有经验的程序员往往将功能较为独立、且可以被重复使用的代码块封装成函数&#xff0c;可以有效提高代码的模块化、解耦性和重复利用率。我们前面用到的print()函数就是Python的内建函数&#xff0c;我们也可以根据Python给我们提供的规则进行自定义函数。这里我们用PyCharm来进…

jdk中java_怎样使用JavaJDK中Java?

什么是UDP协议 UDP协议的全称是用户数据报&#xff0c;在网络中它与TCP协议一样用于处理数据包。在OSI模型中&#xff0c;在第四层——传输层&#xff0c;处于IP协议的上一层。UDP有不提供数据报分组、组装和不能对数据包的排序的缺点&#xff0c;也就是说&#xff0c;当报文发…