|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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)
-
复制代码
|
|