Python 8-2
こんにちは!
最近の雨は質がおかしい。
迷路のデータを定義する
今回は迷路の作成です。
二重ループのforで座標ごとに床と壁を分けていきます。
canvasのcreate_rectangleメソッドを用いて灰色の図形を描画しています。
二次元画面のゲーム開発の基礎
次に、キャラクターをマス上で動かしていきます。
11,12行目に宣言した変数mx,myでキャラクターの位置を管理しています。
13~23行目でキー入力ごとの動きを設定しています。
48行目でmx*80+40などとしているのは、キャラクターの画像を中心に表示するためです。
ゲームとして完成させる
最後に、色を塗っていくゲームとして完成させていきます。
23~27行目に追加を行っています。
main_proc()関数にキャラクターの移動した場所を塗り替える作業を追加しています。
変数yukaを追加して、合計数で全てを塗ることができたかを判定しています。
canvas.update()はキャンバス上の表示を更新するために必要です。
救済措置を追加しました。
17~25行目で左のシフトキーを押した際の処理を追記しています。
これで基本的な迷路ゲームの作成が完了しました。
ではでは。
Ruby 6-3-2
こんにちは!
残留争い、真っただ中。
ハッシュ
ハッシュの続きです。
指定のキーを削除するdeleteメソッドです。
返り値は削除された要素です。
条件によって要素を削除するdelete_ifメソッドです。
すべての要素を破棄するclearメソッドです。
各種のeachメソッドです。
ブロックに渡すパラメーターはキーと値の2種が必要です。
ハッシュを結合するmergeメソッドです。
キーが重複した場合は上書きを行うため、ブロックを使った工夫が可能です。
キーや値を加工するtransform_keysメソッド、transform_valuesメソッドです。
キーと値を反転させるinvertメソッドです。
重複した場合、後者の値が優先されます。
最後にcompare_by_identityメソッドで同一性を確認しました。
ハッシュの基本はここまでです。
ではでは。
Ruby 6-3
こんにちは!
台風後の方が雨が強い
ハッシュ
今回はキーと値で管理するハッシュです。
まずは配列をハッシュに変換しています。
存在しないキーにアクセスした場合はnilが返されますが、Hash::newメソッドで規定値の設定が可能です。
concatメソッドは破壊的メソッドのため、規定値が変更されている例です。
ブロック構文での規定値は都度作成されるため、規定値の変更を防いでいます。
キーの中身を書き換えると、ハッシュの中身を取得できなくなるため注意が必要です。
rehashメソッドで再計算はできますが、現実的ではありません。
キーの規定値を指定するfetchメソッドです。
複数の値をまとめて取得するfetch_valuesメソッドです。
入れ子のハッシュを取得するdigメソッドです。
sliceメソッドは合致するキーを切り出します。
前述のfetch_valuesメソッドの戻り値は対応する値の配列でしたが、sliceメソッドの戻り値は部分ハッシュです。
指定の条件でキーや値を判定するselectメソッドです。
キーや値が存在するかを確認するkey?メソッドとvalue?メソッドです。
一旦ここまでです。
ではでは。
Python 8-1
こんにちは!
台風が来ています。。。
リアルタイム処理を実現する
まずはリアルタイム処理に関してです。
after()命令でリアルタイム処理を行うことができます。
引数には「何ミリ秒後」に「どの関数を実行するか」を渡しています。
関数の外部で宣言した変数をグローバル変数、関数の内部で宣言した変数をローカル変数といいます。
関数内でグローバル変数を変更するために、4行目でglobal宣言を行っています。
キー入力を受け付ける
次にキー入力です。
ちなみに、ユーザーがソフトウェアに対してキーやマウスを操作することをイベントといいます。
イベントを受け取るためにbind()命令が必要です。
KeyPressイベントはキーを押した際に発生します。
キー入力で画像を動かす
リアルタイム処理とキーイベントの取得を同時に行い画像を動かしていきます。
ウィンドウ上でキーコードを取得しています。
keycodeの代わりにkeysymで値を取得しています。
coords()命令は表示中の画像を新しい位置に移動する命令です。
Photoimage()命令内にtagを指定することで、キャンバス内で画像などを動かしたりできます。
はい、キャラクターを動かすことに成功しました。
ではでは。
Ruby 6-2
こんにちは!
お盆もコツコツと。
セット(集合)
今回はセットの話です。
セットは配列と違い順番がなく、重複した値も無視します。
まずは基本的なセットの作成です。
addメソッドで要素の追加、deleteメソッドで削除、clearメソッドですべての要素の破棄を行っています。
要素が追加されたかどうかを確認するadd?メソッドです。
delete_ifメソッドで指定の条件に合致した要素を削除できます。
数学の集合のようなメソッドです。
セットが特定のセットに含まれているかを調べるsubset?メソッド、
特定のセットに含まれるが等しくはないproper_subset?メソッド、
特定のセットを含むか判定するsuperset?メソッド、
特定のセットを含むが等しくはないproper_superset?メソッド、
共通する要素が存在するか判定するintersect?メソッド、
共通する要素が存在しないことを判定するdisjoint?メソッド、などがあります。
+や|の和集合、-の差集合、&の積集合、などがあります。
任意の条件でdivideメソッドです。
セットの基本的な内容の確認でした。
ではでは。
Python 7-2
こんにちは!
涼しくなったら部屋の掃除をしたい。
診断ゲームを作る
サンプルに従って「ネコ度診断アプリ」を作成します。
画像の貼り付け、ボタンとテキストボックスの配置を行いました。
今回はスムーズに画像を参照することができました。
for文を用いて複数のチェックボックスを配置しています。
15,16行目で空の箱を用意し、27,29行目で箱の中身を決定しています。
チェックされている項目の数を数える処理を追加しました。
最後に診断結果を出せるようにします。
チェックした数に応じてコメントの出力を行いました。
内容を変えることで色々なものに使えそうなゲームでした。
基本的なGUIだけでも応用力が高いですね。
ではでは。
Python 7-1
こんにちは!
甲子園は近畿と四国を応援してしまう。
テキスト入力欄を配置する
まずは1行のテキスト入力です。
1行のテキスト入力欄はEntry()命令で作成します。
Entry内の文字列はget()命令で取得できます。
テキスト入力欄の文字が、ボタンを押すことでボタンに反映されています。
複数行のテキスト入力欄を配置する
次は複数行です。
複数行のテキスト入力欄はText()命令で作成します。
insert()命令は指定の位置に文字列を追加します。
チェックボタンを配置する
次はチェックボタン、チェックボックスの説明です。
チェックボタンはCheckbutton()命令で作成します。
チェックボタンの有無を調べるためにはBooleanVar()命令を用います。
まずはTrueを渡すことでチェックされた状態であることを確認しています。
チェックの状態を確認することができました。
メッセージボックスを表示する
次はメッセージボックスです。
メッセージボックスを使うためにはtkinter.messageboxモジュールが必要です。
今回はshowinfo()命令を使用しましたが、showwarning()命令などで警告を表示することも可能です。
次回は診断ゲームの作成です。
ではでは。