|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 猪猪虾 于 2020-4-20 23:00 编辑 import pygame
import sys #退出程序时要用
from pygame.locals import *
#初始化pygame,他是一个包
pygame.init()
resortion = pygame.display.list_modes() #获取当前屏幕允许的分辨率
size= width,height = 600,400
speed = [-2,1] #x每次往左走2,Y向下偏移1格
bg=(255,255,255) #背景填充为白色
#创建指定大小的窗口,RESIZABLE窗口尺寸可修改
screen=pygame.display.set_mode(size,RESIZABLE)
#设置窗口的标题
pygame.display.set_caption("初次见面,请多指教")
#加载图片
ocartoon=pygame.image.load("turtle.png")
cartoon=ocartoon
#获取图像的位置矩形
position = cartoon.get_rect()
l_head=cartoon
r_head=pygame.transform.flip(cartoon,True,False)
#设置放大缩小的倍数
ratio = 1.0 #每点一次,增加或者减小1倍
fullscreen = False
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type== KEYDOWN:
if event.key == K_LEFT:
cartoon=l_head
speed=[-1,0]
if event.key == K_RIGHT:
speed=[1,0]
cartoon=r_head
if event.key == K_UP:
speed=[0,-1]
if event.key == K_DOWN:
speed=[0,1]
#全屏,
if event.key == K_F11:
fullscreen = not fullscreen
print(resortion[0])
if fullscreen:
#设置屏幕大小
screen = pygame.display.set_mode(resortion[0],FULLSCREEN | HWSURFACE)
width,height= resortion[0][0],resortion[0][1]
else:
screen = pygame.display.set_mode(size)
#放大缩小尺寸,当鼠标按下+-空格
if event.key == K_EQUALS or event.key == K_MINUS or event.key == K_SPACE:
#设置最大只能放大2被
if event.key == K_PLUS and ratio<3:
ratio += 0.1
if event.key == K_MINUS and ratio>0.5:
ratio -= 0.1
if event.key == K_SPACE:
ratio = 1.0
cartoon=pygame.transform.smoothscale(ocartoon,(int(ocartoon_rect.width * ratio),int(ocartoon_rect.height * ratio)))
l_head=cartoon
r_head=pygame.transform.flip(cartoon,True,False)
#用户调整窗口尺寸
if event.type == VIDEORESIZE:
size = event.size
width,height= size[0],size[1]
print(size)
#创建指定大小的窗口,RESIZABLE窗口尺寸可修改
screen=pygame.display.set_mode(size,RESIZABLE)
#移动图像
position = position.move(speed)
if position.left<0 or position.right > width:
#反转图像,True表示水平翻转,False表示不垂直翻转
a_cartoon=pygame.transform.flip(cartoon,True,False)
#反方向移动
speed[0] = -speed[0]
if position.top<0 or position.bottom > height:
speed[1] = -speed[1]
#填充背景色
screen.fill(bg)
#更新图片,blit将一个图像画到另一个图像上去,a_cartoon画到screen)
screen.blit(cartoon,position)
# 更新界面
pygame.display.flip()
#延迟
pygame.time.delay(10)
程序里两个问题:
一个就是'NameError: name 'ocartoon_rect' is not defined',变量名'ocartoon_rect'没有被定义,很明显这个变量名是错的,分析代码改成:ocartoon.get_rect()就可以运行了。
调试中发现不能放大,发现外面条件是if event.key == K_EQUALS,里面却是if event.key == K_PLUS,把K_PLUS改成 K_EQUALS后运行正常。
下面是修改后的完整代码: import pygame
import sys #退出程序时要用
from pygame.locals import *
#初始化pygame,他是一个包
pygame.init()
resortion = pygame.display.list_modes() #获取当前屏幕允许的分辨率
size= width,height = 600,400
speed = [-2,1] #x每次往左走2,Y向下偏移1格
bg=(255,255,255) #背景填充为白色
#创建指定大小的窗口,RESIZABLE窗口尺寸可修改
screen=pygame.display.set_mode(size,RESIZABLE)
#设置窗口的标题
pygame.display.set_caption("初次见面,请多指教")
#加载图片
ocartoon=pygame.image.load("turtle.png")
cartoon=ocartoon
#获取图像的位置矩形
position = cartoon.get_rect()
l_head=cartoon
r_head=pygame.transform.flip(cartoon,True,False)
#设置放大缩小的倍数
ratio = 1.0 #每点一次,增加或者减小1倍
fullscreen = False
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type== KEYDOWN:
if event.key == K_LEFT:
cartoon=l_head
speed=[-1,0]
if event.key == K_RIGHT:
speed=[1,0]
cartoon=r_head
if event.key == K_UP:
speed=[0,-1]
if event.key == K_DOWN:
speed=[0,1]
#全屏,
if event.key == K_F11:
fullscreen = not fullscreen
print(resortion[0])
if fullscreen:
#设置屏幕大小
screen = pygame.display.set_mode(resortion[0],FULLSCREEN | HWSURFACE)
width,height= resortion[0][0],resortion[0][1]
else:
screen = pygame.display.set_mode(size)
#放大缩小尺寸,当鼠标按下+-空格
if event.key == K_EQUALS or event.key == K_MINUS or event.key == K_SPACE:
#设置最大只能放大2被
if event.key == K_EQUALS and ratio<3:
ratio += 0.1
if event.key == K_MINUS and ratio>0.5:
ratio -= 0.1
if event.key == K_SPACE:
ratio = 1.0
cartoon=pygame.transform.smoothscale(ocartoon,(int(ocartoon.get_rect().width * ratio),int(ocartoon.get_rect().height * ratio)))
l_head=cartoon
r_head=pygame.transform.flip(cartoon,True,False)
#用户调整窗口尺寸
if event.type == VIDEORESIZE:
size = event.size
width,height= size[0],size[1]
print(size)
#创建指定大小的窗口,RESIZABLE窗口尺寸可修改
screen=pygame.display.set_mode(size,RESIZABLE)
#移动图像
position = position.move(speed)
if position.left<0 or position.right > width:
#反转图像,True表示水平翻转,False表示不垂直翻转
a_cartoon=pygame.transform.flip(cartoon,True,False)
#反方向移动
speed[0] = -speed[0]
if position.top<0 or position.bottom > height:
speed[1] = -speed[1]
#填充背景色
screen.fill(bg)
#更新图片,blit将一个图像画到另一个图像上去,a_cartoon画到screen)
screen.blit(cartoon,position)
# 更新界面
pygame.display.flip()
#延迟
pygame.time.delay(10)
|
|