期望:

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 弹力球及其变速的实现的更多相关文章

  1. pygame写的弹力球

    这是pygame写的弹力球 运行效果: ======================================================== 代码部分: ================= ...

  2. pygame系列_弹力球

    这是pygame写的弹力球 运行效果: ======================================================== 代码部分: ================= ...

  3. js版弹力球实例

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>弹 ...

  4. 简单的运动学,用canvas写弹力球

    声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 跟之前的随笔一样,因为本人仍是菜鸟一只,所以用到的技术比较简单,不适合大神观看...... 学canvas学了有一个多礼拜了,觉得canv ...

  5. js课程 6-15 js简单弹力球如何实现

    js课程 6-15 js简单弹力球如何实现 一.总结 一句话总结:a.通过document的documentElement属性获取可是区域的高: b.通过增值变为负的实现到底部后反弹 1.docume ...

  6. JS实现弹性势能效果(弹力球效果[实现插件封装])

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  7. 跟我一起学编程—《Scratch编程》第22课:颠弹力球

    1. 能够熟练绘制角色和背景造型 2. 能够熟练控制角色角度.速度等 3. 能够熟练使用变量 4. 能够熟练使用循环.选择等指令控制程序 任务描述: 1. 绘制弹力小球.托板角色,背景造型. 2. 游 ...

  8. 原生js弹力球

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. CSS3弹力球

    如下代码实现方块在限定区域内不停弹跳. <!DOCTYPE html> <html> <head> <style> div { width:100px; ...

随机推荐

  1. get,post,jsonp数据交互—百度下拉列表

    三种数据交互形式:get  post jsonp 一.get请求 1.引入 vue.js 和 vue-resource.js , 准备一个按钮 <input type="button& ...

  2. luogu3384 【模板】树链剖分

    P3384 [模板]树链剖分 题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节 ...

  3. 第8天:CSS制作导航栏

    今天主要学习了网页导航栏的制作.注意:引入外部CSS样式时,如果使用background:url(../images/1.png),一定记得用..跳出当前文件夹,回到上级目录. 一.导航栏实现步骤: ...

  4. 理解angularJs中的$on,$broadcast,$emit

    $emit作用是将一个事件从子作用域广播至父作用域,直至根作用域.(包括自己) $emit有两个参数name和args,name就是需要广播的名字,args是一个或者多个参数. $broadcast的 ...

  5. spring boot 登录注册 demo (四) -- 体验小结

    之前没有折腾过Spring,直接上来怼Spring Boot异常痛苦,参考着官网的guide(https://spring.io/guides)写了几个demo: spring boot 跑起来确是方 ...

  6. Struts2学习笔记(八)——国际化

    1.Struts2国际化介绍 国际化即internationalization简称i18n. 为了实现程序的国际化,必须先提供程序所需要的资源文件.资源文件的内容是key-value键值对. 资源文件 ...

  7. 虚拟机下安装VMware Tools

    使用虚拟机安装第二操作系统,是我们经常使用到的一种方法,但是为了能够在虚拟机与本地操作系统间进行文件共享,我们可以借助一款非常实用的工具VMware Tools.下面我们就来说一下怎样安装VMware ...

  8. Openfire分析之三:ConnectionManager 连接管理(1)

    Openfire是怎么实现连接请求的? XMPPServer.start()方法,完成Openfire的启动.但是,XMPPServer.start()方法中,并没有提及如何监听端口,那么Openfi ...

  9. [2014-12-29]使用Enum位模式进行多重状态(或权限)管理

    前言 对于Enum在AspNet Mvc中的应用,我之前提到一种扩展,如何在 Asp.net Mvc 开发过程中更好的使用Enum.这里将介绍另一种更好的使用Enum的方法. Enum定义 以一个代表 ...

  10. MongoDB基本shell操作

    ---------------------MongoDB基本操作--------------------- 1.MongoDB创建数据库     use 数据库名:切换到指定的数据库中,在插入第一个条 ...