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解析中国天气网的天气数据
Mar 21 Python
Python实现的使用telnet登陆聊天室实例
Jun 17 Python
Python基于递归算法实现的走迷宫问题
Aug 04 Python
详解python中executemany和序列的使用方法
Aug 12 Python
python并发编程之线程实例解析
Dec 27 Python
Python3.5 创建文件的简单实例
Apr 26 Python
python3.6使用pickle序列化class的方法
Oct 22 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
Jun 14 Python
python 整数越界问题详解
Jun 27 Python
Python代理IP爬虫的新手使用教程
Sep 05 Python
Python之关于类变量的两种赋值区别详解
Mar 12 Python
Python 利用argparse模块实现脚本命令行参数解析
Dec 28 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边学边教》(01.开篇――准备工作)
2006/12/13 PHP
谈谈新手如何学习PHP
2006/12/14 PHP
MYSQL环境变量设置方法
2007/01/15 PHP
PHP下对字符串的递增运算代码
2010/08/21 PHP
php在window iis的莫名问题的测试方法
2013/05/14 PHP
深入解析PHP中foreach语句控制数组循环的用法
2015/11/30 PHP
Fleaphp常见函数功能与用法示例
2016/11/15 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
2017/07/27 PHP
PHP递归算法的简单实例
2019/02/28 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
javascript Zifa FormValid 0.1表单验证 代码打包下载
2007/06/08 Javascript
jquery tools之tabs 选项卡/页签
2009/07/25 Javascript
人人网javascript面试题 可以提前实现下
2012/01/05 Javascript
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
JSONP 跨域共享信息
2012/08/16 Javascript
node.js中的emitter.on方法使用说明
2014/12/10 Javascript
JS实现的生成随机数的4个函数分享
2015/02/11 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
2017/01/21 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
2017/05/19 Javascript
详解如何使用babel进行es6文件的编译
2018/05/29 Javascript
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
2018/09/14 Javascript
百度小程序之间的页面通信过程详解
2019/07/18 Javascript
详解Vue template 如何支持多个根结点
2020/02/10 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
2020/08/03 Javascript
Python列表计数及插入实例
2014/12/17 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
Python Django 实现简单注册功能过程详解
2019/07/29 Python
python3 selenium自动化测试 强大的CSS定位方法
2019/08/23 Python
Python Subprocess模块原理及实例
2019/08/26 Python
澳大利亚领先的在线美容商城:Adore Beauty
2017/04/14 全球购物
公司门卫的岗位职责
2014/02/19 职场文书
学校党委副书记个人对照检查材料思想汇报
2014/09/28 职场文书
民间借贷借条范本
2015/05/25 职场文书
毕业酒会致辞
2015/07/29 职场文书