pygame库实现移动底座弹球小游戏


Posted in Python onApril 14, 2020

本文实例为大家分享了pygame实现移动底座弹球的具体代码,供大家参考,具体内容如下

输出结果:

pygame库实现移动底座弹球小游戏

实现代码:

# -*- 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+vx
 y=y+vy
 if x>550 or x<40:
  vx=-vx
 if y<40:
  vy=-vy
 if y>510 and abs(a-x+50)<50:
  if vy>0:
   vy=-vy
  else:pass
  c=c+1  #每接到3次后乒乓球加速
  fs=fs+k #加分
  if c>=3:
   c=0
   k=k+k #乒乓球加速后记分量双倍
   if vx>0: #加速
    vx=vx+1
   else:
    vx=vx-1
  else:pass
 elif 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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
新手该如何学python怎么学好python?
Oct 07 Python
用Python计算三角函数之atan()方法的使用
May 15 Python
Django Admin实现上传图片校验功能
Mar 06 Python
Python:Scrapy框架中Item Pipeline组件使用详解
Dec 27 Python
Python实现自动上京东抢手机
Feb 06 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
Jun 28 Python
python图形绘制奥运五环实例讲解
Sep 14 Python
python将字符串转变成dict格式的实现
Nov 18 Python
对python中 math模块下 atan 和 atan2的区别详解
Jan 17 Python
OpenCV图片漫画效果的实现示例
Aug 18 Python
python使用matplotlib:subplot绘制多个子图的示例
Sep 24 Python
python turtle绘制多边形和跳跃和改变速度特效
Mar 16 Python
python科学计算之numpy——ufunc函数用法
Nov 25 #Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
Nov 25 #Python
Python解析json代码实例解析
Nov 25 #Python
python实现差分隐私Laplace机制详解
Nov 25 #Python
python3实现弹弹球小游戏
Nov 25 #Python
python数据化运营的重要意义
Nov 25 #Python
python实现拉普拉斯特征图降维示例
Nov 25 #Python
You might like
图形数字验证代码
2006/10/09 PHP
php mail to 配置详解
2014/01/16 PHP
PHP Streams(流)详细介绍及使用
2015/05/12 PHP
PHP获取Exif缩略图的方法
2015/07/13 PHP
php上传图片生成缩略图(GD库)
2016/01/06 PHP
PHP格式化MYSQL返回float类型的方法
2016/03/30 PHP
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
jQuery阻止同类型事件小结
2013/04/19 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
2015/03/04 Javascript
原生js与jQuery实现简单的tab切换特效对比
2015/07/30 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
2016/04/17 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
vue2.x+webpack快速搭建前端项目框架详解
2017/11/30 Javascript
使用vue-cli创建项目的图文教程(新手入门篇)
2018/05/02 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
2019/05/22 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
Python程序退出方式小结
2017/12/09 Python
pip install urllib2不能安装的解决方法
2018/06/12 Python
解决Python plt.savefig 保存图片时一片空白的问题
2019/01/10 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
2019/04/17 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
Python 分发包中添加额外文件的方法
2019/08/16 Python
python中的subprocess.Popen()使用详解
2019/12/25 Python
Python 日期与时间转换的方法
2020/08/01 Python
蔻驰法国官网:COACH法国
2018/11/14 全球购物
探索欧洲最好的品牌:Bombinate
2019/06/14 全球购物
西雅图的买手店:Totokaelo
2019/10/19 全球购物
挂职思想汇报
2013/12/31 职场文书
会走路的树教学反思
2014/02/20 职场文书
2014婚礼司仪主持词
2014/03/14 职场文书
纪律教育学习心得体会
2014/09/02 职场文书
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
环境卫生标语
2015/08/03 职场文书