カタン、Pythonでは?―― タイルの色を変えてみる
正六角形19枚を並べることができたので、今度は、タイルの色を変えてみることに挑戦。タイルの色は、はやりCSV形式で保存して、numpyの配列として読み込む。
2つの配列から要素を一つずつ読み込んで作業するには、for〜zipというやり方を使うらしい。やってみたら、何とかうまく行った。
import numpy as np
import pygame
t1 = np.loadtxt(fname='dataC2.csv', dtype=float, delimiter=",", skiprows=1)
tile2 = np.loadtxt(fname='dataC.csv', dtype=float, delimiter=",", skiprows=1)
t3 = np.array([[0, 0], [-17.32, 10.00], [-17.32, 30.00], [0.00, 40.00],[17.32, 30.00],[17.32, 10.00]])
t4 = [ ]
for t0b in t1:
t0c = t0b + t3
t0d = t0c.tolist()
t4.append(t0d)
t4 = np.array(t4)
pygame.init()
screen = pygame.display.set_mode
gray = (237, 237, 237)
pygame.init()
screen = pygame.display.set_mode*1
myclock = pygame.time.Clock()
screen.fill(gray)
for hec, token in zip(t4, tile2):
poslist = hec
tok1 = token
pygame.draw.polygon(screen, tok1, poslist)
pygame.display.flip()
endflag = 0
while endflag ==0:
for event in pygame.event.get():
if event.type == pygame.QUIT: endflag = 1
myclock.tick(60)
pygame.quit()
結果はこれ。
dataC2には正六角形19個の基準となる頂点の位置が一つずつ入っており、それをt1にいれる。
dataCには、正六角形を塗りつぶす色6種類が入っており、それをtile2に入れる。ちなみに、砂漠を黒にしたため、screenの色を黒ではなく、灰色にした。その方が見やすいだろう。
変数名の付け方が無茶苦茶なのは、いろいろ試行錯誤した名残り。今後の事を考えれば整理した方がいいだろうけど、パワーが尽きている。
*1:640, 480