动画效果
-- coding: utf-8 --
@Time : 2018/7/30 14:44
@Author : G.Hope
@Email : [email protected]
@File : 动画效果.py
动画原理:不断的刷新界面上的内容(一帧一帧的画)
import pygame
from 鼠标事件的应用 import rand_color
def static_page(screen):
"""
页面上的静态内容
:param screen:
:return:
"""
# 静态文字
font = pygame.font.SysFont("Times", 40)
title = font.render('Whlcome', True, (0, 0, 0))
screen.blit(title, (200, 200))
def animation_title(screen):
font = pygame.font.SysFont("Times", 40)
title = font.render('My world', True, rand_color())
screen.blit(title, (100, 100))
if __name__ == '__main__':
pygame.init()
screen = pygame.display.set_mode((600, 400))
screen.fill((255, 255, 255))
pygame.display.flip()
while True:
# for循环里面的代码只有事件发生之后才执行
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
# 在下面去写每一帧要显示的内容
"""程序执行到此,线程阻塞指定的事件(单位:毫秒)"""
pygame.time.delay(666)
# 清空
screen.fill((255, 255, 255))
static_page(screen)
animation_title(screen)
# 更新
pygame.display.update()
pygame事件
-- coding: utf-8 --
@Time : 2018/7/30 9:52
@Author : G.Hope
@Email : [email protected]
@File : pygame事件.py
@Software: PyCharm
QUIT:关闭按钮点击事件
MOUSEBUTTONDOWN:鼠标按下
MOUSEBUTTONUP:鼠标弹起
MOUSEMOTION:鼠标移动
鼠标相关事件:关心事件鼠标位置
KEYDOWN:键盘按键按下
KEYUP:键盘按键弹起
键盘关心事件:关心事件键盘按键
import pygame
if __name__ == '__main__':
pygame.init()
screen = pygame.display.set_mode((600, 400))
screen.fill((255, 255, 255))
# 设置窗口标题
pygame.display.set_caption('游戏事件')
pygame.display.flip()
while True:
# 每次循环检测有没有事件发生
for event in pygame.event.get():
# 不同类型的事件对应的type值不一样
if event.type == pygame.QUIT:
exit()
# 鼠标相关事件
# pos属性,获取鼠标事件产生的位置
if event.type == pygame.MOUSEBUTTONDOWN:
print('鼠标按下', event.pos)
# 鼠标弹起
if event.type == pygame.MOUSEBUTTONUP:
print('鼠标弹起', event.pos)
# 鼠标移动
if event.type == pygame.MOUSEMOTION:
print('鼠标移动', event.pos)
# 键盘相关事件
# key属性,被按的按键对应的值的编码
if event.type == pygame.KEYDOWN:
print('键盘按键按下', chr(event.key))
if event.type == pygame.KEYUP:
print('键盘按键弹起', chr(event.key))
鼠标事件的应用
-- coding: utf-8 --
@Time : 2018/7/30 10:51
@Author : G.Hope
@Email : [email protected]
@File : 鼠标事件的应用.py
@Software: PyCharm
import pygame
from random import randint
def rand_color():
"""
产生随机颜色
:return:
"""
return randint(0, 255), randint(0, 255), randint(0, 255)
def draw_ball(screen, pos):
pygame.draw.circle(screen, rand_color(), pos, randint(10, 20))
# 只要屏幕上的内容有更新,都要调用下面这两个方法
# pygame.display.flip()
pygame.display.update()
# 写一个函数,判断一个指定的点是否在指定的矩形范围
def isInRect(point, rect):
x, y = point
rx, ry, rw, rh = rect
if rx <= x <= rx + rw and ry <= y <= ry + rh:
return True
return False
# 写一个函数,画一个按钮
def draw_button(screen, btn_color, title_color):
# 画个按钮
"""矩形框"""
pygame.draw.rect(screen, btn_color, (100, 100, 100, 60))
"""文字"""
font = pygame.font.SysFont('Times', 30)
title = font.render('cherk', True, title_color)
screen.blit(title, (120, 120))
if __name__ == '__main__':
pygame.init()
screen = pygame.display.set_mode((600, 400))
screen.fill((255, 255, 255))
pygame.display.set_caption('鼠标事件')
# 画个按钮
draw_button(screen, (0, 255, 0), (255, 0, 0))
# """矩形框"""
# pygame.draw.rect(screen, (0, 255, 0), (100, 100, 100, 60))
# """文字"""
# font = pygame.font.SysFont('Times', 30)
# title = font.render('cherk', True, (255, 0, 0))
# screen.blit(title, (120, 120))
pygame.display.flip()
while True:
for event in pygame.event.get():
# 退出
if event.type == pygame.QUIT:
exit()
if event.type == pygame.MOUSEBUTTONDOWN:
# 在点击按钮的位置画球
# draw_ball(screen, event.pos)
if isInRect(event.pos, (100, 100, 100, 60)):
draw_button(screen, (0, 100, 0), (100, 0, 0))
pygame.display.update()
if event.type == pygame.MOUSEBUTTONUP:
if isInRect(event.pos, (100, 100, 100, 60)):
draw_button(screen, (0, 255, 0), (255, 0, 0))
pygame.display.update()
if event.type == pygame.MOUSEMOTION:
screen.fill((255, 255, 255))
draw_button(screen, (0, 255, 0), (255, 0, 0))
draw_ball(screen, event.pos)
鼠标点击事件
-- coding: utf-8 --
@Time : 2018/7/30 13:49
@Author : G.Hope
@Email : [email protected]
@File : 鼠标点击事件.py
@Software: PyCharm
要求:先在屏幕上显示一张图片,鼠标按下移动的时候,拽着图片一起动。鼠标弹起就不动了。
import pygame
import 鼠标事件的应用
if __name__ == '__main__':
pygame.init()
screen = pygame.display.set_mode((800, 600))
screen.fill((255, 255, 255))
pygame.display.set_caption('图片拖拽')
image = pygame.image.load('./bb.ico')
image_x = 50
image_y = 50
screen.blit(image, (image_x, image_y))
pygame.display.flip()
# 用来存储图片是否可以移动
is_move = False
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
# 鼠标按下,让状态可以变成移动
if event.type == pygame.MOUSEBUTTONDOWN:
w, h = image.get_size()
if 鼠标事件的应用.isInRect(event.pos, (image_x, image_y, w, h)):
is_move = True
# 鼠标弹起,让状态可以变成不可以移动
if event.type == pygame.MOUSEBUTTONUP:
is_move = False
# 鼠标移动对应的事件
if event.type == pygame.MOUSEMOTION:
if is_move:
screen.fill((255, 255, 255))
x, y = event.pos
image_w, image_h = image.get_size()
image_x = x - image_w / 2
image_y = y - image_h / 2
screen.blit(image, (x - image_w / 2, y - image_h / 2))
pygame.display.update()
原图无法上传,通过截图方式分享几张自己喜欢的小图片: