鱼C论坛

 找回密码
 立即注册
查看: 1499|回复: 5

为什么这段代码无法满足放大和缩小?

[复制链接]
发表于 2021-9-2 21:09:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 飞花落尽 于 2021-9-12 11:27 编辑
import pygame
import sys
from pygame.locals import *

#初始化pygame
pygame.init()

size = width,height = 1000,800
speed = [-2,1]
bg = (255,255,255) #RGB白色
fullscreen = False
ratio = 1.0

clock = pygame.time.Clock()

#创建指定大小窗口 Surface
#Surface对象就是pygame中用来表示图像的对象
screen = pygame.display.set_mode(size,RESIZABLE)
#设置窗口标题
pygame.display.set_caption('初次见面,请大家多多关照')

#加载图片 也是Surface对象
#一个Surface对象不能经过两次加工,否则会很难看
oturtle = pygame.image.load('turtle.jpeg')
turtle = oturtle
oturtle_rect = oturtle.get_rect()
position = turtle_rect = oturtle_rect  
#获得图片位置矩形
#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 == K_LEFT:
                turtle = l_head 
                speed = [-2,0]
            elif event.key == K_RIGHT:
                turtle = r_head
                speed = [2,0]
            elif event.key == K_UP:
                speed = [0,-1]
            elif event.key == K_DOWN:
                speed = [0,1]

            #全屏a
            if event.key == K_a:
                fullscreen = not fullscreen
                if fullscreen:
                    screen = pygame.display.set_mode((3840, 2160),FULLSCREEN | HWSURFACE)
                    width,height = 1920,1080
                    #改尺寸
                else:
                    screen = pygame.display.set_mode(size)
            #放大缩小乌龟(=,-),空格键恢复尺寸
            if event.key == K_EQUALS or event.key == K_MINUS or event.key == K_SPACE:
                if event.key == K_EQUALS and ratio < 2:
                    ratio += 0.1
                elif event.key == K_MINUS and ratio >0.5:
                    ratio -= 0.1
                elif event.key == K_SPACE:
                    ratio = 1.0
                if turtle == l_head:
                    turtle = pygame.transform.smoothscale(oturtle,\
                                             (int(oturtle_rect.width * ratio),\
                                              int(oturtle_rect.height * ratio)))
                if turtle == r_head:
                    oturtle = pygame.transform.flip(oturtle,True,False)
                    turtle = pygame.transform.smoothscale(oturtle,\
                                             (int(oturtle_rect.width * ratio),\
                                              int(oturtle_rect.height * ratio)))
                #也同时防止变量被污染
                #放大缩小的头重新移动
                    
        if event.type == VIDEORESIZE:
            size = event.size
            width,height = size
            print(size)
            screen = pygame.display.set_mode(size,RESIZABLE)

            
    position = position.move(speed)
    #调用rect对象的move方法

    if position.left < 0 or position.right > width:
        turtle = pygame.transform.flip(turtle,True,False)
        #第一个参数是surface对象,第二个是水平翻转,第三个是竖直翻转
        speed[0] = -speed[0]

    if position.top < 0 or position.bottom > height:
        speed[1] = -speed[1]

    #填充背景(看不到乌龟了)
    screen.fill(bg)
    #更新图像,但是每刻都是一个图像(只有像素)
    screen.blit(turtle,position)
    #双缓冲flip更新界面,重要!!!
    pygame.display.flip()
    #延迟10毫秒
    pygame.time.delay(10)
    clock.tick(200)
    #不高于200帧
要求是乌龟放大缩小后都不能倒退行走(小甲鱼视频81讲)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-5 08:21:21 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-12 18:03:26 | 显示全部楼层
有没有哪位好心人?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-12 18:04:02 | 显示全部楼层
顶一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-12 22:31:07 | 显示全部楼层
有没有哪位好心人?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-12 22:31:37 | 显示全部楼层
有没有哪位好心人?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 10:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表