迷路完成
前回の続きで迷路を完成させました。
学んだこと
・二重ループのforの使い方
・数値で壁と床を表す方法
・条件分岐の使い方
目次
- プログラム実行結果
- プログラム解説(一部のみ抜粋)
実行結果
プログラム解説
def key_down(e): #キーが押された時に行う処理 global key key=e.keysym #keysymには押されたキーの情報が入る def key_up(e): #キーが離された時に行う処理 global key key="" #キーが離された時、キーの情報を空にする mx=1 my=1 def main_proc(): global mx,my if key == "Up"and maze[my-1][mx]==0: #upのキーが押されたら my=my-1 #キャラクターのy座標を-20 if key == "Down"and maze[my+1][mx]==0: my=my+1 if key == "Left"and maze[my][mx-1]==0: mx=mx-1 if key == "Right"and maze[my][mx+1]==0: mx=mx+1 canvas.coords("MYCHR",mx*80+40,my*80+40) #計算したxとy座標にキャラを表示 root.after(300,main_proc) root=tkinter.Tk() root.title("動きます") root.bind("<KeyPress>",key_down) #keyが押された時に行う処理を指定。 root.bind("<KeyRelease>",key_up) #keyが離された時に行う処理を指定。 canvas=tkinter.Canvas(width=800,height=560,bg="white") canvas .pack() maze=[ #床と壁を数値に置き換える。床を0、壁を1 [1,1,1,1,1,1,1,1,1,1], [1,0,0,0,0,0,1,0,0,1], [1,0,1,1,0,0,1,0,0,1], [1,0,0,1,0,0,0,0,0,1], [1,0,0,1,1,1,1,1,0,1], [1,0,0,0,0,0,0,0,0,1], [1,1,1,1,1,1,1,1,1,1] ] for y in range(7): #yは0-6まで繰り返す for x in range(10): if maze[y][x] ==1: #maxe[y][x]が1,つまり壁なら灰色の四角を表示させる canvas.create_rectangle(x*80,y*80,x*80+79,y*80+79,fill="skyblue",width=0)
感想
今までのプログラムを合体させ迷路プログラムを完成させました
条件分岐、二重のforなど難しいことだらけですがこれからも頑張ります!!