Как вывести актера, движущегося по оси Y? - PullRequest
0 голосов
/ 11 сентября 2018

Я программирую прыгать и бегать в TigerJython (Python). Я реализовал формулы, чтобы актер подпрыгивал вверх (при нажатии кнопки вверх), а затем актер должен автоматически опускаться вниз благодаря гравитации. Актер должен двигаться только по оси Y (потому что платформы движутся), поэтому значение для оси X равно 1. Я действительно много чего пробовал, но этот Jumpman не хочет двигаться.

http://www.tigerjython.ch/index.php?inhalt_links=navigation.inc.php&inhalt_mitte=gamegrid/spriteanimation.inc.php

# Jump & Run

from gturtle import *
from gamegrid import *
import math
from random import randint
from time import sleep


    # ----------classJumpman-----------
    class Jumpman(Actor):
        def __init__(self):
            Actor.__init__(self, "jumpman.gif")
            self.speed = speed
            self.dt = 0.005 * getSimulationPeriod()

            def reset(self):
                self.px = self.getX()
                self.py = self.getY()
                self.vx = 1
                self.vy = self.speed * math.sin(math.radians(self.getDirection()))



            def act(self):
                self.vy = self.vy + g * self.dt
                self.px = 1
                self.py = self.py + self.vy * self.dt
                self.setLocation(Location(int(self.px), int(self.py)))
                self.setDirection(math.degrees(math.atan2(self.vy, self.vx)))


        def collide(self, actor1, actor2):
            self.setY(465)
            return 0

    # ----------classPlaforms----------

    class Platform(Actor):
        def __init__(self, path):
            Actor.__init__(self, path)

        def act(self):
            self.move()

    def generatePlatforms():
        #var = randint(1,4)
        #var_c = var
        platform = Platform("platforms/" + str(randint(1,4)) + ".jpg")
        jumpman.addCollisionActor(platform)
        addActor(platform, Location(1600, 500), 180)

    # ----------------------------------

    def onKeyRepeated(keyCode):
        if keyCode == 38: 
            jumpman.setDirection(jumpman.getDirection()+5)


    g = 9.81   

    # GameGrid
    makeGameGrid(1280, 720, 1, None, "retro.jpg", False)#, keyRepeated = onKeyRepeated)
    jumpman = Jumpman()
    addActor(jumpman, Location(400, 480), 90)

    setSimulationPeriod(30)
    show()
    doRun()

    while True:
        generatePlatforms()
        sleep(2)
...