1

作業中のゲームのレベルエディタを作成しています。画像をフォルダに入れて、エディタで使用できる90x90pixブロックから930x30pixブロックに分割できるように設定しました。30x30ブロックを作成するコードは次のようになります。

    one = Image.new('RGBA',(30,30),(255,255,255,0))
    two = Image.new('RGBA',(30,30),(255,255,255,0))
    three = Image.new('RGBA',(30,30),(255,255,2550,0))
    four = Image.new('RGBA',(30,30),(255,255,255,0))
    five = Image.new('RGBA',(30,30),(255,255,255,0))
    six = Image.new('RGBA',(30,30),(255,255,2550,0))
    seven = Image.new('RGBA',(30,30),(255,255,2550,0))
    eight = Image.new('RGBA',(30,30),(255,255,255,0))
    nine = Image.new('RGBA',(30,30),(255,255,255,0))

    for y in range(1,iy):
        print ((y/9)*10),"%"
        for x in range(1,ix):
            pixel = im.getpixel((x,y))
            if y<30:
                if x<30:
                    one.putpixel((x,y),pixel)
                elif x<60:
                    four.putpixel((x-30,y),pixel)
                else:
                    seven.putpixel((x-60,y),pixel)
            elif y <60:
                if x <30:
                    two.putpixel((x,y-30),pixel)
                elif x <60:
                    five.putpixel((x-30,y-30),pixel)
                else:
                    eight.putpixel((x-60,y-30),pixel)
            else:
                if x < 30:
                    three.putpixel((x,y-60),pixel)
                elif x < 60:
                    six.putpixel((x-30,y-60),pixel)
                else:
                    nine.putpixel((x-60,y-60),pixel)
    add = [im,one,two,three,four,five,six,seven,eight,nine]
    bdict[s]= add
    cd = os.getcwd()+'\\'+s +'\\'
    one.save(cd + s +'one.png')
    two.save(cd+s+'two.png')
    three.save(cd+s+'three.png')
    four.save(cd+s+'four.png')
    five.save(cd+s+'five.png')
    six.save(cd+s+'six.png')
    seven.save(cd+s+'seven.png')
    eight.save(cd+s+'eight.png')
    nine.save(cd+s+'nine.png')
    im.save(cd + fol)
    im = os.getcwd()+'\\'+fol
    one = os.getcwd()+'\\'+s+'one.png'
    two =os.getcwd()+'\\'+s+'two.png'
    three =os.getcwd()+'\\'+s+'three.png'
    four = os.getcwd()+'\\'+s+'four.png'
    five =os.getcwd()+'\\'+s+'five.png'
    six =os.getcwd()+'\\'+s+'six.png'
    seven =os.getcwd()+'\\'+s+'seven.png'
    eight =os.getcwd()+'\\'+s+'eight.png'
    nine =os.getcwd()+'\\'+s+'nine.png'
    add = [im,one,two,three,four,five,six,seven,eight,nine]           
    bdict[s]= add
    maxes[0]+=1

2つのブロックが重なると、この奇妙な白いバーが表示され、左上と右のブロックと左下のブロックの周りにのみ表示されます。これは次のようになります。 オーバーラップエラー

エラーが発生する可能性がある他の唯一の場所は、コードがスプライトをロードする場所です。ここでは、groundsはさまざまな長方形を含む配列であり、gspritesはPygameによってロードされる形式のさまざまなスプライトを含む配列です。

for number in range(0,len(grounds)):
    cr = grounds[number]
    cr.left += xscroll
    cr.top += yscroll
    pygame.draw.rect(windowsurface,clear,cr)
    change = pygame.transform.scale(gsprites[number],(30,30))
    windowsurface.blit(gsprites[number],cr)
    cr.left -= xscroll
    cr.top -= yscroll

私はWindowsVista32ビットを実行しています。

4

1 に答える 1

0

気にしないで、私はそれを理解しました。スプライトをブリットする前に長方形を描いていたところ、スプライトの下に表示されていました。

于 2012-06-26T23:37:07.750 に答える