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 sqlite3事务处理方法实例分析
Jun 19 Python
socket + select 完成伪并发操作的实例
Aug 15 Python
Python3 循环语句(for、while、break、range等)
Nov 20 Python
django限制匿名用户访问及重定向的方法实例
Feb 07 Python
python numpy和list查询其中某个数的个数及定位方法
Jun 27 Python
python2.7和NLTK安装详细教程
Sep 19 Python
python根据list重命名文件夹里的所有文件实例
Oct 25 Python
Pycharm无法显示动态图片的解决方法
Oct 28 Python
python爬虫获取新浪新闻教学
Dec 23 Python
使用python获取(宜宾市地震信息)地震信息
Jun 20 Python
Python实现socket非阻塞通讯功能示例
Nov 06 Python
python numpy实现rolling滚动案例
Jun 08 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
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
2011/06/30 PHP
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
php smarty模板引擎的6个小技巧
2014/04/24 PHP
php图片处理函数获取类型及扩展名实例
2014/11/19 PHP
PHP排序二叉树基本功能实现方法示例
2018/05/26 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
javascript中对Attr(dom中属性)的操作示例讲解
2013/12/02 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
Javascript定义类(class)的三种方法详解
2015/03/13 Javascript
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
docker中编译nodejs并使用nginx启动
2017/06/23 NodeJs
Vuex 使用及简单实例(计数器)
2018/08/29 Javascript
详解如何用typescript开发koa2的二三事
2018/11/13 Javascript
解决vue-cli 打包后自定义动画未执行的问题
2019/11/12 Javascript
vue添加自定义右键菜单的完整实例
2020/12/08 Vue.js
JavaScript中展开运算符及应用的实例代码
2021/01/14 Javascript
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
Python读取csv文件分隔符设置方法
2019/01/14 Python
python实现控制COM口的示例
2019/07/03 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
2020/12/11 Python
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
美国折扣网站:jClub
2017/08/07 全球购物
在Java开发中如何选择使用哪种集合类
2016/08/09 面试题
广州喜创信息技术有限公司JAVA软件工程师笔试题
2012/10/17 面试题
机电一体化专业应届生求职信
2013/11/27 职场文书
出纳员岗位责任制
2014/02/11 职场文书
婚前协议书怎么写
2014/04/15 职场文书
一分钟演讲稿
2014/04/30 职场文书
国际贸易本科毕业生求职信
2014/09/26 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
2021/06/29 Python
Apache Hudi的多版本清理服务彻底讲解
2022/03/31 Servers
vue @click.native 绑定原生点击事件
2022/04/22 Vue.js