import pygame
import random
pygame.init()
############################################################
FPS = 60
width = 500
height = 500
size = (width, height)
xCord = 250
yCord = 250
radius = 50
DRxCord = 1
DRyCord = 1
direct = DRxCord # 1 - Вправо | -1 - Влево
cours = DRyCord # 1 - Вниз | -1 - Вверх
clock = pygame.time.Clock()
jumpCount = 30
jump = jumpCount
#############################################################
pygame.display.set_caption("My first game")
surface = pygame.display.set_mode(size)
surface.fill((255, 255, 255))
pygame.display.update()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
#############################################################
keys = pygame.key.get_pressed()
if keys[pygame.K_w]:
yCord -= 3
if keys[pygame.K_s]:
yCord += 3
if keys[pygame.K_a]:
xCord -= 3
if keys[pygame.K_d]:
xCord += 3
##############################################################
surface.fill((255, 255, 255))
pygame.draw.circle(surface, (255, 0, 0), (xCord, yCord), radius)
pygame.display.update()
clock.tick(FPS)
Установить флаг и потом в течение какого-то числа итераций уменьшать y
, потом увеличивать обратно, и убрать флаг.
Например как тут: https://techwithtim.net/tutorials/game-development-with-python/pygame-tutorial/jumping/
import pygame
import random
pygame.init()
############################################################
FPS = 60
width = 500
height = 500
size = (width, height)
xCord = 250
yCord = 250
radius = 50
DRxCord = 1
DRyCord = 1
direct = DRxCord # 1 - Вправо | -1 - Влево
cours = DRyCord # 1 - Вниз | -1 - Вверх
clock = pygame.time.Clock()
jumpCount = 10
isJump = False
#############################################################
pygame.display.set_caption("My first game")
surface = pygame.display.set_mode(size)
surface.fill((255, 255, 255))
pygame.display.update()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
#############################################################
keys = pygame.key.get_pressed()
if keys[pygame.K_a]:
xCord -= 3
if keys[pygame.K_d]:
xCord += 3
if not(isJump):
if keys[pygame.K_UP]:
y -= 3
if keys[pygame.K_DOWN]:
yCord += 3
if keys[pygame.K_SPACE]:
isJump = True
else:
if jumpCount >= -10:
yCord -= (jumpCount * abs(jumpCount)) * 0.5
jumpCount -= 1
else:
jumpCount = 10
isJump = False
##############################################################
surface.fill((255, 255, 255))
pygame.draw.circle(surface, (255, 0, 0), (xCord, yCord), radius)
pygame.display.update()
clock.tick(FPS)
Сделал так, но выдает ошибку при прыжке
pygame.draw.circle(surface, (255, 0, 0), (xCord, yCord), radius)
TypeError: integer argument expected, got float
Хм, странно, судя по документации должно и float принимать.
Как вариант можно просто обрезать до int
:
pygame.draw.circle(surface, (255, 0, 0), (xCord, int(yCord)), radius)
Теперь вверх и вниз не двигается
K_UP/K_DOWN это стрелки, а не W
/S
.
Спасибо большое, все увидел.