pygame学习点滴
pygame分为四块
引用/ 初始化/ 事件处理/ 窗口刷新
普通版壁球游戏
"""
引用部分
"""
import pygame, sys """
初始化部分
"""
pygame.init() # 初始化
size = width, height = 600, 400 # 设置窗体大小
screen = pygame.display.set_mode(size) # 调用窗体
pygame.display.set_caption("撞球") # 设置窗体名称
speed = [1, 1] # 设置移动速度
BGCOLOR = 23, 45, 23 # 利用RGB形式设置背景颜色
ball = pygame.image.load('2.png') # 增加一个图片对象
ballrect = ball.get_rect() # 为图像加一个外切矩形
fps = 60 # 设置刷新帧率
fclock = pygame.time.Clock() # 设置clock对象 while True: """
事件处理部分
"""
for event in pygame.event.get(): # 所有外部输入设备的操作都在这里
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
speed[0] = speed[0] if speed[0] == 0 else (abs(speed[0]) - 1) * int(speed[0] / abs(speed[0]))
elif event.key == pygame.K_RIGHT:
speed[0] = speed[0] + 1 if speed[0] >= 0 else speed[0] - 1
if event.key == pygame.K_DOWN:
speed[1] = speed[1] if speed[1] == 0 else (abs(speed[1]) - 1) * int(speed[1] / abs(speed[1]))
elif event.key == pygame.K_UP:
speed[1] = speed[1] + 1 if speed[1] >= 0 else speed[1] - 1 ballrect = ballrect.move(speed[0], speed[1]) # 设置外切矩形的运动速度
if ballrect.left < 0 or ballrect.right > width: # 左右到边界
speed[0] = -speed[0]
if ballrect.top < 0 or ballrect.bottom > height: # 上下到边界
speed[1] = -speed[1] """
窗口刷新部分
"""
screen.fill(BGCOLOR) # 为窗口填充背景色
screen.blit(ball, ballrect) # 让球和外切矩形动起来
pygame.display.update() # 刷新窗口
fclock.tick(fps) # 设置刷行频率
发现问题:
如果把
32 ballrect = ballrect.move(speed[0], speed[1]) # 设置外切矩形的运动速度
33 if ballrect.left < 0 or ballrect.right > width: # 左右到边界
34 speed[0] = -speed[0]
35 if ballrect.top < 0 or ballrect.bottom > height: # 上下到边界
36 speed[1] = -speed[1]
这几行代码写到上面的for循环里面,整个游戏运行就会特别卡
屏幕需求设置
屏幕大小可改变pygame.RESIZABLE
游戏全屏pygame.FULLSCREEN
游戏无边框pygame.NOFRAME
pygame.display.set_mode((1440, 900), pygame.FULLSCREEN)
pygame.display.Info()
current_w
current_h
当前窗口的宽度,高度
更改标题栏内容和图标
pygame.display.set_caption("撞球") # 设置标题信息
pygame.display.get_caption() # 获得图标和标题信息
pygame.display.set_icon() # 设置图标信息
窗口感知和刷新
pygame.display.get_active() #判断窗口是否被最小化
pygame.display.flip() # 重新绘制所有窗口
pygame.display.update() # 重新绘制变化的元素
窗口颜色:
Color类
rgba a表示透明度
.normalize 归一到0-1之间
图形绘制:
draw类
pygame.draw.rect(screen, color, rect, width=0)
pygame学习点滴的更多相关文章
- iPhone应用开发 UITableView学习点滴详解
iPhone应用开发 UITableView学习点滴详解是本文要介绍的内容,内容不多,主要是以代码实现UITableView的学习点滴,我们来看内容. -.建立 UITableView DataTab ...
- Phonegap学习点滴(2) -- 网络状态检测
Phonegap学习点滴(2) -- 网络状态检测 http://blog.csdn.net/x251808026/article/details/16992943 方法一:在MainActivit ...
- pygame学习笔记(3)——时间、事件、文字
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 1.运动速率 上节中,实现了一辆汽车在马路上由下到上行驶,并使用了pygame.time.delay(200 ...
- android学习点滴一:android环境的搭建
东一点西一点,很多时间都浪费了.是该系统性的做好自己的东西了. <android学习点滴一:android环境的搭建> [环境变量]变量名:JAVA_HOME变量值:C:\Java\jdk ...
- MySQL学习点滴
MySQL学习点滴 --分区表 概述: 分区功能并不是在存储引擎层完成的,因此很多存储引擎包括InnoDB, MyISAM, NDB等都支持分区功能.但也并不是所有的存储引擎都支持分区.在使用分区前, ...
- PyGame学习笔记之壹
新建窗口 代码 '''PyGame学习笔记之壹''' import pygame # 引入 PyGame 库 pygame.init() # PyGame 库初始化 screen = pygame.d ...
- 用pygame学习初级python(一) 15.4.19
最近有计划要学一下python,主要是要用flask.django一些框架进行后端的学习工作,但是在web应用之前希望进行一些基础的项目进行一些语法的练习,熟悉一下写法, 这个时候我就想先做几个小游戏 ...
- pygame学习笔记(4)——声音
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi pygame.mixer是一个用来处理声音的模块,其含义为“混音器”.游戏中对声音的处理一般包括制造声音和播放声音 ...
- pygame学习笔记(5)——精灵
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 据说在任天堂FC时代,精灵的作用相当巨大,可是那时候只知道怎么玩超级玛丽.魂斗罗,却对精灵一点也不知.pygame ...
随机推荐
- OpenCV 与 OpenGL 的关系是什么?
OpenCV是 Open Source Computer Vision LibraryOpenGL是 Open Graphics LibraryOpenCV主要是提供图像处理和视频处理的基础算法库,还 ...
- mmap:速度快+整块操作
mmap使得可以将设备内存映射到用户空间,从而使得用户程序获得访问硬件的能力,mmap的动作需要由内核中的驱动来实现.在使用mmap映射后,用户程序对给定范围的内存的读写就变成了对设备内存的读写,也就 ...
- (二)Basic Concepts 基本概念
Basic Concepts There are a few concepts that are core to Elasticsearch. Understanding these concepts ...
- js获取浏览器窗体最大化事件
<mce:script language="javascript"><!--function ReSet() {document.getElementById(& ...
- UML 教程
UML 教程 关键词:部署图, 组件图, 包图, 类图, 复合结构图, 对象图, 活动图, 状态机图, 用例图, 通信图, 交互概述图, 时序图, 时间图 简介 部署图 组件图 包图 类图 复合结构图 ...
- [Oracle维护工程师手记]Data Guard Broker中改属性是否需要两侧分别执行?
Data Guard Broker中改属性是否需要两侧分别执行? Data Guard Broker有一些属性,可以通过 show configuration 看到.我有时会想,这些个属性,是否是分别 ...
- Leetcode 226. Invert Binary Tree(easy)
Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 Trivia:This problem was ...
- Neutron:ML2 Core Plugin
两个 Core Plugin:linux bridge plugin 和 open vswitch plugin. Moduler Layer 2(ML2)是 Neutron 在 Havana 版 ...
- Centos7 利用crontab定时执行任务及配置方法
crond是什么? crond 和crontab是不可分割的.crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于 ...
- JVM调优:HotSpot JVM垃圾收集器
HotSpot JVM垃圾收集器 - Snooper - 博客园https://www.cnblogs.com/snooper/p/8718478.html