シンプルな Building クラスを作成できます。
class Building:
def __init__(self, x, y, w, h, color):
self.x = x
self.y = y
self.w = w
self.h = h
self.color = color
def draw(self):
// code for drawing the rect at self.x,self.y
// which is self.w wide and self.h high with self.color here
窓に関しては、建物ごとに [(x, y, w, h)] のようなリストで指定するか、単純に次のような建物クラスを作成できます。
class Building:
def __init__(self, x, y, w, h, color, wx, wy):
self.x = x
self.y = y
self.w = w
self.h = h
self.color = color
self.wx = wx
self.wy = wy
def draw(self):
// code for drawing the rect at self.x,self.y
// which is w wide and h high with self.color here
// Draw wx windows horizontally and wy windows vertically
for y in range(0, self.wy):
for x in range(0, self.wx):
// draw Window code here
もう 1 つのアプローチは、建物を画像に「プリレンダー」してから表示することです (建物がたくさんある場合は、これも高速になる可能性があります)。
そして、ゲームループは次のようになります
buildingList = [Building(0, 0, 15, 50, RED), Building(0, 0, 40, 30, BLUE)]
while gameIsRunning:
// Clear screen code here
// Show Building
for b in buildingList:
b.draw()
// More stuff
これは、何かを描画するための最も基本的なアプローチです。この方法でキャラクター、キー、またはキャラクターの上にあるはずのタイルさえも描くことができます。たとえば、Tuffのようなプラットフォーマーの水タイルです。ここの木も 1 つの大きなリストに含まれています (実際には、パフォーマンス上の理由から 1 1/2 の周囲の画面にある木を含む小さなリストを維持しています。1500 以上の「木」があります)。
編集: ウィンドウの色が異なる場合、2 つの解決策が考えられます。
建物ごとに異なる窓の色を使用する:
class Building:
def __init__(self, x, y, w, h, color, wx, wy, windowColor):
self.x = x
self.y = y
self.w = w
self.h = h
self.color = color
self.wx = wx
self.wy = wy
self.windowColor = windowColor
def draw(self):
// code for drawing the rect at self.x,self.y
// which is self.w wide and self.h high with self.color here
// Draw wx windows horizontally and wy windows vertically
for y in range(0, self.wy):
for x in range(0, self.wx):
// draw Window code here using self.windowColor
可能性 2、ウィンドウごとに異なる色:
class Building:
def __init__(self, x, y, w, h, color, windows):
self.x = x
self.y = y
self.w = w
self.h = h
self.color = color
self.wx = wx
self.wy = wy
self.windows = windows
def draw(self):
// code for drawing the rect at self.x,self.y
// which is self.w wide and self.h high with self.color here
// Draw all windows
for w in windows:
// draw Window at w[0] as x, w[1] as y with w[2] as color
// Create a building at 0,0 that is 20 wide and 80 high with GRAY color and two windows, one at 2,2 which is yellow and one at 4, 4 that's DARKBLUE.
b = Building(0, 0, 20, 80, GRAY, [(2, 2, YELLOW), (4, 4, DARKBLUE)])