Bit arrow (Python)で「ライフゲーム」を作ってみました!
ライフゲームってのはマジで奥が深くて面白いので知らなかった人はぜひ調べてみてください!
Bit arrowはライブラリがほとんど使えないし無限ループ判定がシビアだし対応していない表記方法があってネットで拾ったやつもまったく動かないしでマジで苦労しましたがなんとかできましたー
学校のPythonの教科書に載っていることしか使っていません。
ちなみにプログラミングしたことなかったけど1日でPython勉強しました
手動でも自動でもマスを選択できます(重要)
コード:
import random
#平面表の作成
point = [
['xx', 'xx', 'xx', 'xx', 'xx', 'xx', 'xx', 'xx'],
['xx', '1a', '1b', '1c', '1d', '1e', '1f', 'xx'],
['xx', '2a', '2b', '2c', '2d', '2e', '2f', 'xx'],
['xx', '3a', '3b', '3c', '3d', '3e', '3f', 'xx'],
['xx', '4a', '4b', '4c', '4d', '4e', '4f', 'xx'],
['xx', '5a', '5b', '5c', '5d', '5e', '5f', 'xx'],
['xx', '6a', '6b', '6c', '6d', '6e', '6f', 'xx'],
['xx', 'xx', 'xx', 'xx', 'xx', 'xx', 'xx', 'xx']#(0,0)~(7,7)
]
point2 = [
['', '', '', '', '', '', '', ''],
['', '', '', '', '', '', '', ''],
['', '', '', '', '', '', '', ''],
['', '', '', '', '', '', '', ''],
['', '', '', '', '', '', '', ''],
['', '', '', '', '', '', '', ''],
['', '', '', '', '', '', '', ''],
['', '', '', '', '', '', '', '']#(0,0)~(7,7)
]
#平面の視覚表示
for i in range(1,7):
print('')
for j in range(1,7):
print(point[j][i],end=' ')
#一応段落
print('')
print('')
#座標の持つ値をすべて0に
for i in range(8):
for j in range(8):
point[i][j]=0
point2[i][j]=0
mode = input('モードを選択してください(マニュアル/ランダム):')
while not (mode == 'マニュアル' or mode == 'ランダム'):
mode = input("'マニュアル'または'ランダム'と入力してください:")
if mode == 'マニュアル':
while True:
xt = input('x座標を入力してください(いいえでやめる):')
while not (xt=='1'or xt=='2'or xt=='3'or xt=='4'or xt=='5'or xt=='6'or xt=='いいえ'):
xt = input("1~6の半角数字を入力してください:")
if xt == 'いいえ':
break
yt = input('y座標を入力してください(いいえでやめる):')
while not (yt=='a'or yt=='b'or yt=='c'or yt=='d'or yt=='e'or yt=='f'or yt=='いいえ'):
yt = input("小文字a~fの半角英字を入力してください:")
x = int(xt)
if yt == 'a':
y = 1
if yt == 'b':
y = 2
if yt == 'c':
y = 3
if yt == 'd':
y = 4
if yt == 'e':
y = 5
if yt == 'f':
y = 6
point[y][x]=1
if yt == 'いいえ':
break
if mode == 'ランダム':
m = int(input('出現率(0~100):'))
while m<0 or m>100:
m = int(input('0~100の有効な数字を入力してください'))
for i in range(8):
for j in range(8):
n = random.randint(1,100)
if n <= m:
point[j][i] = 1
else:
point[j][i] = 0
#座標の持つ値の表示
for i in range(1,7):
print('')
for j in range(1,7):
if point[j][i]==1:
print('██', end='')
if point[j][i]==0:
print('▒▒', end='')
#一応段落
print('')
print("'stop'を入力して終了します")
#アニメーション
while True:
loop = input('')
if loop == 'stop' or loop == 'Stop':
break
for k in range(8):
point[0][k] = 0
point[7][k] = 0
for l in range(1,7):
point[l][0] = 0
point[l][7] = 0
for i in range(1,7):
for j in range(1,7):
c = 0
for a in range(3):
for b in range(3):
c = c + point[j+b-1][i+a-1]
if int(point[j][i]) == 0:
if c == 3:
point2[j][i] = 1
else:
if c == 3 or c == 4:
point2[j][i] = 1
else:
point2[j][i] = 0
for i in range(1,7):
print('')
for j in range(1,7):
if point2[j][i]==1:
print('██', end='')
if point2[j][i]==0:
print('▒▒', end='')
point[j][i] = point2[j][i]
出力結果:
1a 2a 3a 4a 5a 6a
1b 2b 3b 4b 5b 6b
1c 2c 3c 4c 5c 6c
1d 2d 3d 4d 5d 6d
1e 2e 3e 4e 5e 6e
1f 2f 3f 4f 5f 6f
モードを選択してください(マニュアル/ランダム):うんこ
'マニュアル'または'ランダム'と入力してください:ランダム
出現率(0~100):1111111
0~100の有効な数字を入力してください44
▒▒██▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒████
▒▒▒▒▒▒████▒▒
▒▒▒▒▒▒▒▒████
██▒▒▒▒▒▒▒▒██
▒▒▒▒████████
'stop'を入力して終了します
▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒██████
▒▒▒▒▒▒██▒▒▒▒
▒▒▒▒▒▒██▒▒██
▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒██████
▒▒▒▒▒▒▒▒██▒▒
▒▒▒▒▒▒████▒▒
▒▒▒▒████▒▒██
▒▒▒▒▒▒▒▒██▒▒
▒▒▒▒▒▒██▒▒██
▒▒▒▒▒▒▒▒██▒▒
▒▒▒▒▒▒████▒▒
▒▒▒▒██▒▒▒▒██
▒▒▒▒██▒▒▒▒██
▒▒▒▒██▒▒▒▒██
▒▒▒▒▒▒██▒▒██
▒▒▒▒▒▒▒▒██▒▒
▒▒▒▒▒▒████▒▒
▒▒▒▒██▒▒▒▒██
▒▒██████████
▒▒▒▒████▒▒██
▒▒▒▒▒▒██▒▒██
▒▒▒▒▒▒▒▒██▒▒
▒▒▒▒▒▒████▒▒
▒▒██▒▒▒▒▒▒██
▒▒██▒▒▒▒▒▒██
▒▒██▒▒▒▒▒▒██
▒▒▒▒████▒▒██
▒▒▒▒▒▒▒▒██▒▒
▒▒▒▒▒▒▒▒██▒▒
▒▒▒▒██▒▒▒▒██
██████▒▒████
▒▒██▒▒▒▒▒▒██
▒▒▒▒████▒▒██
▒▒▒▒▒▒████▒▒
▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒██▒▒▒▒██
██▒▒████████
██▒▒▒▒▒▒▒▒██
▒▒▒▒████▒▒██
▒▒▒▒██████▒▒
▒▒▒▒▒▒▒▒▒▒▒▒
▒▒████▒▒▒▒██
▒▒▒▒████▒▒██
▒▒▒▒▒▒▒▒▒▒██
▒▒████▒▒▒▒██
▒▒▒▒██▒▒██▒▒
▒▒▒▒▒▒▒▒▒▒▒▒
▒▒████████▒▒
▒▒██████▒▒██
▒▒██▒▒██▒▒██
▒▒██████████
▒▒██████▒▒▒▒
▒▒▒▒████▒▒▒▒
▒▒██▒▒▒▒██▒▒
██▒▒▒▒▒▒▒▒██
██▒▒▒▒▒▒▒▒██
██▒▒▒▒▒▒▒▒██
▒▒██▒▒▒▒▒▒▒▒
▒▒▒▒████▒▒▒▒
▒▒████████▒▒
████▒▒▒▒████
████▒▒▒▒████
████▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒
▒▒██▒▒▒▒██▒▒
██▒▒▒▒▒▒▒▒██
▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒██▒▒████
████▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒████
▒▒██▒▒▒▒▒▒▒▒
▒▒██▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒stop