大神帮忙解决一下问题

玩家方块切了一些高度后位置不对,麻烦大神解决问题。(print语句和主循环多画出的绿色小方块都是调试用的,从绿色方块可以看出坐标上的问题。

"""
反向操作
By 幽默小白羊
原创
"""
import pygame as g
from pygame.locals import *
import random as r
from sys import exit

class Ground():
    def __init__(self):
        global GREEN , SCREEN_WIDTH , SCREEN_HEIGHT , screen
        self.color = GREEN
        self.x = 0
        self.y = 400
        self.height = SCREEN_HEIGHT-400
        self.width = SCREEN_WIDTH
        self.rect = g.Rect(( self.x , self.y ),( self.width , self.height ))
    def draw(self):
        g.draw.rect(screen , self.color , self.rect)

class Player():
    def __init__(self):
        global YELLOW , SCREEN_WIDTH , ground
        self.color = YELLOW
        self.width = 5*BOX_SIZE
        self.height = 5*BOX_SIZE
        self.x = SCREEN_WIDTH / 2 - self.width / 2
        self.y = ground.y - self.height
        self.rect = g.Rect(( self.x , self.y ),( self.width , self.height ))
    def draw(self):
        global ground , left , right , jump , squat , SPEED , BOX_SIZE
        if squat:#有问题
            SPEED = 2
            self.y = ground.y - 3 * BOX_SIZE
            self.height = 3 * BOX_SIZE
            print(f'地面y{ground.y},玩家应有高度{3*BOX_SIZE},玩家实际高度{self.height},玩家y{self.y}')
        else:
            SPEED = 5
            self.height = 5*BOX_SIZE
            #self.y = ground.y-self.width
        if left:#待优化
            self.x -= SPEED
        if right:#待优化
            self.x += SPEED
        if jump:#待优化
            self.y -= SPEED
        else:
            self.y += SPEED
        if self.y+self.width > ground.y:
            self.y = ground.y-self.width
        self.rect = g.Rect(( self.x , self.y ),( self.width , self.height ))
        g.draw.rect(screen , self.color , self.rect)

def quitGame():
    g.quit()
    exit()

g.init()
BOX_SIZE = 5
SPEED = 5
clock = g.time.Clock()
screen = g.display.set_mode((800,600))
g.display.set_caption('反向操作 By 幽默小白羊')
left = False
right = False
jump = False
squat = False
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
YELLOW = 255,255,0
BLUE = 135,206,255
GREEN = 0,255,0
screen.fill(BLUE)
ground = Ground()
player = Player()

while True:
    clock.tick(60)
    for event in g.event.get():
        if event.type == QUIT:
            quitGame()
    keys = g.key.get_pressed()
    if keys[K_ESCAPE]:
        quitGame()
    left = keys[K_d]
    right = keys[K_a]
    jump = keys[K_s]
    squat = keys[K_w]
    screen.fill(BLUE)
    ground.draw()
    player.draw()
    g.draw.rect(screen , GREEN , (player.x,player.y,4,4))
    g.display.update()

还是挺想完成这个游戏的

> 玩家方块切了一些高度后位置不对

你能具体描述一下么?