結果 - みる会図書館


検索対象: 12歳からはじめるゼロからのPythonゲームプログラミング教室
58件見つかりました。

1. 12歳からはじめるゼロからのPythonゲームプログラミング教室

、 4 - 1 条件によって何きさせるき変えよっ それでは、実際に条件分岐を使ってみます。作業フォルダーのく python 〉フォルダー の中に新しく「 chap4. py 」を作成し、次のソースコードを入力してみましよう。 chap4 - - Ⅵ su stucf'0 code ファイ取 F ) 編第 ( E ) 選 ( 5 ) 表示移動 ( G ) ヘルプ ( H ) 工クスプローラー (h3餌 . py ・聞いているエデイター chap4. py PYTHON chap2. 1 月◆〇 Chap 「 4 0 「 chap4. py 」を作成 chap4 ・ py 1 i f n u m p r i n t ( " n um は 1 です " ) 1 これは変数「 num 」が「 1 」と等しい場合に「 num は 1 です」と表示するプログラムです。 変数の「 num 」という名前は「数値」を意味する「 numbe 「」という英語の省略形です。 さて、これを実行してみましよう。 PS C:\python> python chap4. py num は 1 です PS ( : \ thon> 0 実行結果 ソースコードを次のように書き換えてみ 「 num は 1 です」と表示されました。では、 ましよう。 chap4. py 3 @@ 2 @@ 3 @@ 5 n u m i f n u m p 「 i n t ( " n um は 3 です " ) i f n um > = 4 p 「 i n t ( " n u m は 4 以上です " ) i f num > 2 print("num は 2 より大きいです " ) 1 ~ 3 行目は 1 つ前の例と同じですが、そのあとに if 文を 2 つ追加しました。まず、 4 行目は 2 行目と違う条件の if 文を書きました。このとき、インデントを減らすのを忘れ 3

2. 12歳からはじめるゼロからのPythonゲームプログラミング教室

ーはじめに一 人工知能 ( 機械学習 ) などのプームが追い風となって大人気の Python ですが、 研究所などの現場では、キーボードから文字のコマンドを打ち込んで文字で結果 キャラクターベースドユーザーインターフェース を受けとる CUl(Character-based Userlnterface) で使われることが多いよう です。 CUI はプログラム自体はシンプルですが、プログラムの動きを理解していない と裏側で何が起きているのかがイメージしにくい面があります。 そこで本書では、イラストをふんだんに使ったミニゲームを作り、初心者にも結 果がわかりやすい紙面を目指しました。本書のサンプルのような、ウインドウに グラフィカル ボタンや画像を配置して、マウスで操作できるようにした画面を GUI(G 「 aphi ( ユーザーインターフェース UserInterface) というのですが、 CUI に比べるとプログラムは長くなってしま います。例えば 2 章で作る C 団プログラムは 3 行ですが、ほぼ同じことをする 3 章の G 団プログラムは、空白行やコメント文を削っても 24 行あります。その代 わり、「ここの数値を変えるとボタンが上に動く」という具合に、誰でもわかりや すいところでいろいろ試せます。そうやって GUI で経験を積んでいけば、やがて CUI も楽しくなってくるはずです。 ちなみに本書では、 Python に標準で付属している GUI 作成ライプラリの 「 tkinte 「」を使用しています。ゲーム専用ではありませんが、実用アプリの画面作 成にも使えます。ぜひいろいろなプログラム作りに役立ててください。 この本が、皆さんが Python の広い世界に踏み出していくきっかけとなること を願っています。 最後に、本書を執筆する機会を与えていただいたラトルズさま、かわいらしい キャラクターを産み出していただいた雪印さま、そして共著者の澤田くんと冨士 登くん、デザインと DTP を担当してくれた風間くん他、本書の制作にご協力いた だいた皆さまに心より感謝申し上げます。 2017 年 3 月著者を代表して 大槻有一郎

3. 12歳からはじめるゼロからのPythonゲームプログラミング教室

7 - 1 オフジェワト指向とワラスについて勉強しよう コンストラクタと属性を作 3 う アトリビュート クラスには関数の他に属性 (Attribute) と呼ばれる変数を持たせることができ、オプ ジェクトの中に何かのデータを記憶させるために使います。関数内で定義したローカル 変数が関数から出ると消えてしまいますが、属性はオプジェクトが消滅するまで残りま す。 python ではオプジェクトを作成するときに一 init ーという特殊な関数が自動的に 呼び出されるルールになっているので、その中で属性を定義します。ーアンダーバーが 前後に 2 つ付いていて呼びにくそうですが、普通はこの関数のことをコンストラクタ (constructor) と呼びます。オプジェクトを作る者という意味です。 それではコンストラクタを定義し、 name という属性を持たせてみましよう。属性を 定義するために先ほど登場した se げを使用します。 chap7-class . py # クラスの定義 @@ 1 ( 1 a 5 5 C h a 「 a Te 5 t : init_(self) : def self . name = ”俺” d e f f i gh t ( 5 e 1 f ) : p 「 i n t ( " 戦うそ ! " ) # クラスの使用 ( h a 「 a 1 C h a 「 a Te s t ( ) print(charal . name) @ 1 @ ( h a r a 1 . f i gh t ( ) @ 1 1 コンストラクタは「クラス名 ( ) 」でオプジェクトを作ったときに自動的に呼び出され ます。確認のために p 「 int 文で name 属性を表示してみます。 PS C:\Users\ohtsu\Documents\python> python chap7-class ・ py 戦うそ ! PS ( : \Users\ohtsu\Documents\python> 0 実行結果 Chapte 「 7 se [ f はオプジェクト自身を表し、次のようにクラス内の他の属性や関数を利用する際 にも使えます。 fight 関数で name 属性を利用してみます。 1 99

4. 12歳からはじめるゼロからのPythonゲームプログラミング教室

ボ 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

5. 12歳からはじめるゼロからのPythonゲームプログラミング教室

スコードき見やすくしよう一 - - 5 関数き使って、 / ー @2 9 # グラフ表示関数 def draw_graph() : @31 @ 3 2 5 t a 「 t x X @ 3 3 「00t . update() @3 4 time . sIeep(O . 5) @ 3 5 canvas . delete("graph") @3 6 fo 「 i i n 1 i st : @3 7 canvas . create_rectangle(), y, x + i ☆ width—px, @3 8 outline="blue" y + height_px, fill="blue" @3 9 tag="graph") y + height_px + distance_px e41 Y d i sp + s t 「い ) + 042 # print(disp) 043 # disp 044 関数の中身はカット & ペーストで移動します。移動したらキーやキー + 〕 キーを使用してインデントを合わせましよう。インデントがきれいに整ったらプログラ ムを実行してみましよう。 PS C:\python> python chap5-3. py Traceback (most recent ( a11 last) : FiIe "chap5-3. py", line 27 in く module> draw_graph( ) 0 実行結果。 NameError が発 NameError: name 'draw_graph ・ is not defined 生してしまった。 これを実行するとエラーが出てしまいました。工ラーメッセージには「 d 「 aw ー g 「 aph という名前の関数が定義されていません」とあります。どうやら単純に文を移動するだ けではダメのようですね。 阯関数を定義する位置に注意しよう 「 d 「 aw ー g 「 aph という名前の関数が定義されていません」というエラーメッセージが 出ましたが、「関数はちゃんと定義したのにおかしい ! 」と思いますよね。実は Python の関数は使用する前に定義しなければいけないのです。 Python はソースコードを上か ら下に読んでいくので、定義する前の関数は使用できません。定義する前の変数を使お うとしてエラーが発生するのと同じですね。今回の場合は 27 行目で d 「 aw ー g 「 aph 関数 を使用しているのに対し、関数を定義しているのは 31 行目です。 d 「 aw-graph 関数を カット & ペーストで移動 ( hap 「 5 1 53

6. 12歳からはじめるゼロからのPythonゲームプログラミング教室

- 1 最初のフロクラき書いてみよう 2 パネルが表示される 閤題出力デバッグコンソール く端末〉の「フォルダー名 > 」に続 Windows PowerShe11 AI けて「 python chap2. py 」と入力 Copyright ( ( ) 2e16 microso t Corporation. し、匡可司キーを押す PS C:\python> python chap2. py Cha p 「 2 デバッグコンソール 出力 閤題 Wind 5 PowerShe11 ight ( ( ) 2e16 microsoft Corporation . A11 right Copy thon> python chap2. py PS C Say He110 ! PS C: pyt on 〉 0 実行結果 く端末〉パネルに「 Say HeIIo! 」と表示されれば、プログラムが正常に動作したことにな ります。もし工ラーが出るようであれば、 26 ページのソースコードと自分の書いたソー スコードを見比べて、打ち間違えがないかをもう一度確認してみてください。 く端末〉バネルで再度プログラムを実行するときは、キーボードの国キーで 1 つ前に 実行したコマンドを呼び出すことができます。違うソースファイルを実行する場合も、 国キーで 1 つ前のコマンドを表示してからファイル名を変更して実行するとスムーズ にプログラムを実行できます。 エラーが表示されたら ? ソースコード中に間違いがある場合、く端末〉バネルに「 T 「 aceback 」と「 E 「「 0 「」が表 示されます。 T 「 aceback はプログラムを実行中にどこの行でエラーが発生したかを表 示し、その下にそれがどういうエラーなのかを「〇〇 E 「「〇「」という形式で表示します。 PS C:\python> python chap2. py Traceback (most recent ( a11 last) : FiIe "chap2 ・ py", line in く module> Print("Say He110 ! " ) NameError: name 'Print' is not defined PS C:\ thon> 今は 1 行なのでどこでエラーが起きたかは明確ですが、今後ソースコードがどんどん 長くなってくると、どこでエラーが起きているかを発見するだけでも大仕事です。そん プログラムが実行され 「 Say Hello リと表示さ れた この場合、 1 行目の「 Print 」が 定義されていない ( 間違って いる ) という意味のエラー

7. 12歳からはじめるゼロからのPythonゲームプログラミング教室

3P2 ・ py print("Say He110 ! " ) def print(value, =Fa1se) print(value. … sep= ・ . end=xn ・ . file=sys. stdout flush=False) P 「 ints the values tO a st 「 eam. 0 「 tO 5Y5. stdout by default. Optional keyword arguments: file: a flle-like 0b. 」 ect (stream); defaults t0 the current sys. stdout. sep: string inserted between values, default 3 space. end: string appended afte 「 the 信 st value. default 3 newline. flush: whether tO forcibly flush the st 「 eam. 0 ツールチップ 1 2 end= ・ \n' , file=sys. stdout, flush sep= 最後まで書き終えたらファイルを保存します。 ファイ駅り黜印選択 5 ) をテ (V) 動向ーヘルプ的 新ファイル内 ) 新しいつインドプ、Ⅵ ファイルを費ぐ 0 に フォルタ - を費く下レて・ K ( trt ・ 0 ー ・亡用した項目をく興 名をを ! 1 けて保 ) ー すへて保呼 ( いてⅵ・ K 5 ) 自動保呼 メニューのくファイル〉 からく保存〉をクリック rint( ・・ Say IIO ! - ) ( ⅵ・ 5 フロクラなを実行してみよっ 入力したプログラムを実行してみます。実行方法はいくつかあるのですが、ここでは VS Code の統合ターミナル ( く端末〉パネル ) に python コマンドを入力し、 VS Code に結果を出力する方法でプログラムを実行します。 ( ト叩 ~ ・せ・Ⅵ su ま ( を 1 , 0 ・の第旧選第 ) 示 (V) 移新向へルプ ( H ) コマンドバレントに ) ー 工クスプロ - ラ - ・いているエディ I クスプローラ - ( E ) chap2py 6 G ) デパフス D ) 覧強能 ( X ) 土カ ( 0 ) 問題襾 デバッグ〕ンソ - ル ター : ナル町 0 月◆ Ctrl ・ Sh 第・ ! メニューのく表示〉からく統 合ターミナル〉をクリック 28

8. 12歳からはじめるゼロからのPythonゲームプログラミング教室

7 - 4 本番の戦闘画面き作成しよっ 勝ち負けをチェックして次のターンに進む 主人公が攻撃して勝った場合、つまりモンスターの HP が O になった場合、戦闘画面を 消してマップ画面に戻ります。このチェックをするのは主人公のターンとモンスターの ターンの間です。 次の戦闘のためにボタンの無効化を解除しておき、 fight-win 関数を呼び出して retu 「 n 文で脱出します。 chap7fight . py labeltext 1 a b e 1 t e x t + \ ハ n モンスターの残り体力は” + str(self . monster . hp) s e 1 f . 1 a be 1 [ " t ex t " ] 1 a b e 1 t e x t self . dialog . update() i f 5 e 1 f. mon 5 t e 「 . hp く 1 : time . sIeep(2) # 2 秒待ち self . fbutton["state"l self . rbutton["state"l self . fight_win() 「 e t u 「 n # モンスターのターン モンスターが攻撃して勝った場合、つまり主人公の HP が O になった場合、バッドエン ディング画面を表示します。主人公の HP がまだ残っている場合は、ボタンを有効化し て関数を終了します。主人公の HP をチェックするのはモンスターのターンのあとです。 @8 5 @8 6 @8 7 @8 8 089 @91 @9 2 @9 3 @9 4 @9 5 ” no 「 maI ” "normal" ( hap 「 7 chap7fight . py 1 a b e 1 t e x t 1 a be 1 t e x t + \ " \ n 勇者の残り体力は " + str(self . brave . hp) 5 e 1 f . 1 a be 1 [ ” t e x t ” ] 1 a b e 1 t e x t self . dialog . update() i f 5e1 f . brave . hp く 1 : time . s1eep(2) # 2 秒待ち self. fight_lose() # ボタンを有効化して次のターンへ self . fbutton["state"l “ no 「 mal ” self . rbutton["state"l ” no 「 maI ” モンスターと戦って結果を確認してみましよう。ちゃんと倒せましたか ? 119 12@ 1 2 4 12 6 12 7 12 8 12 9 else: 23 /