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绘图库Matplotlib的安装
Jul 03 Python
Python中使用urllib2防止302跳转的代码例子
Jul 07 Python
Python利用operator模块实现对象的多级排序详解
May 09 Python
python实现图片彩色转化为素描
Jan 15 Python
将python运行结果保存至本地文件中的示例讲解
Jul 11 Python
Python 控制终端输出文字的实例
Jul 12 Python
python实现大文件分割与合并
Jul 22 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
Dec 04 Python
pytorch之inception_v3的实现案例
Jan 06 Python
Python中求对数方法总结
Mar 10 Python
浅谈Python中的继承
Jun 19 Python
用 Django 开发一个 Python Web API的方法步骤
Dec 03 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
非常好的php目录导航文件代码
2006/10/09 PHP
phpphp图片采集后按原路径保存图片示例
2014/02/18 PHP
PHP 快速排序算法详解
2014/11/10 PHP
ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
2015/03/25 PHP
PHP自毁程序(慎用)
2015/07/09 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
让innerText在firefox火狐和IE浏览器都能用的写法
2011/05/14 Javascript
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
js实现按钮控制图片360度翻转特效的方法
2015/02/17 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
JS实现左右无缝轮播图代码
2016/05/01 Javascript
JavaScript中闭包之浅析解读(必看篇)
2016/08/25 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
2018/02/22 Javascript
layer.open关闭父窗口 以及调用父页面的方法
2018/08/17 Javascript
Vue组件之单向数据流的解决方法
2018/11/10 Javascript
layui动态绑定事件的方法
2019/09/20 Javascript
基于javascript原生判断DOM是否加载完毕
2020/10/14 Javascript
解读Python编程中的命名空间与作用域
2015/10/16 Python
机器学习python实战之手写数字识别
2017/11/01 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
2019/08/05 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
python编写俄罗斯方块
2020/03/13 Python
浅谈python出错时traceback的解读
2020/07/15 Python
HTML5调用手机发短信和打电话功能
2020/04/29 HTML / CSS
环境工程求职简历的自我评价范文
2013/10/24 职场文书
公开承诺书格式
2014/05/21 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
税务干部群众路线教育实践活动对照检查材料
2014/09/20 职场文书
海底两万里读书笔记
2015/06/26 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书
MySQL中varchar和char类型的区别
2021/11/17 MySQL
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers