pygame实现弹力球及其变速效果


Posted in Python onJuly 03, 2017

本文实例为大家分享了pygame实现弹力球及其变速效果的具体代码,供大家参考,具体内容如下

期望:

1.球体接触到框体后反弹

2.设置速度按键,按下后改变球体速度、颜色状态

具体实现:

import pygame
from pygame.locals import *
import sys, random


class Circle(object):
 # 设置Circle类属性
 def __init__(self):
  self.vel_x = 1
  self.vel_y = 1
  self.radius = 20
  self.pos_x, self.pos_y = random.randint(0, 255), random.randint(0, 255)
  self.width = 0
  self.color = 0, 0, 0

 # 球体颜色速度改变方法
 def change_circle(self, number):
  self.color = random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)
  # 防止球体速度方向发生改变
  if self.vel_x < 0:
   self.vel_x = -number
  else:
   self.vel_x = number
  if self.vel_y < 0:
   self.vel_y = -number
  else:
   self.vel_y = number
  # self.vel_x, self.vel_y = number, number 如果仅此句,速度方向会发生改变

 def circle_run(self):
  # 防止球体超出游戏界面框体
  if self.pos_x > 580 or self.pos_x < 20:
   self.vel_x = -self.vel_x

  if self.pos_y > 480 or self.pos_y < 20:
   self.vel_y = -self.vel_y
  self.pos_x += self.vel_x
  self.pos_y += self.vel_y
  pos = self.pos_x, self.pos_y
  pygame.draw.circle(screen, self.color, pos, self.radius, self.width)

pygame.init()
screen = pygame.display.set_mode((600, 500))
# Circle实例
circle1 = Circle()

while True:
 for event in pygame.event.get():
  if event.type == QUIT:
   sys.exit()
  elif event.type == KEYUP:
   if event.key == pygame.K_1:
    circle1.change_circle(1)
   elif event.key == pygame.K_2:
    circle1.change_circle(2)
   elif event.key == pygame.K_3:
    circle1.change_circle(3)
   elif event.key == pygame.K_4:
    circle1.change_circle(4)

 screen.fill((0, 0, 100))

 circle1.circle_run()

 pygame.display.update()

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

Python 相关文章推荐
python的常见命令注入威胁
Feb 18 Python
python实现的简单抽奖系统实例
May 22 Python
python实现支持目录FTP上传下载文件的方法
Jun 03 Python
Ruby使用eventmachine为HTTP服务器添加文件下载功能
Apr 20 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
Mar 02 Python
[原创]Python入门教程3. 列表基本操作【定义、运算、常用函数】
Oct 30 Python
Python自定义一个异常类的方法
Jun 27 Python
python opencv 图像拼接的实现方法
Jun 27 Python
python sklearn库实现简单逻辑回归的实例代码
Jul 01 Python
Python文件操作函数用法实例详解
Dec 24 Python
浅谈keras使用中val_acc和acc值不同步的思考
Jun 18 Python
Python+uiautomator2实现自动刷抖音视频功能
Apr 29 Python
[原创]使用豆瓣提供的国内pypi源
Jul 02 #Python
python中安装Scrapy模块依赖包汇总
Jul 02 #Python
Python使用filetype精确判断文件类型
Jul 02 #Python
使用python实现tcp自动重连
Jul 02 #Python
详解python3中socket套接字的编码问题解决
Jul 01 #Python
详解Python中for循环是如何工作的
Jun 30 #Python
python 连接sqlite及简单操作
Jun 30 #Python
You might like
DSP接收机前端设想
2021/03/02 无线电
PHP中使用sleep造成mysql读取失败的案例和解决方法
2014/08/21 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
UTF-8正则表达式如何匹配汉字
2015/08/03 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
2016/09/23 PHP
PHP编程实现csv文件导入mysql数据库的方法
2017/04/29 PHP
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
2010/04/25 Javascript
jQuery与ExtJS之选择实例分析
2010/08/19 Javascript
JavaScript代码复用模式实例分析
2012/12/02 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
js 赋值包含单引号双引号问题的解决方法
2014/02/26 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
jQuery判断是否存在滚动条的简单方法
2016/09/17 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
jQuery带控制按钮轮播图插件
2020/07/31 jQuery
在Django的上下文中设置变量的方法
2015/07/20 Python
Python时间戳使用和相互转换详解
2017/12/11 Python
Python中asyncio与aiohttp入门教程
2018/10/16 Python
python实现一个简单的udp通信的示例代码
2019/02/01 Python
Pandas中resample方法详解
2019/07/02 Python
Python3中urlencode和urldecode的用法详解
2019/07/23 Python
PyCharm导入python项目并配置虚拟环境的教程详解
2019/10/13 Python
pygame实现贪吃蛇游戏(下)
2019/10/29 Python
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
马来西亚和新加坡巴士票在线预订:CatchThatBus
2018/11/17 全球购物
世界上最受欢迎的钓鱼诱饵:Rapala
2019/05/02 全球购物
法学专业毕业生求职信
2014/06/12 职场文书
关键在于落实心得体会
2014/09/03 职场文书
交通事故一次性赔偿协议书范本
2014/11/02 职场文书
公司离职证明标准格式
2014/11/18 职场文书
离婚起诉书范文2015
2015/05/19 职场文书
终止合同协议书范本
2016/03/22 职场文书
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书
安装配置mysql及Navicat prenium的详细流程
2021/06/10 MySQL
JS class语法糖的深入剖析
2022/07/07 Javascript