第82
查询电脑分辨率方法
>>> import pygame >>>> pygame.init() >>>> pygame.display.list_modes()
得知自己的为1920×1080
设置全屏游戏
import pygame import sys pygame.init() # 初始化Pygame size = width, height = 600, 400 # size为元组 speed = [-2, 1] bg = (255, 255, 255) # RGB fullscreen = False # 设置一个决定全屏的变量 # 实例化Pygame 的time 模块的 Clock 对象 clock = pygame.time.Clock() # 设置帧率需要 # 创建指定大小的窗口 Surface screen = pygame.display.set_mode(size) # 设置窗口标题 pygame.display.set_caption("初次见面,请大家多多关照!") # 加载图片 turtle = pygame.image.load("18.gif") # 获得图像的位置矩形 position = turtle.get_rect() l_head = turtle # 原图像 r_head = pygame.transform.flip(turtle, True, False) # 翻转后 while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: # 按下方向键左键 turtle = l_head # 调头 speed = [-1, 0] # 左移 if event.key == pygame.K_RIGHT: turtle = r_head # 调头 speed = [1, 0] # 右移 if event.key == pygame.K_UP: speed = [0, -1] if event.key == pygame.K_DOWN: speed = [0, 1] # 全屏(F11) if event.key == pygame.K_F11: fullscreen = not fullscreen if fullscreen: screen = pygame.display.set_mode((1920, 1080), pygame.FULLSCREEN | pygame.HWSURFACE) width, height = 1920, 1080 # 重新设置宽高 else: screen = pygame.display.set_mode(size) # size变量是原来的尺寸 width, height = size # 把size赋值给宽高 # 移动图像 position = position.move(speed) if position.left < 0 or position.right > width: # 翻转图像 turtle = pygame.transform.flip(turtle, True, False) # 就是r_head # 反方向移动 speed[0] = -speed[0] if position.top < 0 or position.bottom > height: speed[1] = -speed[1] # 填充背景 screen.fill(bg) # 更新图像 screen.blit(turtle, position) # 更新界面 pygame.display.flip() # 延迟10毫秒 pygame.time.delay(10) # 设置帧率 #clock.tick(200)
设置缩放图像大小
这个没做出来
让图像在上下左右边界移动
import pygame import sys # 退出游戏需要 pygame.init() # 初始化Pygame size = width, height = 600, 400 # 窗口尺寸 bg = (255, 255, 255) # RGB,窗口背景颜色 fullscreen = False # 初始化全屏为False # 创建指定大小的窗口 Surface screen = pygame.display.set_mode(size) # 设置窗口标题 pygame.display.set_caption("小黑黑打架吗?") # 加载图片 turtle = pygame.image.load("18.gif") # 获得图像的位置矩形 position = turtle.get_rect() speed = [5, 0] # 原始乌龟图像速度x=5,y=0,向右走 """其他三个乌龟图像""" turtle_right = pygame.transform.rotate(turtle, 90) # 旋转的角度,在右边,向下走 turtle_top = pygame.transform.rotate(turtle, 180) # 180度,在上边,向左走 turtle_left = pygame.transform.rotate(turtle, 270) # 270度,在左边,向上走 turtle_bottom = turtle turtle = turtle_top # 初始从上边开始 while True: for event in pygame.event.get(): # 遍历事件 if event.type == pygame.QUIT: # ×掉窗口 sys.exit() # 退出 if event.type == pygame.KEYDOWN: # 按下键 # 全屏(F11) if event.key == pygame.K_F11: # F11 fullscreen = not fullscreen # 全屏改为True if fullscreen: # 如果全屏 screen = pygame.display.set_mode((1920, 1080), pygame.FULLSCREEN | pygame.HWSURFACE) width, height = 1920, 1080 # 重置窗口高宽 else: # 不全屏 screen = pygame.display.set_mode((600, 400)) # 复原 width, height = 600, 400 # 重置宽高 # 移动图像 position = position.move(speed) if position.right > width: # 右边大于窗口宽度 turtle = turtle_right # 图像在右边了 position = turtle_rect = turtle.get_rect() # 重置位置 position.left = width - turtle_rect.width speed = [0, 5] # 重置速度,向下走 if position.bottom > height: # 底部大于窗口高度 turtle = turtle_bottom # 换乌龟图像 position = turtle_rect = turtle.get_rect() # 重置位置 position.left = width - turtle_rect.width position.top = height - turtle_rect.height speed = [-5, 0] # 重置速度,向左走 if position.left < 0: # 左边出去了 turtle = turtle_left # 换成左边的乌龟 position = turtle_rect = turtle.get_rect() # 重置位置 position.top = height - turtle_rect.height speed = [0, -5] # 重置速度,向上走 if position.top < 0: # 到了最上边 turtle = turtle_top # 换上边的图像 position = turtle_rect = turtle.get_rect() # 重置位置 speed = [5, 0] # 重置速度,向右走 # 填充背景 screen.fill(bg) # 更新图像 screen.blit(turtle, position) # 更新界面 pygame.display.flip() # 延迟10毫秒 pygame.time.delay(10)
以下是游戏的一个截图
第83
这个看不懂。。。
import pygame import sys # 退出需要 from pygame.locals import * pygame.init() # 初始化 size = width, height = 400, 400 bg = (255, 255, 255) # 背景颜色 clock = pygame.time.Clock() # 设置帧率需要 screen = pygame.display.set_mode(size) # 设置窗口大小 pygame.display.set_caption("Python Demo") # 设置窗口名 turtle = pygame.image.load("18.gif") # 加载图片 # 0 -> 未选择,1 -> 选择中,2 -> 完成选择 select = 0 # 选择初始赋值为0 select_rect = pygame.Rect(0, 0, 0, 0) # 0 -> 未拖拽,1 -> 拖拽中,2 -> 完成拖拽 drag = 0 # 初始化 position = turtle.get_rect() # 获取位置 position.center = width // 2, height // 2 # 整除取整数,中心位置 while True: # 死循环 for event in pygame.event.get(): # 遍历事件 if event.type == QUIT: sys.exit() # 退出游戏 elif event.type == MOUSEBUTTONDOWN: # 鼠标点下 if event.button == 1: # 点下第一次 # 第一次点击,选择范围 if select == 0 and drag == 0: # 如果为第一次 pos_start = event.pos # 获取原始位置 select = 1 # 表示选择中 # 第二次点击,推拽图像 elif select == 2 and drag == 0: capture = screen.subsurface(select_rect).copy() cap_rect = capture.get_rect() drag = 1 # 第三次点击,初始化 elif select == 2 and drag == 2: select = 0 drag = 0 elif event.type == MOUSEBUTTONUP: # 鼠标松下 if event.button == 1: # 松下第一次 # 第一次释放,结束选择 if select == 1 and drag == 0: # 如果是第一次 pos_stop = event.pos # 结束位置 select = 2 # 表示完成选择 # 第二次释放,结束拖拽 if select == 2 and drag == 1: drag = 2 screen.fill(bg) screen.blit(turtle, position) # 实时绘制选择框 if select: # 不为0时 mouse_pos = pygame.mouse.get_pos() # 得到鼠标当前位置 if select == 1: # 选择中 pos_stop = mouse_pos # 获取结束坐标 select_rect.left, select_rect.top = pos_start select_rect.width, select_rect.height = pos_stop[0] - pos_start[0], pos_stop[1] - pos_start[1] pygame.draw.rect(screen, (0, 0, 0), select_rect, 1) # 画一个矩形,(000)黑线,宽度1像素 # 拖拽裁剪的图像 if drag: # 不为0时 if drag == 1: cap_rect.center = mouse_pos screen.blit(capture, cap_rect) pygame.display.flip() clock.tick(30)
图像效果: