2024年度 電子情報通信課程 計算機実習II

今日の説明動画

本日の説明は,2本の動画に分かれています.それぞれ視聴して,理解ができたら次に進むようにして下さい.

動画の長さは次の通りです.自分のペースで進めながらも,1コマで終わるように頑張ってください.

  1.  計算機実習2/計算機基礎実習2-13回目ex13-1 - 10分38秒
  2.  計算機実習2/計算機基礎実習2-13回目ex13-2 - 07分21秒
  3. 計 17分59秒

講義に関して,ちょびっとコメント

前回のレポート採点結果は,こちらです.

本講義の最後の回(小テスト)は「対面」で実施します.不測のトラブルに備えて一度は1-609で接続確認をすることをお勧めします.自習室の計算機も環境としては同じです.

クラスを利用する

今日のポイント

前回,クラスについて理解しました.

今日は,その「クラス」を利用して,主人公やモンスターを作ります.

それらのキャラクターのオブジェクトには,どのような変数(プロパティ)が必要でしょうか.

また,どのような関数(メソッド)が必要でしょうか.

課題 13-1
  • 教科書pp.217-220を読み,chap7fight.pyを更新しましょう.
  • クラスの設計は理解できましたか?(オブジェクトの枠組みを作ります)
  • クラスの「継承」は理解できましたか?クラスをコピーするようなイメージで大丈夫です(コピーして流用するような感じです).
  1. random関数の使い方は理解できましたか.サイコロの数字(1-6の整数値)をdice変数に得るコードを答えなさい(import 文は不要です.代入の1行だけ答えて下さい).
  2. 教科書p.220のdef get_atkとget_dfsの戻り値がどのようなものか説明しなさい(どのような範囲の値が返ってくるのか説明しなさい)
  3. 教科書p.220のdef calc_hp(←教科書はculc_hpとなっていますが,calculationのことですのでcalcです)にて,戦った結果の体力値を計算しています.ここに,以下のような「会心の一撃(= たまに行う強い攻撃)」を追加するにはどうしたらよいか説明しなさい.
    • 4回に1回程度の割合で発生させる方法(乱数を利用すること)
    • 「会心の一撃」として相手の攻撃力をランダムに1-3倍(実数)にする方法
    • 「会心の一撃」として自分の防御力をランダムに0-1倍(実数)にする方法
  • ※どちら(攻撃力増加,防御力低下)が「会心の一撃」に近いと思いますか?(もしくは両方?)

子クラス

実際に親クラスを継承した子クラスを作ってみましょう.

基本的には,子クラスには親クラスで設定した内容がそのまま引き継がれます.

ただし,同じ名前の関数を用意すると,親クラス側の関数は無視され,子クラス側の関数が利用されます.

そのため,クラス作成時に呼び出される「__init__(self):」を子クラスに作成すると,親クラス側の「__init__(self):」は呼び出されませんので,親側で考慮した初期設定が無視されてしまいます.

これを避けるには,子クラスの「__init__(self):」にて,親クラスの「__init__(self):」を呼び出します.このとき,「親クラス」を表すオブジェクトが「super()」です(教科書p.224).

ただ,この書き方は,全ての子クラスにこの一文が必要になります.

そして,書き忘れたらその子クラスだけ初期設定が反映されなくなるという見つけにくいバグが発生します.

そこで,それらを回避する方法として「__new__」関数が用意されています(教科書p.225).

この関数でオブジェクトを作成することで,親クラスのオブジェクト作成時の関数(__init__)を自動的に呼び出すことができます.

子クラスの方には__init__が存在しないので,最初の問題が生じなくなります(教科書p.225).

課題 13-2
  1. 教科書pp.221-226を読み,chap7fight.py を更新しましょう.
  2. 「子クラス」が理解できましたか?
発展課題 13-3(14回目 【各自で実施】:イベントドリブン,デバグ作業(7-4))
  1. 教科書pp.227-242を読んで,RPGを仕上げましょう.
  2. 仕上げのために,色々と細かな部分を触っていきます.手間のかかる作業ですが,頑張って進めましょう.
  3. ※講義として新たに学ぶ項目はないので,解説は行いません.また,次回の8章は,このプログラムができていなくても問題ありませんので,この課題は任意とします.

今日の課題

上記の課題13-1,13-2,13-3です.

提出が必要なのは,13-1の課題だけです.

課題はメールで提出して下さい.

件名はreport13,アドレスはcom02@elec.ryukoku.ac.jp です.

締切は,「翌週水曜日が終わるまで(今回は12月25日中の提出がセーフ)」です.