パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

pythonゲームコーディング4時間目numpyの配列保存にはまる

2017-08-11 | pygame
先ほど作成した二次元配列を保存しようとするがさっぱりうまくいかない。
原因がさっぱり

最初配列をそのまま保存しようとしますがデータが全部0が保存されているよう。

いろいろ試行錯誤してcsv形式にしました。
試行錯誤の途中で配列も一次元に変換。

numpyのバージョンも1.11を削除して1.13をインストール

読み取った後も小数点がついてきたのでキャスト
なんとか動いている状態です。

データ保存
#!/usr/bin/python
# -*- coding: utf-8 -*-
import pygame
import random
import numpy as np

mapdata = np.array([0 for y in range(150)])
screen = pygame.display.set_mode((600, 400))

def gamemain():
    np.savetxt('data1.csv', mapdata, delimiter=",")
    print np.version.full_version
    while (1):
        screen.fill((0,0,0))
        write()
        pygame.display.update()
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

def randset():
    for x in range(15):
        for y in range(10):
            mapdata[x+y*15]=random.randrange(0, 9)

def write():
    font = pygame.font.Font(None, 32)
    for x in range(15):
        for y in range(10):
            text = font.render(str(mapdata[x+y*15]), True, randcolor())
            screen.blit(text, [x*20, y*20])

def randcolor():
    return (random.randrange(0, 3)*127,random.randrange(0, 3)*127,random.randrange(0, 3)*127)

pygame.init()
randset()
gamemain()
pygame.quit()
quit()



データ読み取り
#!/usr/bin/python
# -*- coding: utf-8 -*-
import pygame
import random
import numpy as np
import time

mapdata = np.loadtxt("data1.csv", delimiter=",")
screen = pygame.display.set_mode((600, 400))

def gamemain():
    while (1):
        screen.fill((0,0,0))
        write()
        pygame.display.update()
        time.sleep(0.2)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

def write():
    font = pygame.font.Font(None, 32)
    for x in range(15):
        for y in range(10):
            text = font.render(str(int(mapdata[x+y*15])), True, randcolor())
            screen.blit(text, [x*20, y*20])

def randcolor():
    return (random.randrange(0, 3)*127,random.randrange(0, 3)*127,random.randrange(0, 3)*127)

pygame.init()
gamemain()
pygame.quit()
quit()


2時間ぐらいはまっていたかも

<参考文献>
numpy > ファイル読み書き > np.save() / np.load() / np.savetxt() / np.loadtxt() > バイナリ読み書き / csv読み書き

最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。