当前位置: 首页 > 知识库问答 >
问题:

pygame的get_不适合我

姜楷
2023-03-14

我有一个红色像素图像,我想在红色像素处显示另一个图像,所以我编写了以下代码:

import sys, pygame
pygame.init()
from pygame.locals import *
import time

#the function with get at
def colorscan(rect):
    red = ( 255   ,   0    ,   0   ,  255   )


    for x in range(rect[0],rect[0]+rect[2]+1):
        for y in range(rect[1],rect[1]+rect[3]+1):
            print(x,y)
            if tuple(screen.get_at((x,y)))==red:
                print(x,y,"done")
                return (x,y)
def load(path):
    x = pygame.image.load(path)
    return x

beam   = load("menu/beam.png")
w_plat = load("menu/w_plat.png")

videoinfo = pygame.display.Info()
fullscreen = pygame.FULLSCREEN

screen = pygame.display.set_mode((videoinfo.current_w,videoinfo.current_h), fullscreen, 32)
time = pygame.time.Clock()

#main loop
while True:
    beamrect = screen.blit(beam,(0,0))
    xtl,ytl=beamrect.topleft
    w_pos=colorscan( (xtl,ytl,35,+35) )
    screen.blit(w_plat, w_pos)

我的代码太大了,所以我在这里写了什么是重要的。不管怎样,当我运行它时,我得到这个错误:

回溯(最近一次调用):文件“C:\Users\AndréLuiz\Desktop\equality\equality.py”,第171行,在screen.blit(w_plat,w_pos)类型错误:blit的目标位置无效

检查后,打印w_pos返回“无”,但我确信红色像素已被“扫描”。

共有1个答案

程智明
2023-03-14

我认为发生的情况是,您的for循环被破坏

for x in range(rect[0],rect[0]+rect[2]+1):
    for y in range(rect[1],rect[1]+rect[3]+1):

通过不执行,或者if语句因为不满足其条件而不执行:

如果元组(screen.get_at((x,y))==红色:(例如:如果!=红色,则不执行)

因为它是您返回值的唯一位置。否则,当函数未指定返回值时,它将返回None

没有默认的返回值,这就是为什么你得到一个无。

 类似资料:
  • 在用pygame编写代码时,我意识到VSCode并没有显示相当多pygame模块的itellisense,而是将这些模块显示为变量。经过深入研究,我发现如果您< code > import py game . display as display ,intellisense会显示得很好。有没有什么方法可以让我不用像这样导入这些模块就可以使用intelliense?

  • 我写下面的代码从一个表复制值到另一个表,但$wpdb- 我用回声功能测试了每条线路。foreach线路未运行,我认为$wpdb-

  • 问题内容: 我正在尝试导入Pygame以用于我的Python 3.3版本。Pygame网站上的下载仅包含Python 3.1和3.2。我似乎无法导入Pygame,尽管我认为我已将其安装在正确的路径中。我已经尝试了3.1和3.2 Pygame下载。 是Pygame只是没有安装在正确的文件路径中,还是Pygame与我的Python版本(3.3)不兼容? 我正在运行Windows 7,这是错误: 问题答

  • 我有一个使用JSF Spring5Jersey2.29.1(spring-jersey5)运行在Payara 5.1.3上的web应用程序。 DI部分由Spring处理,它使用@inject。 我的问题是,由于我已经从jerseyendpoint上的jersey2.25 Spring-Jersey4和Payara 4.1.9.2迁移过来,我不能为spring beans使用@inject,我必须使

  • 我刚刚安装了 PyCharm 社区版 3.4.1,并尝试在其中制作一个简单的 pygame 项目。我发现代码完成以一种奇怪的方式运行。在这种情况下: 当我键入事件时会立即显示带有方法的完成弹出窗口。但在第二种情况下: 弹出窗口仅包含方法。 如何学习自动完成工具来更深入地查看库?

  • 问题内容: 我正在尝试使用scikit-learn / pandas构建情感分析器。建立和评估模型是可行的,但尝试对新的示例文本进行分类则无法。 我的代码: 错误: 我不确定是什么问题。在我的分类方法中,我创建了一个全新的矢量化器来处理要分类的文本,与用于从模型创建训练和测试数据的矢量化器分开。 谢谢 问题答案: 您已经安装了矢量化器,但由于它在函数的生命周期内不存在,因此将其丢弃。相反,将模型转