鱼C论坛

 找回密码
 立即注册
查看: 1500|回复: 2

[已解决]pygame写游戏,边框调整问题

[复制链接]
发表于 2022-5-11 14:22:43 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 库库的斯蒂芬 于 2022-5-11 14:40 编辑

跟随小甲鱼的视频教程学习pygame,但是遇到了边框调整与全屏的问题。边框调整的功能可以运行,但是无法全屏了,只要全屏就会删一下然后回到窗口化。不知道什么原因有没有大佬指点一二。
import pygame
import sys
from pygame.locals import *
pygame.init()
size=1200,800
width,height=size
speed=[-2,1]
bg=(255,255,255)

screen=pygame.display.set_mode(size,RESIZABLE)
pygame.display.set_caption('你好')
font=pygame.font.Font(None, 20)

#加载图片
fig=pygame.image.load('curry.jpg')
#获取图像的位置矩形
pos=fig.get_rect()
r_head=fig
l_head=pygame.transform.flip(fig, True, False)
fsc=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:
                speed=[-1,0]
                fig=l_head
            if event.key==K_RIGHT:
                fig=r_head
                speed=[1,0]
            if event.key==K_UP:
                speed=[0,-1]
            if event.key==K_DOWN:
                speed=[0,1]
            #全屏
            if event.key==K_0:
                fsc=not fsc
                if fsc:
                    screen=pygame.display.set_mode((1920,1080),FULLSCREEN | HWSURFACE,RESIZABLE)
                    size=(1902,1080)
                    width,height=size
                else:
                    screen=pygame.display.set_mode(size)
            #用户修改边框
        if event.type==VIDEORESIZE:
            size=event.size
            width,height=size
            screen=pygame.display.set_mode(size,RESIZABLE)
        
                

    #移动图像
    pos=pos.move(speed)
    print('bbb',size)
    if pos.left<0 or pos.right>width:
        fig=pygame.transform.flip(fig, True, False)
        speed[0]=-speed[0]
    if pos.top<0 or pos.bottom>height:
        speed[1]=-speed[1]
    
    #填充背景
    screen.fill(bg)
    #更新图像
    screen.blit(fig,pos)
    #更新画面
    pygame.display.flip()
    #延迟
    pygame.time.delay(100)
最佳答案
2022-5-11 14:22:44
库库的斯蒂芬 发表于 2022-5-11 14:26
不知道什么原因,求大神




边框调整那代码有点问题,删掉就可以正常大小缩放,但是没办法调整窗口了,参考代码:
import pygame
import sys
from pygame.locals import *

pygame.init()
size = 1200, 800
width, height = size
speed = [-2, 1]
bg = (255, 255, 255)

screen = pygame.display.set_mode(size, RESIZABLE)
pygame.display.set_caption('你好')
font = pygame.font.Font(None, 20)

# 加载图片
fig = pygame.image.load('curry.jpg')
# 获取图像的位置矩形
pos = fig.get_rect()
r_head = fig
l_head = pygame.transform.flip(fig, True, False)
fsc = 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:
                speed = [-1, 0]
                fig = l_head
            if event.key == K_RIGHT:
                fig = r_head
                speed = [1, 0]
            if event.key == K_UP:
                speed = [0, -1]
            if event.key == K_DOWN:
                speed = [0, 1]
            # 全屏
            if event.key == K_0:
                fsc = not fsc
                if fsc:
                    screen = pygame.display.set_mode((1920, 1080), FULLSCREEN | HWSURFACE, RESIZABLE)
                    size = (1200, 800)
                    width, height = size
                else:
                    screen = pygame.display.set_mode(size)



    # 移动图像
    pos = pos.move(speed)
    print('bbb', size)
    if pos.left < 0 or pos.right > width:
        fig = pygame.transform.flip(fig, True, False)
        speed[0] = -speed[0]
    if pos.top < 0 or pos.bottom > height:
        speed[1] = -speed[1]

    # 填充背景
    screen.fill(bg)
    # 更新图像
    screen.blit(fig, pos)
    # 更新画面
    pygame.display.flip()
    # 延迟
    pygame.time.delay(100)

最佳答案

查看完整内容

边框调整那代码有点问题,删掉就可以正常大小缩放,但是没办法调整窗口了,参考代码:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-5-11 14:26:59 | 显示全部楼层
本帖最后由 库库的斯蒂芬 于 2022-5-11 14:41 编辑

不知道什么原因,求大神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-11 14:22:44 | 显示全部楼层    本楼为最佳答案   
库库的斯蒂芬 发表于 2022-5-11 14:26
不知道什么原因,求大神




边框调整那代码有点问题,删掉就可以正常大小缩放,但是没办法调整窗口了,参考代码:
import pygame
import sys
from pygame.locals import *

pygame.init()
size = 1200, 800
width, height = size
speed = [-2, 1]
bg = (255, 255, 255)

screen = pygame.display.set_mode(size, RESIZABLE)
pygame.display.set_caption('你好')
font = pygame.font.Font(None, 20)

# 加载图片
fig = pygame.image.load('curry.jpg')
# 获取图像的位置矩形
pos = fig.get_rect()
r_head = fig
l_head = pygame.transform.flip(fig, True, False)
fsc = 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:
                speed = [-1, 0]
                fig = l_head
            if event.key == K_RIGHT:
                fig = r_head
                speed = [1, 0]
            if event.key == K_UP:
                speed = [0, -1]
            if event.key == K_DOWN:
                speed = [0, 1]
            # 全屏
            if event.key == K_0:
                fsc = not fsc
                if fsc:
                    screen = pygame.display.set_mode((1920, 1080), FULLSCREEN | HWSURFACE, RESIZABLE)
                    size = (1200, 800)
                    width, height = size
                else:
                    screen = pygame.display.set_mode(size)



    # 移动图像
    pos = pos.move(speed)
    print('bbb', size)
    if pos.left < 0 or pos.right > width:
        fig = pygame.transform.flip(fig, True, False)
        speed[0] = -speed[0]
    if pos.top < 0 or pos.bottom > height:
        speed[1] = -speed[1]

    # 填充背景
    screen.fill(bg)
    # 更新图像
    screen.blit(fig, pos)
    # 更新画面
    pygame.display.flip()
    # 延迟
    pygame.time.delay(100)

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 10:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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