有人可以在我的pygame代码中实现重力和运行动画吗?

问题描述

在本学期,我正在与pygame一起制作Mario,以进行我的课堂评估,这是pygame的新手,我在任何地方都找不到如何在游戏中正确实现重力的方法,因此当马里奥跳楼时,他便倒下了。我的第二个问题是尝试制作连续动画,我希望Mario在顺序中左右移动时浏览图片。 1、2、3、2(一遍又一遍)。如果有人可以帮助,那就太好了!

import pygame

import time

import random


pygame.init()


display_width = 800
display_height = 600
mario_width = 55

blue = (77,240,255)
green = (0,186,43)
ground_colour = (186,150,97)

gameDisplay = pygame.display.set_mode((display_width,display_height))
pygame.display.set_caption("Super Italiano Bros")

direction = 'right'
clock = pygame.time.Clock()
cloudImg = pygame.image.load('Cloud.png')


rightMarioImg = pygame.image.load('MarioRight.png')
rightMarioImg2 = pygame.image.load("MarioRight2.png")
rightMarioImg3 = pygame.image.load("MarioRight3.png")

leftMarioImg = pygame.image.load('MarioLeft.png')
leftMarioImg2 = pygame.image.load('MarioLeft2.png')
leftMarioImg3 = pygame.image.load('MarioLeft3.png')

def marioRight(x,y):
    gameDisplay.blit(rightMarioImg,(x,y))

def marioLeft(x,y):
    gameDisplay.blit(leftMarioImg,y))

def cloud(x_cloud,y_cloud):
    gameDisplay.blit(cloudImg,(x_cloud,y_cloud))

def cloud_two(x_cloud_two,y_cloud_two):
    gameDisplay.blit(cloudImg,(x_cloud_two,y_cloud_two))       

def game_loop():
    global direction

    x = (320)
    y = (360)

    x_cloud = (-200)
    y_cloud = (-220)

    x_cloud_two = (200)
    y_cloud_two = (-170)

    x_change = (0)
    y_change = (0)

    gameExit = False

    while not gameExit:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                gameExit = True
            print(event)

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                x_change = -5
                direction = 'left'
            if event.key == pygame.K_RIGHT:
                x_change = 5
                direction = 'right'
            if event.key == pygame.K_UP:
                y_change = -60
            if event.key == pygame.K_ESCAPE:
                gameExit = True
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT or event.key == pygame.K_UP:
                x_change = 0
                y_change = 60

        x += x_change
        y += y_change

        if x <= 0:
            x = 0
        if y <= 300:
            y = 300
        if y >= 360:
            y = 360
            
        gameDisplay.fill(blue)
        pygame.draw.rect(gameDisplay,ground_colour,(0,500,800,500))
        pygame.draw.rect(gameDisplay,green,470,30))
        cloud(x_cloud,y_cloud)
        cloud_two(x_cloud_two,y_cloud_two)

        if direction == 'right':
            marioRight(x,y)
        else:
            marioLeft(x,y)

        pygame.display.update()
        clock.tick(60)

game_loop()
pygame.quit()
quit()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)