Stack Overflow на русском Asked by Nezerix on November 20, 2021
import pygame
FPS = 60
screen_width=800
screen_height=500
screen_size=(screen_width,screen_height)
pygame.init()
root=pygame.display.set_mode(screen_size)
clock = pygame.time.Clock()
person=[pygame.image.load("person_right.png"),pygame.image.load("person_left.png")]
pygame.display.update()
jumpCount=15
x=0
y=0
isJump=False
side="right"
x_person=screen_width//3
y_person=screen_height-200
size_block=50
def draw_ground():
pygame.draw.rect(root,(0,0,100),(x,y,x+size_block,y+size_block))
def draw(side):
root.fill((0,0,0))
if side=="right":
root.blit(person[0],(x_person,y_person))
else:
root.blit(person[1],(x_person,y_person))
draw_ground()
pygame.display.update()
def jump():
global y, isJump,jumpCount
if jumpCount>=-15:
if jumpCount>=0:
y-=(jumpCount**2)//16
else:
y+=(jumpCount**2)//16
jumpCount-=1
else:
isJump=False
jumpCount=15
while True:
clock.tick(FPS)
for i in pygame.event.get():
if i.type == pygame.QUIT:
exit()
keys=pygame.key.get_pressed()
if keys[pygame.K_LEFT] or keys[pygame.K_a]:
x+=3
side="left"
if keys[pygame.K_RIGHT] or keys[pygame.K_d]:
x-=3
side="right"
if not isJump:
if keys[pygame.K_SPACE] or keys[pygame.K_w] or keys[pygame.K_UP]:
isJump=True
else:
jump()
draw(side)
Квадрат pygame.draw.rect(root,(0,0,100),(x,y,x+size_block,y+size_block))
не должен по логике менять размеры, при изменении x, но он растягивается, причем проблема явно не в pygame.display.update()
, так как он растягивается когда x увеличивается и стягивается, когда x уменьшается. size_block не меняется, значит и размеры не должны меняться.
Если последние два значения тапла это координаты точки, то да, размер не должен меняться. Но я подозреваю, что это именно длина и ширина, и тогда они зависят от x
и y
. Поменяйте x+size_block,y+size_block
на size_block,size_block
.
import pygame
FPS = 60
screen_width=800
screen_height=500
screen_size=(screen_width,screen_height)
pygame.init()
root=pygame.display.set_mode(screen_size)
clock = pygame.time.Clock()
person=[pygame.image.load("person_right.png"),pygame.image.load("person_left.png")]
pygame.display.update()
jumpCount=15
x=0
y=0
isJump=False
side="right"
x_person=screen_width//3
y_person=screen_height-200
size_block=50
def draw_ground():
pygame.draw.rect(root,(0,0,100),(x,y,size_block,size_block))
def draw(side):
root.fill((0,0,0))
if side=="right":
root.blit(person[0],(x_person,y_person))
else:
root.blit(person[1],(x_person,y_person))
draw_ground()
pygame.display.update()
def jump():
global y, isJump,jumpCount
if jumpCount>=-15:
if jumpCount>=0:
y-=(jumpCount**2)//16
else:
y+=(jumpCount**2)//16
jumpCount-=1
else:
isJump=False
jumpCount=15
while True:
clock.tick(FPS)
for i in pygame.event.get():
if i.type == pygame.QUIT:
exit()
keys=pygame.key.get_pressed()
if keys[pygame.K_LEFT] or keys[pygame.K_a]:
x+=3
side="left"
if keys[pygame.K_RIGHT] or keys[pygame.K_d]:
x-=3
side="right"
if not isJump:
if keys[pygame.K_SPACE] or keys[pygame.K_w] or keys[pygame.K_UP]:
isJump=True
else:
jump()
draw(side)
Answered by dIm0n on November 20, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP