Вопросы

Двойной прыжок спрайта Pygame

Итак, я относительно новичок в pygame и начал отходить от базового руководства. Я хочу, чтобы спрайт мог совершать двойной прыжок, и я попытался добавить переменную и т. Д., Чтобы я мог изменить его на тройной прыжок, если они в конечном итоге получат усиление или что-то в этом роде, и я могу легко это изменить, но я столкнувшийся с трудностями. P.S: Некоторые комментарии могут не иметь смысла, поскольку некоторый код был удален, но они все еще полезны для меня.

x = 200
y = 450
width = 64
height = 66
vel = 5
screenwidth = 500
isjump = True #whether our character is jumping or not
jumpcount = 10
maxjump = 2 #double jump
maxjumpcount = 0

#we must keep track of direction, are they moving and how many steps for frames

left = False
right = False
walkcount = 0


def redrawGameWindow():
    global walkcount

    window.blit(background,(0,0)) #loads bg at 0,0

    if  walkcount +1 >= 15: #15 as we have 5 sprites, which will be displayed 3 times per second
        walkcount = 0

    if left:
        window.blit(walkleft[walkcount//3],(x,y))#excludes remainders
        walkcount+=1
    elif right:
        window.blit(walkright[walkcount//3],(x,y))
        walkcount+=1
    elif isjump:
        window.blit(jumpp,(x,y))
        walkcount+=1
    else:
        window.blit(char,(x,y))

    pygame.display.update()


#now to write main loop which checks for collisions, mouse events etc
run = True
while run: #as soon as we exit this, the game ends
    #main loop, gonna check for collision

    clock.tick(15) #frame rate, how many pics per second, games r just a ton of pictures running very quickly
    #now we check for events

    for event in pygame.event.get(): #gets a list of all events that happened
        print(event)
                                    #can go through these events& check if they've happened
        if event.type == pygame.QUIT: #if we try to exit the window
            run = False

   through the use of events. If a key has been pressed, we change the x & y of our shape
    #if we want it to continuely move, we need to get a list



    keys = pygame.key.get_pressed() #if these are pressed or held down, execute whatever is under these.


    if keys[pygame.K_LEFT] and x > vel-vel: #if pressed we move our character by the velocity in whatever direction via grid which works from the TOP LEFT of screen
        #0,0 is top left           #vel-vel to equal 0, makes border better
        x -= vel
        left = True
        right = False
    elif keys[pygame.K_RIGHT] and x < screenwidth - width: #as the square co ord is top left of it
        x+= vel
        right = True
        left = False
    else:
        right = False
        left = False
        walkcount = 0

   #JUMP CODE
    if not(isjump): # still lets them move left and right
        if keys[pygame.K_SPACE]:
            isjump = True #quadratic function for jump
            right = False
            left = False
            walkcount = 0
            maxjumpcount+=1
            if maxjumpcount > 2:
                isjump = False
    else:
        while jumpcount >= -10 and maxjumpcount < 2: #moving slower, then faster, hang, then go down
            pygame.time.delay(12)
            y -= (jumpcount*abs(jumpcount)) / 2#1.35? #squared, 10 ^2, /2, jumpcount = jump height
            jumpcount -= 1


        else: #jump has concluded if it reaches here
            isjump = False
            jumpcount = 10
            maxjumpcount = 0 #double jump resets once jump ends

    redrawGameWindow()

Извиняюсь за довольно жалкую попытку. Мы будем очень благодарны за любые другие предложения, так как мне еще так много предстоит узнать. Спасибо.

Читать:
Установка определенной версии python для действия github

idownvotedbecau.se/unclearquestion — в чем именно проблема? Вы получаете сообщение об ошибке / исключении? Если не то, что происходит, а что вы хотите / ожидаете?   —  person Mattt720    schedule 05.02.2020

Код перехода, который я использовал, не совсем соответствовал моим намерениям. Я решил это, используя переменную, которая ограничивает пользователя тем, сколько раз он может нажимать пробел и прыгать, пока снова не коснется пола, и мне пришлось полностью заново выполнить функцию прыжка. Однако спасибо, я поработаю над своей ясностью в следующем посте.   —  person Mattt720    schedule 07.02.2020

Похожие записи

Чтение китайских иероглифов в HTML с помощью PHP

admin

Что происходит с моей программой на Python, скажите, пожалуйста? Как оба утверждения if else могут быть истинными?

admin

Ошибка npm install bcrypt с ошибкой: не удается найти модуль ‘nan’

admin

Как сохранить ответ JSON от входа пользователя в Core Data для отслеживания состояния пользователя в Swift?

admin

Приложение, помеченное Microsoft AV как вирус. Не знаете, какое поведение оно считает подозрительным или что делать, чтобы попытаться удалить его.

admin

[] строка в jsonb с Gorm и postgres

admin