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中字典dict常用操作方法实例总结
Apr 04 Python
Python多线程实现同步的四种方式
May 02 Python
python 实现在Excel末尾增加新行
May 02 Python
python中验证码连通域分割的方法详解
Jun 04 Python
python 快速把超大txt文件转存为csv的实例
Oct 26 Python
Python 函数绘图及函数图像微分与积分
Nov 20 Python
Django对接支付宝实现支付宝充值金币功能示例
Dec 17 Python
pytorch::Dataloader中的迭代器和生成器应用详解
Jan 03 Python
PyCharm GUI界面开发和exe文件生成的实现
Mar 04 Python
Django限制API访问频率常用方法解析
Oct 12 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
Feb 01 Python
python如何利用cv2.rectangle()绘制矩形框
Dec 24 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
Discuz! Passport 通行证整合
2008/03/27 PHP
Uchome1.2 1.5 代码学习 common.php
2009/04/24 PHP
php 模拟POST|GET操作实现代码
2010/07/20 PHP
PHP输入输出流学习笔记
2015/05/12 PHP
PHP实现生成唯一会员卡号
2015/08/24 PHP
Laravel如何友好的修改.env配置文件详解
2017/06/07 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
2018/05/12 PHP
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
jquery中toggle函数交替使用问题
2015/06/22 Javascript
CSS或者JS实现鼠标悬停显示另一元素
2016/01/22 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
Bootstrap 表单验证formValidation 实现表单动态验证功能
2017/05/17 Javascript
利用 spin.js 生成等待效果(js 等待效果)
2017/06/25 Javascript
JavaScript实现精美个性导航栏筋斗云效果
2017/10/29 Javascript
使用node打造自己的命令行工具方法教程
2018/03/26 Javascript
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
[00:57]辉夜杯战队访谈宣传片—VG
2015/12/25 DOTA
Python基础知识_浅谈用户交互
2017/05/31 Python
Python打印输出数组中全部元素
2018/03/13 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
Python 实现数据结构-堆栈和队列的操作方法
2019/07/17 Python
Python正则表达式如何匹配中文
2020/05/27 Python
解决H5的a标签的download属性下载service上的文件出现跨域问题
2019/07/16 HTML / CSS
美国在线和移动免费会员制批发零售商:Boxed(移动端的Costco)
2020/01/02 全球购物
教师岗位职责
2013/11/17 职场文书
会计电算化专业个人的自我评价
2013/11/24 职场文书
联欢晚会主持词
2014/03/25 职场文书
社会调查研究计划书
2014/05/01 职场文书
竞选班长演讲稿500字
2014/08/22 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
居委会工作总结2015
2015/05/18 职场文书
go xorm框架的使用
2021/05/22 Golang
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL