源码与图片资源下载:
网盘:https://pan.baidu.com/s/12uwLrvweIVEr_Cvk4v1FQA
提取码:nh27
# -*- coding: utf-8 -*- # Time : 2020/8/26 17:59 # Author : www.ai8py.com import pygame from pygame.locals import * # 导入一些常用的函数和常量 from sys import exit # 向sys模块借一个exit函数用来退出程序 # 指定图像文件名称 back_image_filename = './image/sushiplate.jpg' mouse_image_filename = './image/fugu.png' if __name__=='__main__': # 初始化pygame,为使用硬件做准备 pygame.init() # 创建了一个窗口 win = pygame.display.set_mode((640,470),0,32) # 设置窗口标题 pygame.display.set_caption("Hello, World!") # pygame.display.set_caption('The first game') # 加载并转换图像 background = pygame.image.load(back_image_filename).convert() mouse_cursor = pygame.image.load(mouse_image_filename).convert_alpha() # 游戏主循环 while True: for event in pygame.event.get(): # 接收到退出事件后退出程序 if event.type == QUIT: exit() # 将背景图画上去 win.blit(background,(0,0)) # blit是个重要函数,第一个参数为一个Surface对象,第二个为左上角位置。 # 画完以后一定记得用update更新一下,否则画面一片漆黑。 # 获得鼠标位置 x, y = pygame.mouse.get_pos() # 计算[光标图案]的左上角位置【图片以左上角为基准】 # mouse_cursor.get_width(),mouse_cursor.get_height()得到图片的长宽 # 让鼠标所在位置为光标图案的中心点,所以图片的左上角应该向左上方移动 x = x - mouse_cursor.get_width()/2 y = y - mouse_cursor.get_height()/2 win.blit(mouse_cursor, (x, y)) # 把光标画上去 pygame.display.update() # 刷新一下画面


set_mode:返回一个Surface对象,代表了桌面上出现的窗口。第一个参数代表分辨率;第二个参数是标志位,如果不需要使用热河特性,则指定为0;第三个为色深。
标志位 | 功能 |
FULLSCREEN | 创建一个全屏窗口 (create a fullscreen display) |
DOUBLEBUF | 创建一个“双缓冲”窗口,建议在HWSURFACE或者OPENGL时使用( recommended for HWSURFACE or OPENGL) |
HWSURFACE | 创建一个硬件加速的窗口,必须和FULLSCREEN同时使用( hardware accelerated, only in FULLSCREEN) |
OPENGL | 创建一个OPENGL渲染的窗口 (create an OpenGL-renderable display) |
RESIZABLE | 创建一个可以改变大小的窗口 (display window should be sizeable) |
NOFRAME | 创建一个没有边框的窗口 (display window will have no border or controls) |
convert: 将图像转化为Surface对象,每次加载完图像后就要使用这个函数.
convert_alpha:相比convert,保留了Alpha 通道信息(可以简单理解为透明的部分),这样我们的光标才可以是不规则的形状。可以试试不用convert_alpha()生成的效果。
blit:第一个参数为一个Surface对象,第二个为左上角位置。画完以后得用update更新,否则画面一片漆黑。
《PyGame的hello world》有一个想法