Ошибка типа: аргумент Rect недействителен, когда я пытаюсь перейти в pygame

#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

    # [...]