1

私はほとんどあきらめているので、助けが必要です。ダブルジャンプのあるシンプルなプラットフォーマーを作ろうとしています...うまくいくものを見つけようと円を描いて走り続けていますこれまでのところ最高のアイデアはティック数を比較することですが、アイデアを得るたびに、どうにかしてすべてを台無しにしてしまいましたが、方法がわかりません... 簡単な方法はありますか?

不要な変数は無視してください。これは単なる例です

Clock=pygame.time.Clock()

t=0
a=0
b=0
f=0
m=0

while True:
    Clock.tick(180)
    for event in pygame.event.get():
        if event.type == QUIT:       
            pygame.quit()
            sys.exit()
        if event.type == KEYDOWN:
            if event.key==K_SPACE and b==0:
                movey=-1
                a=1
                t=pygame.time.get_ticks()
            if event.key==K_SPACE and b==1:
                f=pygame.time.get_ticks()
                if f<=t+238:
                    a=1
                else:
                    pass
        if event.type == KEYUP:
            if event.key==K_SPACE and b==0 and a==1:
                a=0
                b=1
            if event.key==K_SPACE and b==1 and a==1:
                m=1
                b=3
                s=y
    if m==1:
        y+=movey
        if y==s-32:
            m==0

    elif y<=312 and movey==-1:
        movey=+1
    elif y==344 and movey==+1:
        movey=0
        a=0
        b=0
    else:
        y+=movey

今、私が試しているのはこれです....

4

3 に答える 3

3
g = -1  # gravity
floor = 0  # where frog stands


class Frog():  # say you have a frog
    def __init__(self):
        self.y = 0  # distance from ground
        self.y_speed = 0  # speed
        self.jumping = 0  # jumping status

    def jump(self):
        if self.jumping == 0:
            self.y_speed = 9  # a big jump
            self.jumping = 1  # change jumping status
        # I want the small jump available only when falling
        elif self.jumping == 1 and self.y_speed <= 0:
            self.y_speed = 5  # a small one
            self.jumping = 2  # change jumping status

    def update(self):  # this is called by mainloop
        self.y_speed += g  # change the acceleration
        self.y = max(self.y + self.y_speed, floor)  # don't want fall off
        if self.y == 0:  # on the ground again!
            self.jumping = 0  # reset jump
            self.y_speed = 0  # reset speed
于 2013-03-17T17:56:37.797 に答える
1

2 つの例:

ダブルジャンプ間の最小時間を強制することもできますが、例を単純化するために省略しました。他に質問があればお尋ねください。

于 2013-03-17T17:56:35.857 に答える
-2

カウンターを使う方が簡単ではないでしょうか? プレーヤー内でカウンター変数 = 0 を設定し、ジャンプを定義してカウンター += 1 を設定します。次に、カウンター < 2 の場合はジャンプできます。番号 ?

于 2014-10-14T22:34:27.507 に答える