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 ...
随机推荐
- log4cplus 简单记录
请注意区别对待: 1.2.1 : 不支持 C++11,比如 std::move 就会 fail. 2.0.1 : 支持 C++11,比如 std::move 就 ok. 完.
- c++ cout、cin、endl
cout是标准输出流对象,<<是输出操作符:cin是标准输入流对象,>>是输入操作符:endl是换行符操作符.他们都属于C++标准库,所以都在std的名字空间里.所以要在开头写 ...
- 使用html2canvas.js实现页面截图并显示或上传
最近写项目有用到html2canvas.js,可以实现页面的截图功能,但遭遇了许多的坑,特此写一篇随笔记录一下. 在使用html2canvas时可能会遇到诸如只能截取可视化界面.截图没有背景色.svg ...
- 容器中的JVM资源该如何被安全的限制?
前言 Java与Docker的结合,虽然更好的解决了application的封装问题.但也存在着不兼容,比如Java并不能自动的发现Docker设置的内存限制,CPU限制. 这将导致JVM不能稳定服务 ...
- 《React Native 精解与实战》书籍连载「React Native 源码学习方法及其他资源」
此系列文章将整合我的 React 视频教程与 React Native 书籍中的精华部分,给大家介绍 React Native 源码学习方法及其他资源. 最后的章节给大家介绍 React Native ...
- 292. Nim Game(easy)
You are playing the following Nim Game with your friend: There is a heap of stones on the table, eac ...
- 跳出语句break 和continue
关键字break 常见的两种用法 在switch语句当中,一旦执行,整个switch语句立刻结束 在循环语句当中,一旦执行,整个循环语句立刻结束.跳出循环 代码举例: public class Dem ...
- Messenger更改系统语言以后无法登陆,提示“初始设置被修改”
在安装messenger机器上使用SQL management studio打开数据库,链接YCD的数据库,找到dbo.Dic_Defaults的表,编辑打开以后找到“CultureInfo”两项,删 ...
- js中“==”与“===”区别
直接上代码 if(2==='2'){ console.log(true) }else{ console.log(false) } //打印结果 false if(2=='2'){ console.lo ...
- Sumdiv POJ 1845
http://poj.org/problem?id=1845 题目 Time Limit: 1000MS Memory Limit: 30000K Description Consider two ...