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的Django框架中的QuerySets
Apr 20 Python
初步解析Python下的多进程编程
Apr 28 Python
numpy找出array中的最大值,最小值实例
Apr 03 Python
基于python 处理中文路径的终极解决方法
Apr 12 Python
python 按照固定长度分割字符串的方法小结
Apr 30 Python
python采集百度搜索结果带有特定URL的链接代码实例
Aug 30 Python
Python新手如何进行闭包时绑定变量操作
May 29 Python
python中对二维列表中一维列表的调用方法
Jun 07 Python
Python 实现微信自动回复的方法
Sep 11 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
Oct 15 Python
最新pycharm安装教程
Nov 18 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
Feb 18 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
hadoop中一些常用的命令介绍
2013/06/19 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
php抽象类使用要点与注意事项分析
2015/02/09 PHP
PHP 中提示undefined index如何解决(多种方法)
2016/03/16 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
2016/04/26 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
2016/09/01 PHP
“不能执行已释放的Script代码”错误的原因及解决办法
2007/09/09 Javascript
js DOM 元素ID就是全局变量
2012/09/20 Javascript
用js判断页面是否加载完成实现代码
2012/12/11 Javascript
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
jquery如何判断表格同一列不同行input数据是否重复
2014/05/14 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
JavaScript判断数组是否包含指定元素的方法
2015/07/01 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
2015/08/21 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
详解Vue-cli 创建的项目如何跨域请求
2017/05/18 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
2017/06/29 Javascript
详解mpvue开发小程序小总结
2018/07/25 Javascript
详解swiper在vue中的应用(以3.0为例)
2018/09/20 Javascript
python提取页面内url列表的方法
2015/05/25 Python
python 性能优化方法小结
2017/03/31 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
2017/05/03 Python
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
2018/03/19 Python
TensorFlow实现Logistic回归
2018/09/07 Python
在Pycharm terminal中字体大小设置的方法
2019/01/16 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
python2使用bs4爬取腾讯社招过程解析
2019/08/14 Python
详解python 中in 的 用法
2019/12/12 Python
自荐信范文
2013/12/10 职场文书
经典的毕业生自荐信范文
2014/04/14 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
旅行社优秀创业计划书
2014/08/16 职场文书
七一建党节演讲稿
2014/09/11 职场文书
HR在给员工开具离职证明时,需要注意哪些问题?
2019/07/03 职场文书
使用Redis做预定库存缓存功能
2022/04/02 Redis