王俞励 2022-07-14 17:20 采纳率: 100%
浏览 107
已结题

pygame按下i/k/j/l键调整pygame窗口在整个屏幕的位置

问题遇到的现象和发生背景
发生背景

就是最近嘛,看见一个别人做的迷宫游戏,就心血来潮想要做一个。然后呢,做了第一版,因为别人可以更好地评价,所以我给我同学玩了一下。

问题遇到的现象

结果因为我这个电脑像素高,我同学的电脑像素比我稍低一些,所以由于单位长度不同,900×900像素的pygame窗口在我同学的电脑上实际显示的比我大(我同学的页面如图一,我的页面如图二,由于我同学视频是以前拍的,我截屏是最新的,所以pygame的内容稍有不同),所以我就想改一下代码。

img


img

问题相关代码

其实我这个代码太长了,直接放出来任何人(包括我)都(会)觉得特别厌烦,所以我截了一点点:

can={'up':True,'right':True,'left':True,'down':True}
screen = pg.display.set_mode(screen_size,pygame.RESIZABLE)
pygame.display.set_icon(pygame.image.load("logo.png"))
pygame.display.set_caption('Maze Game\'s window, version 1.0.2')

(但好像没啥用,但是我的代码中控制pygame窗口的就这一点)

运行结果及报错内容(无)
我的解答思路和尝试过的方法

我就想,总共有这些方案:

(1)简单粗暴:直接将900×900像素换成800×800像素。(有用,兼容性很低,万一还有的电脑像素更少,而且我写代码时犯了> 个很严重但又轻如鸿毛的错误:直接写了坐标,这意味着我要改将近千个坐标)
(2)难以实现:就是我写的标题。(很有用,但是难实现,兼容各种电脑)
(3)普普通通:像tkinter那样,设置pygame窗口出现的位置。(不灵通,设置时要坐标那是肯定的,但是单位不统一还是会发
生,而且我翻阅了资料,pygame好像没有这个功能)
(4)错误百出:满屏,但是错误百出(如图一,图片由于在全屏模式下截不了),一会儿这兼容不了,一会儿太大还是看不全,> 一会儿又黑屏。

img

最终,我选择了②,那是最好的办法了。

我想要达到的结果
  • <input type="checkbox" disabled="" /> 按下i,pygame窗口位置向上挪;按下k,pygame窗口位置向下移;按下j,pygame窗口位置向左动;按下l,pygame窗口位置向右划。这个可能很难实现,如果实现不了,就③吧(也可能实现不了,我在这里不做强求)
  • 写回答

1条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-07-14 21:28
    关注

    如果只是为了缩小游戏画面的话,不用这么复杂。虽然不知道你全部的代码,但思路可以参考下面这样:

    1). 游戏屏幕设置成想要缩小的大小 screen = pg.display.set_mode(800,800)
    2). 创建一个surface对象,使用原始的尺寸,surface = pygame.Surface((900,900))
    3). 所有游戏的内容都blit在surface上
    4). 把surface缩小成想要的尺寸,s = pygame.transform.scale(surface,(800,800))
    5). 把surface绘制在screen上并刷新,screen.blit(s,(0,0))

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月20日
  • 已采纳回答 7月19日
  • 创建了问题 7月14日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度