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()
pygame 弹力球及其变速的实现的更多相关文章
- pygame写的弹力球
这是pygame写的弹力球 运行效果: ======================================================== 代码部分: ================= ...
- pygame系列_弹力球
这是pygame写的弹力球 运行效果: ======================================================== 代码部分: ================= ...
- js版弹力球实例
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>弹 ...
- 简单的运动学,用canvas写弹力球
声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 跟之前的随笔一样,因为本人仍是菜鸟一只,所以用到的技术比较简单,不适合大神观看...... 学canvas学了有一个多礼拜了,觉得canv ...
- js课程 6-15 js简单弹力球如何实现
js课程 6-15 js简单弹力球如何实现 一.总结 一句话总结:a.通过document的documentElement属性获取可是区域的高: b.通过增值变为负的实现到底部后反弹 1.docume ...
- JS实现弹性势能效果(弹力球效果[实现插件封装])
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 跟我一起学编程—《Scratch编程》第22课:颠弹力球
1. 能够熟练绘制角色和背景造型 2. 能够熟练控制角色角度.速度等 3. 能够熟练使用变量 4. 能够熟练使用循环.选择等指令控制程序 任务描述: 1. 绘制弹力小球.托板角色,背景造型. 2. 游 ...
- 原生js弹力球
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- CSS3弹力球
如下代码实现方块在限定区域内不停弹跳. <!DOCTYPE html> <html> <head> <style> div { width:100px; ...
随机推荐
- get,post,jsonp数据交互—百度下拉列表
三种数据交互形式:get post jsonp 一.get请求 1.引入 vue.js 和 vue-resource.js , 准备一个按钮 <input type="button& ...
- luogu3384 【模板】树链剖分
P3384 [模板]树链剖分 题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节 ...
- 第8天:CSS制作导航栏
今天主要学习了网页导航栏的制作.注意:引入外部CSS样式时,如果使用background:url(../images/1.png),一定记得用..跳出当前文件夹,回到上级目录. 一.导航栏实现步骤: ...
- 理解angularJs中的$on,$broadcast,$emit
$emit作用是将一个事件从子作用域广播至父作用域,直至根作用域.(包括自己) $emit有两个参数name和args,name就是需要广播的名字,args是一个或者多个参数. $broadcast的 ...
- spring boot 登录注册 demo (四) -- 体验小结
之前没有折腾过Spring,直接上来怼Spring Boot异常痛苦,参考着官网的guide(https://spring.io/guides)写了几个demo: spring boot 跑起来确是方 ...
- Struts2学习笔记(八)——国际化
1.Struts2国际化介绍 国际化即internationalization简称i18n. 为了实现程序的国际化,必须先提供程序所需要的资源文件.资源文件的内容是key-value键值对. 资源文件 ...
- 虚拟机下安装VMware Tools
使用虚拟机安装第二操作系统,是我们经常使用到的一种方法,但是为了能够在虚拟机与本地操作系统间进行文件共享,我们可以借助一款非常实用的工具VMware Tools.下面我们就来说一下怎样安装VMware ...
- Openfire分析之三:ConnectionManager 连接管理(1)
Openfire是怎么实现连接请求的? XMPPServer.start()方法,完成Openfire的启动.但是,XMPPServer.start()方法中,并没有提及如何监听端口,那么Openfi ...
- [2014-12-29]使用Enum位模式进行多重状态(或权限)管理
前言 对于Enum在AspNet Mvc中的应用,我之前提到一种扩展,如何在 Asp.net Mvc 开发过程中更好的使用Enum.这里将介绍另一种更好的使用Enum的方法. Enum定义 以一个代表 ...
- MongoDB基本shell操作
---------------------MongoDB基本操作--------------------- 1.MongoDB创建数据库 use 数据库名:切换到指定的数据库中,在插入第一个条 ...