さて、私は pygame で小さなゲームを作成し、タイルを多次元配列に生成してマップを構築しています。そのために、2 つの for ループを使用しています。
def create(this, t):
if t == "grasslands":
for j in range(0, this.numRows):
for i in range(0, this.numColumns):
this.column.append(this.Tile("grass", j * this.tileWidth, i * this.tileHeight))
this.row.append(this.column)
j * this.tileWidthの値は、タイルの初期化に正しく渡されます。ただし、column[whatever].x値はまだ 0 です。y値は問題なく設定されます。jの代わりにiまたはその他の値を使用すると、問題なく動作します。これは私が間違っていることですか、それともPythonで何かおかしなことですか?
mapgen.py
import pygame
from sprite import *
from assets import *
class mapG:
def __init__(this, resw, resh):
this.numRows = 3
this.numcolumns = 3
this.tileWidth = 128
this.tileHeight = 128
this.row = []
this.column = []
this.width = this.numRows * this.tileWidth
this.height = this.numcolumns * this.tileHeight
def create(this, t):
if t == "grasslands":
for j in range(0, this.numRows):
for i in range(0, this.numcolumns):
this.column.append(this.Tile("grass", j * this.tileWidth, i * this.tileHeight))
this.row.append(this.column)
def tileAt(this, x, y):
pass
def moveRight(this):
for j in range(0,this.numRows):
for i in range(0, this.numcolumns):
this.row[j][i].incX(1)
def Update(this, src):
for j in range(0,this.numRows):
for i in range(0, this.numcolumns):
this.row[j][i].Update(src)
print(this.row[j][i].y, this.row[j][i].x)
class Tile:
def __init__(this, name, xpos, ypos):
this.y = ypos
this.x = xpos
this.image = assets.tile[name + ".png"]
this.sprite = sprite(this.image, this.x, this.y, 100, 100)
def incX(this, amount):
this.sprite.IncX(amount)
def decX(this, amount):
this.sprite.DecX(amount)
def incY(this, amount):
this.sprite.IncY(amount)
def decY(this, amount):
this.sprite.DecY(amount)
def Update(this, src = None):
if src != None:
this.sprite.Update(src)
sprite.py
import pygame
import assets
class sprite:
def __init__(this, image, xpos, ypos, width = None, height = None):
this.image = image
this.x = xpos
this.y = ypos
this.width = width
this.height = height
if this.width != None and this.height != None:
this.image = pygame.transform.scale(image, (this.width,this.height))
def GetPos(this):
return (this.x, this.y)
def IncX(this, amount):
this.x += amount
def IncY(this, amount):
this.y += amount
def DecX(this, amount):
this.x -= amount
def DecY(this, amount):
this.y -= amount
def Update(this, src = None):
if src != None:
src.blit(this.image, this.GetPos())