-1

小さなプラットフォーマー用に、画面の下部に読み込まれるフロアを作成しようとしています。私もこの方法でそれを行っているので、後で無限にロードするよりも、カメラだけに床荷重を持たせる方が簡単になると思います. 私は解決策を見つけようとしましたが、「N」を関数として言及していないのでわかりません。ヘルプや一般的な提案をいただければ幸いです。そして、はい、私は今そこにいくつかの役に立たないものがあることを知っていますが、私はまだそれらを回避する必要があります(FPS、BASICFONT)

def drawTiles():
    N = 0
    while (N < tilesNeeded):
        pygame.draw.rect(DISPLAYSURF, GREEN, (20(N), floorx, TILESIZE, TILESIZE))
        pygame.draw.rect(DISPLAYSURF, LIGHTGREEN, ((TILESIZE/4) + (20(N)), (floorx + (TILESIZE/4)), TILESIZE / 2, TILESIZE / 2))
        N = N + 1

これが見るべきプログラム全体です

import pygame, sys, random
from pygame.locals import *

TILESIZE = 20
WINDOWWIDTH = 640
WINDOWHEIGHT = 480
FPS = 30
floorx = (WINDOWHEIGHT - (TILESIZE))
floory = (WINDOWWIDTH / TILESIZE)
TileOffset = 20
tilesNeeded = (WINDOWWIDTH / TILESIZE)



BLACK =         (  0,   0,   0)
WHITE =         (255, 255, 255)
SKYBLUE =       (200, 210, 255)
DARKTURQUOISE = (  3,  54,  73)
GREEN =         (  0,  92,   7)
LIGHTGREEN =    (  0, 135,  15)


def main():
    global FPSCLOCK, DISPLAYSURF, BASICFONT, TILESIZE, floorx, floory, floorCovered, tilesNeeded

    pygame.init()
    FPSCLOCK = pygame.time.Clock()
    DISPLAYSURF = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT))
    pygame.display.set_caption('Alpha One')

    DISPLAYSURF.fill(SKYBLUE)

    drawTiles()



    while True:
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()

        pygame.display.update()

def drawTiles():
    N = 0
    while (N < tilesNeeded):
        pygame.draw.rect(DISPLAYSURF, GREEN, (20(N), floorx, TILESIZE, TILESIZE))
        pygame.draw.rect(DISPLAYSURF, LIGHTGREEN, ((TILESIZE/4) + (20(N)), (floorx + (TILESIZE/4)), TILESIZE / 2, TILESIZE / 2))
        N = N + 1





if __name__ == '__main__':
    main()
4

1 に答える 1

3

これが問題です:

    pygame.draw.rect(DISPLAYSURF, GREEN, (20(N), floorx, TILESIZE, TILESIZE))

特に20(N)Python では、オブジェクト 20 を引数 N で呼び出しているように見えますが、20 は呼び出し可能な整数ではないため、例外がスローされます。

ということ20*Nですか?

ところで、よりpythonicはwhile (N < tilesNeeded):asfor N in range(tilesNeeded):と書くことであり、明示的にインクリメントする必要はありません。

于 2013-04-11T04:12:22.580 に答える