カタン、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()

 

結果はこれ。

f:id:chamcham5628:20200927235735p:plain

 

dataC2には正六角形19個の基準となる頂点の位置が一つずつ入っており、それをt1にいれる。

f:id:chamcham5628:20200927235811p:plain

 

dataCには、正六角形を塗りつぶす色6種類が入っており、それをtile2に入れる。ちなみに、砂漠を黒にしたため、screenの色を黒ではなく、灰色にした。その方が見やすいだろう。

f:id:chamcham5628:20200927235848p:plain

変数名の付け方が無茶苦茶なのは、いろいろ試行錯誤した名残り。今後の事を考えれば整理した方がいいだろうけど、パワーが尽きている。

*1:640, 480