かなり具体的な質問があります:
\033[
構文を使用して特定の場所に文字を出力したい。これは、以下のコードが行うべきことです: (dictcells
は同じキーを持ちますcoords
が、値として または のいずれ'*'
か'-'
を持ちます。)
coords = {'x'+str(x)+'y'+str(y) : (x,y) for x,y, in itertools.product(range(60), range(20))}
for key, value in coords.items():
char = cells[key]
x,y = value
HORIZ=str(x)
VERT=str(y)
char = str(char)
print('\033['+VERT+';'+HORIZ+'f'+char)
ただし、これを無限の while ループに入れると、常に同じ文字が同じ位置に出力されるとは限らないことに気付きました。わずかな変更しかありませんが、一部を削除して、いくつかのループの後に元に戻します。私はすでにリストで試してみましたが、問題なく動作しているように見えるので、辞書と何か関係があると思う傾向がありますが、それが何であるかわかりません。ここでコンソールで問題を確認できます: SharedConsole .この問題に関するすべてのヒントに満足しています。
関連トピック: 印刷後、dict の値にいくつかの変更を加える必要がありますcells
が、理由は不明ですが、最初の 2 つのルールのみが実行され、残りは無視されます。population
ルールは、セルの周囲にいくつの近隣 ( にあります) があるかをテストし、それに応じたルールを適用する必要があります。これの私の実装では、ある種の奇妙な腫瘍の成長があります(セルが死ぬはずの周りに3つ以上ある場合、発生しないはずです)(FreakingTumorを参照):
if cells_copy [coord] == '-':
if population == 3:
cells [coord] = '*'
if cells_copy [coord] == '*':
if population > 3:
cells [coord] = '-'
elif population <= 1:
cells [coord] = '-'
elif population == 2 or 3:
cells [coord] = '*'
変数を何度かチェックしたpopulation
ので、それは問題ではないと確信しています。遅いコンソールで申し訳ありません。
前もって感謝します!キリル