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如何快速实现分布式任务
Jul 06 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
Nov 17 Python
python实现点对点聊天程序
Jul 28 Python
详解Python下Flask-ApScheduler快速指南
Nov 04 Python
pycharm打开命令行或Terminal的方法
Jan 16 Python
Django框架视图函数设计示例
Jul 29 Python
Python调用scp向服务器上传文件示例
Dec 22 Python
Python HTMLTestRunner可视化报告实现过程解析
Apr 10 Python
哪些是python中web开发框架
Jun 17 Python
keras:model.compile损失函数的用法
Jul 01 Python
如何表示python中的相对路径
Jul 08 Python
pandas针对excel处理的实现
Jan 15 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的cms
2010/12/19 PHP
php使用Jpgraph绘制柱形图的方法
2015/06/10 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
javascript获取ckeditor编辑器的值(实现代码)
2013/11/18 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
js取float型小数点后两位数的方法
2014/01/18 Javascript
JavaScript中string转换成number介绍
2014/12/31 Javascript
js代码实现下拉菜单【推荐】
2016/12/15 Javascript
Bootstrap3 图片(响应式图片&amp;图片形状)
2017/01/04 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
jQuery实现的淡入淡出图片轮播效果示例
2018/08/29 jQuery
如何制作一个Node命令行图像识别工具
2018/12/12 Javascript
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
2020/02/01 Javascript
vue2.0实现列表数据增加和删除
2020/06/17 Javascript
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
Django框架模板介绍
2019/01/15 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
python有几个版本
2020/06/17 Python
flask开启多线程的具体方法
2020/08/02 Python
python利用platform模块获取系统信息
2020/10/09 Python
使用CSS3创建动态菜单效果
2015/07/10 HTML / CSS
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
Html5实现文件异步上传功能
2017/05/19 HTML / CSS
Internal修饰符有什么含义
2013/07/10 面试题
学期自我鉴定范文
2013/10/01 职场文书
区域销售经理职责
2013/12/22 职场文书
技校个人求职信范文
2014/01/25 职场文书
《生命 生命》教学反思
2014/04/19 职场文书
小学生安全演讲稿
2014/04/25 职场文书
法学专业毕业生自荐信
2014/06/11 职场文书
大学生自荐信怎么写
2015/03/26 职场文书
暂住证证明
2015/06/19 职场文书
《七月的天山》教学反思
2016/02/19 职场文书