玩家方块切了一些高度后位置不对,麻烦大神解决问题。(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()
还是挺想完成这个游戏的
> 玩家方块切了一些高度后位置不对
你能具体描述一下么?