-
前期からの変更点
- 課題説明は「課題概要」のみで十分です。
- 今回のレポート5についても「最大3ページ」に収めるようにして下さい。
- ソースファイルはGitHubで確認できるので、レポートに全コードコピペ掲載する必要はありません。特に工夫した点のみを掲載した上で解説・考察しよう。
-
<目次>
過去のレポート課題で作成したプロジェクトに、Gradleを導入してみよう。
- IntelliJでGradleプロジェクトを新規作成。
- GroupID/ArtifactIdは「report5」とする。
- プロジェクト名も上記同様。
- 課題レポート3で作成したjavaファイルを、src/main/javaとsrc/test/javaに配置する。
- src/main/java/package名/以下に置くべきファイル
- LivingThing.java, Enemy.java, Hero.java, Main.java
- src/test/java/package名/以下に置くべきファイル
- EnemyTest.java
- JUnit5パッケージを追加するため、Enemyクラスを開いた状態で、「Go to から create new test」を選択した方がベター。
- EnemyTest.java
- 補足: 課題レポート3を終えてない人は、まずそれを終えよう。
- src/main/java/package名/以下に置くべきファイル
- 動作確認。
- Main.javaが動作することを確認しよう。
- EnemyTest.javaが動作することを確認しよう。
- 上記2件が動作するなら、git管理に設定し、add+commit+push.
- build.gradleも含めて、プロジェクト内の設定ファイルは全てaddすること。
- push先のgithubリポジトリも作成しておこう。リポジトリ名は 「report5」とする。
- report3時のリポジトリに上書きするのではなく、新規にreport5というリポジトリを作成し、そこにpushしよう。
- レポート報告事項
- ステップ1に関しては、pushしたリポジトリURL(作業用URL)を報告するだけで良い。
- 仕様
- build.gradleを編集し、jarファイルを生成するように設定せよ。
- 条件1: mainメソッドを含むMain.javaをコンパイルするように設定すること。
- 条件2: sourceCompatibilityを10にすること。
- build.gradleを編集し、jarファイルを生成するように設定せよ。
- 動作確認
- IntelliJからでも、ターミナルからでもどちらでも構わないので、gradleを使ってjarファイルが生成できることを確認しよう。
- jarファイル生成できたら、jarファイルを実行しよう。この出力結果がMainクラスと同等であることを確認しよう。
- 動作確認できたら、add+commit+pushしよう。build.gradleのaddを忘れないように。
- レポート報告事項
- jarファイルを実行した際の出力結果。
- 仕様
- Heroクラス
- 「public void attack(LivingThing opponent)」を、次の条件を満足するようにオーバーライドせよ。
- 条件1: 0ダメージだった時には「%sの攻撃!,,,だが、%sは攻撃を回避した!」と出力するようにせよ。出力後は改行すること。
- 補足: %sが2回出て来るが、1回目の%sは攻撃者。2回目の%sは攻撃対象とする。
- 条件2: 40%の確率でopponentに与えるダメージを2倍にせよ。また、その時の出力を「%sの攻撃!会心の一撃!!%sに%dのダメージを与えた!!」となるように変更せよ。(「会心の一撃!!」を追加)
- 条件1: 0ダメージだった時には「%sの攻撃!,,,だが、%sは攻撃を回避した!」と出力するようにせよ。出力後は改行すること。
- 「public void attack(LivingThing opponent)」を、次の条件を満足するようにオーバーライドせよ。
- Enemyクラス
- 「public void attack(LivingThing opponent)」を、次の条件を満足するようにオーバーライドせよ。
- 条件1: 0ダメージだった時には「%sの攻撃!,,,だが、%sは攻撃を回避した!」と出力するようにせよ。出力後は改行すること。
- 補足: %sが2回出て来るが、1回目の%sは攻撃者。2回目の%sは攻撃対象とする。
- 条件2: 30%の確率でopponentに与えるダメージを2倍にせよ。また、その時の出力を「%sの攻撃!痛恨の一撃!!%sに%dのダメージを与えた!!」となるように変更せよ。(「痛恨の一撃!!」を追加)
- 条件1: 0ダメージだった時には「%sの攻撃!,,,だが、%sは攻撃を回避した!」と出力するようにせよ。出力後は改行すること。
- 「public void attack(LivingThing opponent)」を、次の条件を満足するようにオーバーライドせよ。
- Heroクラス
- 動作確認&レポート報告事項
- 上記4件の修正は、全て確率に伴う処理になるため、必ずしも出力結果からは動作を確認できるとは限らない。複数回実行して構わないので、「Heroクラスの変数が会心の一撃を出す」まで実行し、その際の結果を掲載すること。
- また、Hero.attack()のコードを掲載し、工夫した点を解説せよ。
- 補足: 掲載するコードは20行までとする。コードが20行を超えるようなら、重要な点に絞って掲載&解説せよ。
- おまけ課題(余裕のある人向け)
- Hero.wounded()やEnemy.wounded()のコードは、LivingThing.wounded()と重複している箇所が多いと思われる。これをどうにかして重複コードを減らすことはできないだろうか?
- ペアや友人らと話し合って取り組んで構わないが、コード解説を加えるなど「自分自身の報告書」となるように取り組むこと。試して分かったこと、自身で解決できなかった部分等についてどう取り組んだか、といった過程がわかるように示すこと。(考えを図表や文章を駆使して表現して報告する練習です)
- レポート作成は好きなツール(ソフトウェア)を使って構わない。ただし下記を含めること。
- タイトル
- 今回は「プログラミング2、レポート課題5: 「リファクタリングしてみよう&Gradleに慣れよう」」。
- 提出日: yyyy-mm-dd
- 報告者: 学籍番号、氏名
- 複数人で相談しながらやった場合、相談者らを「協力者: 学籍番号、氏名」として示そう。
- 課題説明(概要のみでOK)
- 結果と考察
- 課題への取り組みを通し、課題の意義、課題から分かったこと、今後の展望などを述べる。失敗やつまづきがあれば、それらについての失敗分析を含めること。
- 参考リンク: 実験レポートの書き方
- その他
- 通常は感想等をレポートには含めませんが、練習なので課題に取り組みながら何か感じたこと、悩んでいること等、書きたいことがあれば自由に書いてください。(なければ省略OK)
- タイトル
- 提出物は「レポート」の1点である。
- レポートは電子ファイルで提出するものとする。
- 提出先:
- 「Google ドキュメント」のreport5。
- 締切: 調整中。