設定 - みる会図書館


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

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

引数のデフォルト値とキーワード引数 関数を定義するときに、引数のデフォルト値を設定することができます。引数にデフォ ルト値が設定してあると、関数を呼び出すときに引数の指定を省略して呼び出すことがで きます。実際に使ってみると次のようになります。 def culc(width, height=2) result = width * height print(result) ( u 1 ( ( 1@) 引数の最後にデフォルト値が付いた引数を設定します。こうすることで cu ℃関数を使 うときに、 height にあたる引数を指定しなくても、関数内では自動で height を 2 として扱っ てくれます。 また、関数の呼び出し側で引数に「 f Ⅲ = " b 旧 e " 」などと設定する書き方もあります。これ までも create ゴ ectang 厄関数などで出てきていますね。これはキーワード引数といって、 指定したキーワードを関数定義の引数の中から探し出し、それに設定値を割り当てるとい う書き方です。「 f Ⅲ = " b 旧 e " 」の場合は、「 fi 旧がキーワードで「 " b 旧 e " 」が設定値になります。 ユーザーが定義した関数で使うと次のようになります。 d e f ( u 1 ( ( w i d t h , h e i g h t ) r e 5 u 1 t w i d t h * h e i g h t p 「 i n t ( r e s u 1 t ) cu1c(height=5, width=l@) 通常、引数に値を設定するときは関数定義の左から順番に設定します。関数を使うとき も同し順番で引数に変数や値を指定しますね。このキーワード引数を使えば、引数が何番 目に定義されているかわからなくても、キーワードで探し当てることができます。ユーザー が自分で関数を作るときは、大量に引数を定義することがないかもしれませんが、すでに定 義された関数を利用する際にキーワード引数を知っていると便利です。有効に使っていき ましよう。 1 68

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

chap3. py @@ 1 @@ 2 @@ 3 import tkinter # ウインドウ作成 t k i n t e 「 . Tk ( ) 「 00t 「 00t . title ( " リリーにしつもん " ) 「00t . minsize(640, 480 ) # メインループ 「 00t . mainloop ( ) タイトル 5 行目に追加した title 関数は、ウインドウのタイトルバーに表示する文字を設定しま ミンサイズ す。今回は「リリーにしつもん」という文字を設定しました。 6 行目の minsize 関数は、ウィ ンドウの一番小さなサイズ ( minimum size) を設定します。 1 つ目の引数が横幅、 2 つ 目の引数が立て幅を意味しており、プログラムを実行すると、指定した大きさでウインド ウが表示されます。 ちなみに、 minsize 関数で指定している長さは、ピクセル ( p ⅸ (l) という単位を基準に しています。パソコンの画面は非常に小さな点の集まりでできており、この点のことを ピクセルと呼びます。 640 という数値は、ピクセル 640 個分を意味するわけです。 ここまでプログラムが入力できたらプログラムを実行し、ウインドウがどのように変 ずいぶんウインドウが大きくなりましたね。また、ウインドウのタイトルバー ロ 化するか確認してみましよう。 大きくなった ウインドウのサイズが 設定された ウインドウのタイトルが リーにしつもん」という文字が設定されています。

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

ウインドウに画像き表示しよう 3 - 2 番を入れ替えて指定することもできます ( P. 168 日召 ) イ・ハハ 0 「 bg 」は、キャンバスの背景 (background) の色を設定する引数です。色の名前、もし くはカラーコードを文字列で指定します。「 width 」と「 height 」はそれぞれ、キャンバ スの横幅・縦幅を指定する引数です。ウインドウと同じく横幅を 640 ピクセル、縦幅を 480 ピクセルに設定しています。これで、ウインドウ全体に画像が置けるようになりま す。 キャンバスを作ったら、このオプジェクトをウインドウのどこに置くか設定しないと プレイス いけません。それが IO 行目の命令です。可 ace 関数は、キャンバスの置く位置を指定し ます。ここで気になるのが、 p [ ace 関数のキーワード引数である x と y です。この 2 つ の引数は何を意味しているのでしようか ? オフジェクトの座標を指定する p [ ace 関数の引数 x と引数 y には、キャンバスの表示位置を決めるための数値を指定し さひょう ます。位置を指定する数値のことを座標と呼び、ウインドウの左上を基準に、ピクセル何 個分ずらすかを指定することで位置を決めます。横方向にずらす座標のことを x 座標 縦方向にずらす座標のことを y 座標と呼びます。 ( hap 「 3 標標 座座 x 座標 標標 座座 座標 0 左上の角は、 x 座標・ y 座標ともに 0 となる。数えはしめが 0 となることに注意しよう つまり p [ ace 関数の引数 x には横方向にずらすピクセル数を、引数 y には縦方向にず らすピクセル数を指定します。両方とも 0 ということは、ウインドウの左上とキャンバ スの左上が、ちょうど同じ位置になるように配置する一一ということを意味します。

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

ロ X ロ X 勇者「よーし、私に任せなさい ! 」 00 ー 勇者「そんな大金、よっぽど過酷なんだ・・・ 関わらないでおこう。」 は ) 0000 0 褒美が IOO , 08 ゴールド以上であれは勇者は尻込みしてしまうが、 IOO , 000 ゴールド未満で 5 , 0 ゴー ルド以上であれば勇者は志願してくれる 気を付けなければいけないのが、 if の条件を指定する順番です。最初の if 文には褒美 に 100 , 000 ゴールド以上を入力して「勇者が尻込みする」条件を設定しています。そし て次の e [ if 文で褒美が 5 , OOO ゴールド以上で「勇者が志願する」条件を設定しています。 この if 文の条件と e [ if 文の条件を逆に書いてしまうとどうなるでしよう。 褒美に 100 , 000 ゴールド以上を入力していても、最初の if 文で 5 , 000 ゴールド以上は 「勇者が志願する」処理に入ってしまい、何ゴールドを入力しても「勇者が尻込みする」処 理は行われません。 elif 文の条件は if 文、もしくはそれより上の elif 文の条件に対して偽 であるときのみ判定されるということを常に意識しておきましよう。 もちろん最初の if 文の条件をもっと正確に「 5 , OOO ゴールド以上、 IOO,OOO ゴールド 未満」としているのであれば、最初の if 文に「勇者が志願する」処理を書いても大丈夫で す。 勇者が仲間を選ぶプロクラなを作ってみよっ if 文と elif 文、 e [ se 文を使って、先ほどとは違うプログラムを作ってみましよう。今回 作るのは「勇者が仲間を選ぶプログラム」です。勇者の仲間候補の画像を横に 3 つ並べ、 それぞれに割り振られた 1 、 2 、 3 のいずれかの数値をユーザーが入力して仲間にするキャ ラクターを選ぶプログラムです。 1 、 2 、 3 以外の数値が入力された場合には誰も仲間 になってくれないということにしましよう。次の画像が完成形のイメージですね。 108

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

シナリオファイルき読み込もつれ・ - - 8 - 1 message . place(x=28, Y = 284 ) message["text"] = " あいうえおあいうえおあいうえおあいうえおあいうえおあいう えおあいうえおあいうえおあいうえおあいうえお 「 00t . mainloop ( ) @ 14 @ 1 5 @ 1 6 @ 1 7 ラベルにはこれまで使っていないオプションも指定しています。 まず width と height はサイズ指定ですが、単位がピクセルではなく文字数なので、 70 字 x5 行で設定します。さらに w 「 ap [ ength で自動折り返し幅を指定します。こち らはピクセル数なのがちょっとややこしいです。 justify と anchor でテキストの配置を設定します。 justify は複数行のそろえ方の指定 、ここでは [ eft にします。 anch 〇「は行数と関係なく、ラベルの内容全体のそろえ方の で 指定です。方位の頭文字を使用し、左上にしたいときは no 「 th - west ( 北西 ) を路した nw を指定します。 ′よろしくアンチャ - ロ ^ hap 「 8 あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえ おあいうえお 0 ウインドウ、キャンバス、ラへルを配置 〒キストファイルを読み込む ファイルの読み込みは、①ファイルを開く、② 1 行読み込む、 3 最後に到達したらファ イルを閉じるの 3 ステップで行います。まずはテストとしてく端末〉バネルに読み込ん だテキストを表示させてみましよう。 。 247

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

3 - 3 ウイントウにデキストやホ 9 ンき配置する 文字の見た目を調節す 3 吹き出しに文字が表示されたはいいものの、文字がやや小さいのが気になりますね。 また、文字の背景がグレーで、吹き出しの背景から浮き上がって見えるのも、あまりかっ こよくありません。次は、ウインドウに表示した文字が背景の画像にマッチするように 見た目を調整していきましよう。 次のコードを参考に、 chap3. py のコードを修正します。 Chap 「 3 chap3. py import tkinter @@ 1 # ウインドウ作成 t k i n t e r . Tk ( ) r 00 r 00 t . t i t 1 e ( " リリーにしつもん” ) 「 00 t . m i n 5 1 z e ( 64@ , 48 の 「 00t . option add("*font" # 画像表示 tkinter . Canvas(bg="black" ( a n V a S canvas . place(x=@, y=@) @ 11 @12 tkinter . PhotoImage(fiIe="img3/chap3-back . png") lmg @ 1 3 canvas . create_image(32@, 240 , image=img) @ 14 # テキスト表示 @ 1 5 tkinter . Label(text=" 知りたいのは何分かな ?", bg="white") @ 16 question @ 1 7 question . place(x=l@@, y=4@) @ 18 # メインループ @ 19 「 00t . mainloop ( ) @ 2 @ [ " MS P ゴシック " , 22 ]) width=64@, height=48@) オプションアッド 7 行目に追加した「「 00t. option add() 」は、ウインドウに設定を追加するときに使う 関数です。 1 つ目の引数に設定の対象を文字列で指定し、その対象にどんな設定を行う かを 2 つ目の引数にリストで指定します。リストは、 1 つの変数の中に複数の要素 ( テー タ ) を入れられるデータ型です。こでは半角の「 [ ] 」で囲むと、リストのデータが作れ るとだけ覚えておきましよう。詳細は 5 章で説明します。 1 つ目の引数に指定している「 "*font" 」は、ウインドウ内のすべての文字を指していま す。 2 つ目の引数のリストでは、 1 つ目の要素にフォント ( 文字のデザイン ) の名前を、 2 つ目の要素に文字のサイズを指定します。ここでは、ウインドウ内のすべての文字に

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

0 文字の大きさと背景の色が変更され、リ リーがノアに話しかけているように表現 てきた 入力欄と質問ボタンを追加しましよう。 chap3. py に、以下のコードを追加します。 1 つ目の吹き出しに文字を追加できたので、この調子で中央の吹き出しにテキストの 入力欄とホ 9 ンを追加する chap3. py 対して、「 MS P ゴシック」というフォントで、 22 ポイントの大きさに設定せよ いう命令を実行しているわけです。 ☆ウインドウにフォントの設定を追加する tkinter . LabeI(text=" 知りたいのは何分かな ?" ウインドウ . option ー add ( 設定の対象 , [ フォントの名前 , フォントのサイズ ]) と 次は文字の背景の色を変更しましよう。 16 行目の ( ) の中にカーソルを移動し、 1 つ 目の引数の後ろに「 , ( カンマ ) 」を入力して、 2 つ目のキーワード引数 bg を追加します。 「 bg 」は、背景を意味する英単語 backg 「〇 und ( バックグラウンド ) の略語です。値に 「 white" 」と指定すると、文字の背景が白色になります。 こまで入力できたら、プログラムを実行してみましよう。次のように、文字が大きく なり背景が白色に変わります。 ′リリーにしつをん 知りたいのは何分かな ? ロ @ 1 5 @ 1 6 @ 1 7 @ 18 # テキスト表示 question question . place(x=l@@, y=4@) bg="white")

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

イメージしづらい場合は、 p [ ace 関数の引数を変更してプログラムを実行してみると よいでしよう。引数に指定した数値で、キャンバスの表示位置がどのように変化するか、 感覚的につかむことができます。 ′りり - にしつをん ′リリ - にしつもん 0 左は x 座標を -100 、 y 座標を -100 に設定。右は x 座標を 100 、 y 座標を 100 に設定してプログラムを実行した キャンバスの表示位置が変化していることがわかる キャンバスに画像を表示す 3 ウインドウの上にキャンバスを表示することができました。今度はこのキャンバスに 画像を読み込んで表示してみましよう。画像 (chap3-back. png) のサイズは、キャンバ スと同じ 640X480 ピクセルに設定しているので、キャンバス全体に画像が表示される はずです。 chap3. py に次のコードを入力します。 chap3. py G) @8 @ 11 @ 1 2 import tkinter # ウインドウ作成 t k i n t e r . Tk ( ) r 00 t 「 00 t . t i t 1 e ( " リリーにしつもん” ) 「 00 t . m i n s i z e ( 64@ , 480 ) # 画像表示 tkinter . Canvas(bg="black" ( a n V a 5 canvas . place(x=@, y=@) tkinter . PhotoImage(fiIe="img3/chap3-back . png") canvas . create_image(), 0 , image=img) width=64@, height=48@)

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

@ 11 @ 12 @ 13 @ 14 @ 1 5 @ 16 @ 17 @ 18 @ 1 9 「 00t . title(' ・リリーにしつもん " ) r 00 t . m i n s i z e ( 640 , 480 ) # 画像表示 tkinter . Canvas(bg="black" ( a n V a 5 canvas . place(x=@, y=@) tkinter . PhotoImage(fiIe="img3/chap3-back . png") canvas.create_image(32@, 240 , image=img) # テキスト表示 tkinter . Label(text=" 知りたいのは何分かな ?") question question . place(x=100, Y = 4 の # メインループ root . mainloop() width=64@, height=48@) ウインドウに文字を表示するには、 tkinte 「のラベル ( Label) というバーツを使います。 1 5 行目の「 tkinter. LabeI() 」では、このラベルのオプジェクトを作り、変数 question に 保存しています。ラベル表示する文字は、キーワード引数の text に文字列で指定します。 キャンバスと同じように、ラベルは作っただけではウインドウに表示されません。そ こで question の place 関数を使い、表示する位置を設定します。今回は x 座標を 100 、 y 座標を 40 に設定しました。 ここまで入力できたら、プログラムを実行してみましよう。次のように、吹き出しの部 分にテキストが表示されます。 ′リリ - にしつもん ロ 知リたいのは何分かな ? 0 吹き出しに「知りたいのは何分かな ? 」 というテキストが表示された 68

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

選択肢ら選ん ~ 7 # b 「 an ( h 命令が来たら選択肢となるボタンを表示し、 選ばれたら指定の行までジャンプするようにしましょ う。シナリオによってボタンの表示やイベント設定が変 化させなければいけません。 選択肢を表示するには アドベンチャーゲームでは選択肢からプレーヤーの行動を選びます。よくあるもので すが、シナリオによってボタンの数が変わったり、ジャンプ先が変わったりするので意外 と複雑です。図で整理しながらしくみを考えてみましよう。 ☆ # b 「 anch 命令の書き方 #branch 順番選択肢テキストジャンプ先のラベル y か n 5 ce n a 「 i 0 [ ] 5 ( e n a 「 i 0 [ ] #branch 1 りんご apple y #branch 2 ぶどう grape y #branch 3 みかん orange n ボタン配置 画面 りんご ぶどう みかん、 # # orange 変数 cur 「 ent line 〇〇〇 ##orange の ところまで cur 「 ent line を変更 クリック とりあえずボタンの表示については、「 # b 「 anch 命令が来たら、ボタンを配置してイ べントを設定し、ジャンプ先のラベルをどこかに記憶しておき、 4 つ目の引数が y なら 次の行を読み込む、 n なら読み込まずに停止」という流れでよさそうです。 イベントとジャンプのことはひとまずおいて、ボタンを表示するところまで作ってみ 264 ( hap 「