COLUMN ファイルの拡張子を表示するには ? ファイルには「 Python のソースコードファイル」「テキスト文書ファイル」「 MP3 音楽 ファイル」「 JPEG 画像ファイル」など、さまざまな種類があります。これらを簡単に見分 けることができるように、ファイル名の末尾に拡張子という記号が付けられています。テ キストファイルであれは「〇〇 . txt 」、 JPEG 画像であれば「〇〇 .jpg 」といった具合です。 Python のソースコードファイルは「〇〇 . py 」になるので覚えておきましよう。 拡張子は Windows の初期設定では隠されていて、普通に使う分には意識しなくても いいのですが、プログラミングするときはファイルの種類を正確に知る必要があります。 Windows10 で拡張子を表示するには、フォルダーウインドウを開いて次のように操作し ます。 ロ X く表示〉タブをクリック ホーム共有表示 ーコ 1 プレと - アンドウ 中アイコンを小アイコン ファイル名立子 ナと - ション 1 詳アンドウ べえ はは一覧 ロ第しファイル ンドウ・ 現在の凸ー べイン レイアウト くファイル名拡張子〉をオンにする ドキュメント , 物 , ↑」 , PC 》 ← クイックアクセス のネットワ - ク ・ 4 ホ - ムグループ ファイル ( h 叩 7 ・円 ファイルに拡張子が付いた 、 e ( h 叩 7 ht ( hap7 イ クイックアクセス 、 On を のネットワーク ・ 4 ホームグループ 第を一逼 (hおP8-(h誂心 . pn ( hap8 ・ b “ kl ・凹 9 ( h 叩 8 ・ b れ png ( h 叩 8 ・ b 。 9 ( h32 ・ b “ 9 9 9 画像ファイルの拡張子 ( p8 ・ ( h & 3.pn 9 テキストファイルの拡張子 を 0 ・ txt 20 ( ト ap 「
ト , - にケい V 5 にじ℃ ( 第、醗 , イⅱノい ′よろしくアドベンチャー ロ 0 月◆④ あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえ おあいうえお ( hap8. py PS ( : 、 u 、 2r5 、 OhtS し、い ~ 0 て 5 、 p / て h00 ) い、い クリックされた クリックきれた クリックされた 0 メッセーシェリアをクリックすると、く端末〉バネルに「クリックされた」と表示される bind 関数でイベントを設定する これまでは「ボタン名 [ " c 〇 mmand " ] = 関数名」と書いてボタンにイベントを設定し てきましたが、ラベルの場合はこの方法で設定できません。ボタン以外のものにマウス バインド のイベントを設定するには、 bind 関数を使います。 ☆ bind 関数の書き方 オプジェクト変数 . bind ( " くイベント名 > " , 関数名 ) 0 bind は「結ひつける」 って意味なんだって。 バインターのバイントだ 254
題出力デバックコンソール windows PowerShe11 Copyright ( ( ) 2e16 Microsoft PS C:\python> python . \chap3 ホタンがクリックされました ! ホタンがクリックされました ! ホタンがクリックされました ! 1 : powershell.exe A11 rights reserved . を 十 Corporation. ・ PY 0 ウインドウのく聞く〉ボタンをクリックすると、「ホタンがクリックされました ! 」と表示される これで、 GUI プログラムのく聞く〉ボタンをクリックすると処理が実行される部分は ask ー click 関数に仮に記述した p 「 int 関数を消して、次のコードを追加します。 6 く聞く〉ボタンがワリックされたときに、 1 ~ 4 を実行する処理 ④ " 時間 " に換算した数値を吹き出しに書き込む処理 3 ・・分 " の数値を " 時間 " に換算する処理 ②テキストボックスから取り出した文字を数値 " 分 " に変更する処理 ①テキストボックスに入力された文字を取り出す処理 完成しました。残る 1 ~ 4 の処理は、 ask ー click 関数の中に記述していきます。 P. 75 で挙げた 5 つの処理を振り返りましよう。以下の処理のうち、 5 番目のコードは ホタンを押したときの処理を作る 完成です。あとは関数の内容をプラッシュアップしていくだけですね。 chap3 . py @2 7 @2 8 @2 9 @31 @3 2 @3 3 @3 4 @ 3 5 @3 6 @ 3 7 @3 8 Chapter # 答え表示 t k i n t e r . L a b e 1 ( t e x t = a n S we 「 answer . place(x=115, y = 235 ) # イベント設定 def ask_click(): val entry . get() float(val) m i n u t e S = hours round(minutes/60, 2 ) bg="white") answer["text"] st 「 ( hou 「 5 ) + ”時間だね ! ” a 5 k ( い ( k askbutton["command"]
位置を指定し忘れたり間違えたときのために、最後は e [ se にしておきます。これで L 、 C 、 R 以外を指定したときでも、中央に表示されるようになります。 ′よらし ( アンチ きやー ! ごめんなさい ! ′よろしくアンチャ - ( だめだ、全然思い出せん・・ よろしくな。 0 何回かクリックしていると キャラクターが表示される 命令のあとで自動的にメッセージを読み込ませる このゲームをテストで実行してみると、何回もクリックしないとゲームが進まないこ とに気が付くはずです。クリックイベントのたびに 1 行しか読み込まない設計なので、 「 #back 」や「 #putCha 「」などの命令を実行するにも 1 回クリッワが必要だからです。 れだとテンポが悪いので、命令のときはクリックしなくてもすぐに次の行の解読に進む ように変更しましよう。 今回は再帰関数というしくみを利用します。これは関数の中でその関数自身を呼び出 す書き方で、幅広く応用が利くテクニックです。まず、命令ではないときはメッセージを 表示してすぐに関数を脱出するようにします。次に関数の最後で decode 」 ine 関数を 呼び出します。これで命令のときだけすぐに次の処理に進むようになります。 Chapter 262
′よろしくアンチ ロ クリックしてスタート ′よろしくアドベンチ ロ X 、、クリックしてスタ - ト 0 メッセージェリアをクリックすると背景が表示される できましたね。画像をローカル変数に読み込んでしまうのは、意外とひっかかりやす いところなので、エラーも出ないのに表示されないときはその点をチェックしてみてく ださい。 キャラクター画像を表示す 3 次にキャラクターの画像を表示してみます。背景の表示とやることはそんなに変わり ませんが、今回キャラクターは左、中央、右の 3 カ所のどこかに表示します。その工夫が 必要ですね。 まず globa [ 文でキャラクター用の 3 つの変数を使用宣言します。 chap8. py @ 1 3 # 解読関数 @ 14 def decode line(event) : global current line, lcharimg, ccharimg, 「 charimg bgimg, @ 1 5 260 Chapter
フロクラき作るための環境き整えよう一 1 - 2 ( hap 「 1 v 劇 0 ( い ( 0 X 十 く Download fO 「 Windows 〉をクリック V1suaI Studi0 Code ー Doc 、 tJpdate 、 Bk»g Extensions FAQ .0 Se 朝 Do い on 1.9 iS now avallable! R を記 atX)ut the new u 「 and fixes in January. “・「 i0d を・ 0 円いし・新リ土 0 ( od を ロ C0de edit)ng. Redefined. Dow 可 0 記 fo 「 Windows 回 0 ー ー算。弋・代社代 ( ・れ 0 ・島 ・「 0- ー辷を ( 0 「 0 ( es を . を nv. 1 ・ F 「 Open 50 し rce Runs e -rywhere, く実行〉をクリック 9 ・ A ーー ( ん n ⅱ 0 のに朝・ タウンロードの表示、 フォル外を聞く VS ( e tup -1.9.1 でのダウンロードが終了しました。 '•hsu•l し。 ( 。セプトアフプ ユ - ザ - アカつント制を このアプリがデバイスに変更を加えることを許可します ⅵ、 " u 市 0 COde セットアップウイザ、一ド の開始 このプログラムはこ優財カコンビューターへー物代、地 5 社 ( ( をインストールしはす。 読行するれこ他のアプーションをすべて了してくたを、 行すをこは「はヘ」、セト巧プを材了す製こは「キャンせル」をり リめしたさい . く次へ〉をクリック VSCode くはい〉をクリック 確認済みの発行元 : Mi 050 代 ( 0 甲 0 on ファイルの入手先 : このコ、ビューター上のハードドライプ 詳細を表示 Ⅵ知・験し。 ( をセット乃プ 必要ならインス インストール先の指定 、 ( 破のインストール先を指定 トール先を変更 5 な物 ( をインストールするルクを指定、「次へ」をルうし ( く だを、 すコ計冫大勺をグルクしてくだを躑フォルダー - は「参」をグルりし ( くたさい。 く次へ〉をクリック このプログラムは最低いい掲のディスク空き物域を心要とはマ 食へ ) 〉 いいえ Ⅵ地』し朝 0 ( 0 ・セットアフプ 使用驚契約書び意 す物に以下の箋衄報をお使許諾を確認してく同 意する〉をクリック 以下 尾契め書をお読みくだ マ必要、丿まマ。 ンフトソフトウ , アライセンス阜ー マイク Ⅵ 9 」 5 れー OC 僕を ソフトンフトウ , アライセンス条 1 ( 以下、 : まライセンフ 01 」と マイク いいま は、第物とト、代 ( 復・またはお事の第をにてした 以下、一マイクロソフトーと [ く次へ〉をクリック は、上紀のノフトウ , ア ◎同す A ) ( 戻さ但 )
chap8. py elif params[@] " #b r a n ( h " message . unbind(" く Button-1>") b t n tkinter . Button(text=params[2], width=2@) branch . append(btn) btn["command"] lambda btn . place(x=3@@, y=6@+ int(params[1])*6@) jumplabel . append(params[3]) if params[4] 「 e t u r n # 再帰呼び出し decode line(None) @3 4 @3 5 @ 3 6 @3 7 @3 8 @3 9 041 @4 2 043 044 jump_to_line(int(params[l])-l) たった 1 行です。「 btn["command"] 」で設定する関数は引数を取らないので、ラムダ 式の引数の部分は飛ばして、 [ ambda のあとに : ( コロン ) を書きます。そこからあとが 関数定義です。 pa 「 ams[l] には選択肢の順番の数値が入っているので、そこから 1 引い たものを引数にして jump ー to 」 ine 関数を呼び出しています。 実行すると、上から 1 番目のボタンをクリックすると「 0 」、 2 番目のボタンをクリック すると「 1 」、 3 番目のボタンをクリックすると「 2 」と表示されるはずです。ちゃんと動 いていますね。 ′よろしくアドベンチャ - ロ 0 月◇④ おう。またな。 ( それで、私は行くことになってるのか・ 遊びに行く 帰る "indous Pou を rS 11 Copyright ( ( ) 2e16 Microsoft ( orpo 「 ion. A11 rights 「を serv を d. PS ( : 、 U 、 e 「 5 、 oht 、 u 、い nents 、 py て h00 ) 「ドト 0 ” chap8. py 6 0 選択肢のホタンをクリックすると、く端末〉バネルに対応する数値が表示される 268 Chapter
-2 フロクラき作 3 ための環境き整えよっ ' 1 ^ hap 「 1 く保存〉をクリック ・催 P487. 望 ( u 、 t511 にめ n ( いび ea れー p hon -16.1 想 e ( 四 .0 (B) について行う作を選んでください . 場所 : p hon. 併 9 ・催 P 7. m 可部 ( u 、れに n 可 ( ね ( a れー せ -3.6.1. e のタウンロードが終了しました . lnstall Pyth ( い n Now Python 朝物 f 純に“れⅵ・ 0 「朝 00 “ ( u om にを端 b ・ 5 信 NO 物 0 名前を付けて保存 キャンセル 保存 く実行〉をクリック タウンロ - ドの表示 フォルタ - を開く 実行 らい・叩 く Customize installation 〉 をクリック - う C 511im in 、い a 転 51 python windows 団駅誂 unch 調リ ( 「“ on 町 0 d ) ロ Add 12n 3. い。 PATH ら曲い・叩 すべてオンになっていることを 確認 0 tional Features 物・・物 on dccumen いむ on 和を . 、虧 p•p. wh1Ch 30 download and tns Ⅱ 0 物 Python pa ( k ~ 0 ・ 5 い tkinter and the IDLE development Ⅵ「 onm 0 :. thon : ”い・ 5 い物を 5 nd d ーわ「 3 ッ 5 : 5 し色 物げせ都 u 費” ( 「 eq Ⅷ”・地 v ・ n ) 、 the Ob ・ py ・朝し nct 「 make it e35 に′に 5 い rt PythOn. python windows く Next 〉をクリック Advanced Options ロ 5 い u A55 。。載を物ー朝 h 12n ( 駅・ 0 代 cu ⅱ n ~ 曰 d hon にⅥ ronm ぎ ロき“ 0 。 tp ” 0 第館 ~ Ⅳ ロ d 」 99 ′当 m ロⅸ n 鼾ー ( 「し ir VS 2015 ( し om 辷・ jn め : 池 n ( し。 hts リⅥ ppD 駅叭 L 。へ P 「内「 3E5 、物。 n 、ら 36 ・ 。 w pgthon windows ・い 5 : らまい・叩 く Add Python tO environment variables 〉をオン ぐ nstall 〉をクリック
本番の戦闘画面き作成しよう↓ 7 - 4 ント」を設定します。工ンディング画面が表示されないのが問題なので、 ending 関数 の最初の行に設定しましよう。 ( hap7. ・ python - v•sual 5 ⅳ朝 0 Code ヘルプ ( H ) ファイ履 F ) 編集 ( E ) 択 ( 5 ) 表示 (V) 移動向 工クスプローラー chap7py ・聞いているエデイター chap7fight. X chap7fight. py 53 # 工ンディンク表示 54 ド def ending( ) : canvas . delete("all") canvas . create rectang1e(), 6 , 629 , 434 , fill="black") canvas . create text(3ee, 2e8 , font=("I•1S ゴシック " , 15 ) , fill="white" 58 0 月◇ —pycache— Oending 関数の最初の行の左をクリックすると赤い丸が付く くデバッグ〉画面を表示してデバッグを開始します。 ( h 叩 7. - python - Ⅵ知 StudioCode ファイの第旧 (S) 表テ凹向 デバック 変数 PySpark Python ModuIe lnteg rated Termina レ C0n50厄 D. 卩 n90 Flask FIask ( 0 旧 ) 信而 d Watson Attach (Remote Debug) 構成の追加 .. くデバッグ〉をクリック く Python 〉が選ばれていることを確認 くデバッグの開始〉をクリック canvas. create_text( 39 font=("MS ゴシック " , 15 ル fill="white" text = " " " コ - ールおめてとう。 だが、君の戦いはまだ始まったばかりた。 # ホタンを効化 button_up["state" ] button down["state"] X chap7fight. py def ending(): canvas. delete("all") ^ hap 「 7 "disabled ・・ ” disabled ” 66 プログラムの先頭行で一時停止するので、く続行〉をクリックします。プログラムが 進行してゲームが起動するので、そのまま工ンディングまで進めましよう。 chap7. - 曲 on ・Ⅵ su qudio Code ヘルプ ( H ) ファイル′ F ) 編第旧ま択 ( S ) 表示Ⅳ ) 移動向 デバッグト pyv 0 ・ ( ト 3P7. py ・変数 く続行〉をクリック X chap7fight. py bmport tkinter import chap7fight マップの描画 def draw_map( ) : for y in range(), ト X HEIGHT): 0 月◆ main dOC : None package : None d Non 239 1
ボ 9 ンき押すと結果が表示せれるようにしよう 3 - 4 h 0 u r S 「 0 u n d ( m i n u t e s / 6@ , 2 ) d e f m i n u t e s t 0 h ou 「 s ( ) : 5 t 「 i n g + " 分は " + 5 t 「 ( hou r s ) + " 時間です” @@ 5 0 u t p u t print(output) m i n u t e 5 t 0 h 0 u 「 s ( ) ( hap 帚「 3 ホ 9 ンを押したときの処理を作 3 つ それでは話を元に戻し、く聞く〉ボタンをクリックしたときに実行する関数を作りま しよう。 chap3. py に次のコードを追加します。 chap3 . py # 答え表示 @ 2 7 @2 8 t k i n t e 「 . L a b e 1 ( t e x t = a n 5 we 「 @ 2 9 answer . place(x=115, y = 235 ) # イベント設定 @ 3 1 d e f a 5 k ( 1 i ( k ( ) : @ 3 2 p 「 int ( " ボタンがクリックされました ! " ) @3 3 3 4 askbutton["command"] a s k ( 1 i ( k @ 3 5 @3 6 # メインループ @3 7 @3 8 「 00t . mainloop ( ) 32 行目で ask ー click 関数を定義しました。関数の内容はひとまず p 「 int 関数で文字 を出力する内容にしています。 35 行目では、ボタンがクリックされたときに実行する 処理を設定しています。「 = 」の右側に関数名を書くときは、 ( ) を付けてはいけません。 「 askbutton["command"] = ask-click() 」と書くと、その場で関数が実行されてしまい ます。 ここまでコードが書けたら、プログラムを実行してみましよう。く聞く〉ボタンをクリッ クするたびに、 VS Code の端末ウインドウに「ボタンがクリックされました ! 」と表示 されます。 bg="white") 79