Python:未定义函数名

Python:未定义函数名,python,python-2.7,Python,Python 2.7,基本上,我在做一个人工智能项目,我试图做一个循环,只要一个坐标是你就应该在它被引用之前定义a。将A的定义移动到while循环之前,在该循环中调用A,错误将消失 请注意,您还应该将KillerX和EnemyX声明为函数A中的全局变量,或者将它们设置为A的参数,并使A返回修改后的KillerX您运行的代码是在线的,而不是函数中的,因此,一旦在文件中遇到它,它就会运行,这是在它看到函数A的定义之前。您可以将A的定义移动到被引用之前的某一点,也可以将主代码放置在文件末尾调用的函数中。A的定义只需在您尝试

基本上,我在做一个人工智能项目,我试图做一个循环,只要一个坐标是你就应该在它被引用之前定义
a
。将
A
的定义移动到
while
循环之前,在该循环中调用
A
,错误将消失


请注意,您还应该将
KillerX
EnemyX
声明为函数
A
中的全局变量,或者将它们设置为
A
的参数,并使
A
返回修改后的
KillerX

您运行的代码是在线的,而不是函数中的,因此,一旦在文件中遇到它,它就会运行,这是在它看到函数
A
的定义之前。您可以将
A
的定义移动到被引用之前的某一点,也可以将主代码放置在文件末尾调用的函数中。
A
的定义只需在您尝试调用它之前查看即可

import pygame as pg
import math
import time
import random


#starts pygame/create window
pg.init()
screen = pg.display.set_mode((800,600))
pg.display.set_caption("AI ALG")
clock = pg.time.Clock()

#Presets
KillerX = 50
KillerY = 50
EnemyX = 375
EnemyY = 275
gray = (255,255,255)
font = pg.font.Font(None, 32)
TICKSPASSED = 0
font_color = (100, 200, 150)
killertexture = pg.Surface((25,25))
killertexture.fill((0, 255, 0))
enemytexture = pg.Surface((25,25))
enemytexture.fill((255, 0, 0))
startAI = False





#main loop
runing = True
while runing:



    ticktxt = font.render(str(TICKSPASSED), True, font_color)
    activetxt = font.render(str(startAI), True, font_color)
    COO1 = font.render(str(KillerX), True, font_color)
    clock.tick(60)
    keys = pg.key.get_pressed()
    #events
    if keys[pg.K_SPACE]:
        startAI = True
        TICKSPASSED += 1
        


    for event in pg.event.get():

        #if event.type == pg.QUIT:
            #runing = False

        if event.type == pg.QUIT:
            runing = False

    #update
    #render
    screen.fill(gray)
    screen.blit(ticktxt, ((8,8), (8,8)))
    screen.blit(activetxt, ((730,8), (792,8)))
    screen.blit(COO1, ((730,8), (792,8)))
    screen.blit(killertexture, (KillerX,KillerY))
    screen.blit(enemytexture, (EnemyX,EnemyY))
    A()
    pg.display.flip()


def A():
    if not KillerX <= EnemyX:
        KillerX =- .5

pg.quit()