#python #pygame
#python #pygame
Вопрос:
Я пытаюсь перейти, но получаю сообщение об ошибке:
Ошибка типа: аргумент Rect недопустим
Кстати, я узнал об этом с YouTube.
import pygame
import random
pygame.init()
screen = pygame.display.set_mode((500, 500))
pygame.display.set_caption("First game!")
gubbe_x = 50
gubbe_y = 50
gubbe_vel = 0.1
gubbe_width = 40
gubbe_height = 50
isjump = False
jumpCount = 10
run = True
running = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
#write code in forloop line
pygame.draw.rect(screen, (255,0,0), (gubbe_x, gubbe_y, gubbe_width, gubbe_height))
keys = pygame.key.get_pressed()
if keys[pygame.K_RIGHT] and gubbe_x < 500 - gubbe_width - gubbe_vel:
gubbe_x = gubbe_vel
if keys[pygame.K_LEFT] and gubbe_x > gubbe_vel:
gubbe_x -= gubbe_vel
if not (isjump):
if keys[pygame.K_UP] and gubbe_y > gubbe_vel:
gubbe_y -= gubbe_vel
if keys[pygame.K_DOWN] and gubbe_y < 500 - gubbe_height - gubbe_vel:
gubbe_y = gubbe_vel
if keys[pygame.K_SPACE]:
isjump = True
else:
if jumpCount >= -10:
gubbe_y -= jumpCount ** 1.5 * 0.05
jumpCount -= 1
else:
isjump == False
jumpCount = 10
pygame.display.update()
screen.fill((0,0,0))
pygame.quit()
Комментарии:
1. Результатом
-1 ** 1.5
является комплексное число.2. Проблема решена?
Ответ №1:
Результатом -1 ** 1.5
является комплексное число. Скорее всего, вы пытались сделать следующее:
gubbe_y -= jumpCount ** 1.5 * 0.05
gubbe_y -= (1 if jumpCount > 0 else -1) * abs(jumpCount) ** 1.5 * 0.05
Кроме того, в случае файлов есть опечатка:
isjump == False
isjump = False
Смотрите пример:
while run:
# [...]
if not (isjump):
if keys[pygame.K_UP] and gubbe_y > gubbe_vel:
gubbe_y -= gubbe_vel
if keys[pygame.K_DOWN] and gubbe_y < 500 - gubbe_height - gubbe_vel:
gubbe_y = gubbe_vel
if keys[pygame.K_SPACE]:
isjump = True
else:
if jumpCount >= -10:
gubbe_y -= (1 if jumpCount > 0 else -1) * abs(jumpCount) ** 1.5 * 0.05
jumpCount -= 1
else:
isjump = False
jumpCount = 10
# [...]