この記事を読むことで、ループとIF文を組み合わせて、Pythonでドット絵を描くことが出来ます。
今回扱うドット絵はインベーダーゲームです。
配列の要素が1だったら「□」、0だったら「半角スペース」をドットとして出力します。
二次元リストを扱うので、列の最後の所まで行ったらドットを出力したのちに改行します。
要素の中身(ドット)と、リストの添字(i,j)を扱うので、enumerateを使います。
リストの最後の要素は、リストの添字が0から始まるので、リストの長さ-1になります。jがリストの長さ-1だったらドットを出力した後に改行をします。
Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介
おはこんばんにちは!
うにゃうにゃエンジニアの猫です(=^・^=)
年齢バレバレですが、子どもの頃「インベーダーゲーム」というものをやったことがあります。
そのインベーダーのキャラクターを二次元リストを使ってドット絵で描いてみます。
実行結果とコードです。
コードの詳細を見ていきましょう。
まず、ドット絵を表す二次元リストをこのように作りました。
#インベーダーのドット絵の元になる二次元リスト
invader=[
[0,0,1,0,0,0,0,0,1,0,0],
[0,0,0,1,0,0,0,1,0,0,0],
[0,0,1,1,1,1,1,1,1,0,0],
[0,1,1,0,1,1,1,0,1,1,0],
[1,1,1,1,1,1,1,1,1,1,1],
[1,0,1,1,1,1,1,1,1,0,1],
[1,0,1,0,0,0,0,0,1,0,1],
[0,0,0,1,1,0,1,1,0,0,0]
]
リストの「列の」長さは下記のように求めます。
invader[0]としているのは、リストの長さは各行同じなので、リストinvaderの1行目の、すなわちinvader[0]の長さを求めます。
リストの添字が0から始まるので-1しています。
num=len(invader[0])-1
numに列-1が入りました。
ループの中でIF分岐を使ってドット絵を書いていきます。
行をi、列をjとしています。
jがnumと等しく無い時(j!=num)、1行分のドットを表示させるので、改行させません。
jがnumと等しい時(j==num)は、ドットを出力してから改行しています。
jがnumと等しくない、and(且つ)、ドットが1の時は「□」を出力、ドットが0の時は「半角スペースを出力」しています。
jがnumと等しい、且つ、ドットが1の時、0の時はドットの出力後に改行しています。
for i,chara in enumerate(invader):
for j,dot in enumerate(chara):
if j!=num and dot==1:
print('□',end='')
elif j!=num and dot==0:
print(' ',end='')
else:
if j==num and dot==1:
print('□')
elif j==num and dot==0:
print(' ')
ここまでの全コードは、この様になります。
#インベーダーのドット絵の元になる二次元リスト
invader=[
[0,0,1,0,0,0,0,0,1,0,0],
[0,0,0,1,0,0,0,1,0,0,0],
[0,0,1,1,1,1,1,1,1,0,0],
[0,1,1,0,1,1,1,0,1,1,0],
[1,1,1,1,1,1,1,1,1,1,1],
[1,0,1,1,1,1,1,1,1,0,1],
[1,0,1,0,0,0,0,0,1,0,1],
[0,0,0,1,1,0,1,1,0,0,0]
]
#インベーダーの二次元リストの列数を求める
num=len(invader[0])-1
#二次元リストの要素が1の時に「■」、0の時は全角スペース
for i,chara in enumerate(invader):
for j,dot in enumerate(chara):
if j!=num and dot==1:
print('□',end='')
elif j!=num and dot==0:
print(' ',end='')
else:
if j==num and dot==1:
print('□')
elif j==num and dot==0:
print(' ')
最後までお読みいただきありがとうございました(=^・^=)mm。。。
■ 参考文献の紹介 ■
じっくり丁寧にPythonを学びたい方向けの書籍を紹介します。
Pythonを基礎から中級程度まで丁寧に学びたい方におすすめの書籍です。
まずはpaizaラーニングなどの学習コンテンツで1〜2巡(苦手な所は納得がいくまで何巡でも)してからこの本で学ぶと、自分の学習状況をブログなどでアウトプット出来るようになり、また、エラーなどの不明点を調べられる力もついていきます。