diff --git a/courseC/DescriptionAlgolike.html b/courseC/DescriptionAlgolike.html new file mode 100644 index 0000000..08d5a02 --- /dev/null +++ b/courseC/DescriptionAlgolike.html @@ -0,0 +1,66 @@ + + +
+「Algolike」は,カードゲーム「algo」を基にしたゲームプログラムです.
+Algolikeでは,「0」から「11」までの数字が書かれた計12枚のカードを用いて,プレイヤーとCPUが対戦します.
+ + + ゲーム開始時,12枚のカードを裏向けにして山札を作り,これを「デッキ」とします.
+ そして,各プレイヤーにデッキからカードを2枚配り.それを各プレイヤーの最初の「手札」とします.
+ なお,各プレイヤーは自分から見て左側から数字が小さい順になるように,相手にわからないよう手札のカードを裏向けにして並べなければなりません.
+ 画面では,裏向きになっているカードは黒色で表示されます.(自分の手札は下側に表示されます)
+
+
ゲームはプレイヤーが交互に「アタック」という行動を繰り返して進行していきます.
+ アタックとは,相手の裏のカードを選んで,その数字を当てていくことをいいます.
+ 以下では,行動しているプレイヤーを「自分」,自分からみた相手プレイヤーを「相手」とします.




この時,相手は選ばれたカードと宣言された数字が一致しているかどうかを「Yes」か「No」で答えます.
+ もし「No」だった場合,アタックは失敗となり,アタックに使用した自分のカードを表にして数字順になるように自分の手札に加えます.
+ 画面では,表になったカードは白色で表示されます.
+


そして,ターンを相手に渡します.
+
+これを交互に繰り返します。
+ +プレイヤーの手札のカードが全て表になったとき、そのプレイヤーはゲームに敗北します。
+
+
+
+プレイヤーの手札のカードが全て表になったとき、そのプレイヤーはゲームに敗北します。
+ +次へ + + + diff --git a/courseC/EnvironmentAlgolike.html b/courseC/EnvironmentAlgolike.html new file mode 100644 index 0000000..df08bde --- /dev/null +++ b/courseC/EnvironmentAlgolike.html @@ -0,0 +1,46 @@ + + + +Algolike の Github のリポジトリはこちらです.クローンしてお手元の開発環境でビルドをし,動作確認を行ってください.
+ + Algolike は Gradle プロジェクトとして作成しています.
+
Algolike のテストコードは /src/test/java/MainTest.java にあります.JUnitでテストすることができます.
+MainTest.java では Algolike における以下の一連の動作をテストしています. +
+ 課題C1では,Algolike の HandsA から LoseA へのデータ転送について見ていきます.
+ HandsA は,プレイヤーのすべての手札を管理しているクラスで,LoseAは各ターンでプレイヤーがゲームに負けたか否かを表すクラスです.
+ この課題では,
+
+
+ 「HandsA の情報が更新されたときにその情報を LoseA にPUSH型で転送しているプログラムを,PULL型で転送するようにリファクタリングすること」 ++ + を目的とします.
+ 以下では,リファクタリングに要した時間を測っていただきますので,お手元に時計をご用意ください.
+ 時間計測にあたって,急いで作業していただく必要はまったくありません.
+ 最初の課題から最後の課題まで一定のペースを保てるよう, 正しくリファクタリングを行うことを意識してください.
+ この課題で作業していただく内容は,
+
+ 「HandsA の情報が更新されたときにその情報を LoseA にPUSH型で転送しているプログラムを,PULL型で転送するようにリファクタリングすること」 ++ です.
+ まず,現時点での HandsA から LoseA へのデータ転送に関するクラス図とシーケンス図を以下に示します.
+
+ 
+ 現時点ではPUSH型のデータ転送で実装されているため,HandsA クラスの updateResultBy...() メソッドから LoseA クラスの updateHandsA() メソッドを呼び出すために HandsA クラスが LoseA クラスを参照していています.
+ ここで Algo クラスは,初期化時に HandsA クラスや LoseA クラスのインスタンスを生成し,それらのインスタンスを関連付ける役割を担っています.
+ また,HandsA クラスや LoseA クラスにアクセスするための入口(Facade)としての役割も担っています.
+ Algo,HandsA,LoseA クラスのいずれも resources パッケージの中に入っています.
+
+ これを,以下のクラス図とシーケンス図に示すようなPULL型のデータ転送になるよう,手作業でリファクタリングを行っていただきます.
+
+ 
+ 今度はPULL型のデータ転送であるため,LoseA クラスの getValue() メソッドから HandsA クラスの getValue() メソッドを呼び出すために LoseA クラスが HandsA クラスを参照していることに注意してください.
+
+ リファクタリングの作業手順の詳細を以下に示します.
+
+ 作業に着手する前に,メッセージでお伝えした自分専用のブランチ(user??)を切って,一度プッシュを行ってください.
+ プッシュを行った後,開発環境の準備ができれば,時間計測を開始してください. 時間計測はできる限り,1分以内の単位での計測をお願いします.
+ テストプログラムが正しく動作するまでは作業完了とは見なされないので注意してください.
+
+ リファクタリングの作業が完了したら作業時間を記録し,その後,作業結果を自分専用のブランチにコミット&プッシュしてください.
+ ただし,main ブランチには決してマージをしないように,また自分専用のブランチを決して削除しないように注意してください.
+ プッシュ後に,以下のアンケートにお答えください.
+
+ アンケート回答 ++ +
「Algolike」は,カードゲーム「algo」を基にしたゲームプログラムです.
+Algolikeでは,「0」から「11」までの数字が書かれた計12枚のカードを用いて,プレイヤーとCPUが対戦します.
+ + + ゲーム開始時,12枚のカードを裏向けにして山札を作り,これを「デッキ」とします.
+ そして,各プレイヤーにデッキからカードを2枚配り.それを各プレイヤーの最初の「手札」とします.
+ なお,各プレイヤーは自分から見て左側から数字が小さい順になるように,相手にわからないよう手札のカードを裏向けにして並べなければなりません.
+ 画面では,裏向きになっているカードは黒色で表示されます.(自分の手札は下側に表示されます)
+
+
ゲームはプレイヤーが交互に「アタック」という行動を繰り返して進行していきます.
+ アタックとは,相手の裏のカードを選んで,その数字を当てていくことをいいます.
+ 以下では,行動しているプレイヤーを「自分」,自分からみた相手プレイヤーを「相手」とします.




この時,相手は選ばれたカードと宣言された数字が一致しているかどうかを「Yes」か「No」で答えます.
+ もし「No」だった場合,アタックは失敗となり,アタックに使用した自分のカードを表にして数字順になるように自分の手札に加えます.
+ 画面では,表になったカードは白色で表示されます.
+


そして,ターンを相手に渡します.
+
+これを交互に繰り返します。
+ +プレイヤーの手札のカードが全て表になったとき、そのプレイヤーはゲームに敗北します。
+
+
+
+プレイヤーの手札のカードが全て表になったとき、そのプレイヤーはゲームに敗北します。
+ +次へ + + + diff --git a/courseD/EnvironmentAlgolike.html b/courseD/EnvironmentAlgolike.html new file mode 100644 index 0000000..19d8836 --- /dev/null +++ b/courseD/EnvironmentAlgolike.html @@ -0,0 +1,46 @@ + + + +Algolike の Github のリポジトリはこちらです.クローンしてお手元の開発環境でビルドをし,動作確認を行ってください.
+ + Algolike は Gradle プロジェクトとして作成しています.
+
Algolike のテストコードは /src/test/java/MainTest.java にあります.JUnitでテストすることができます.
+MainTest.java では Algolike における以下の一連の動作をテストしています. +
+ 課題D1では,Algolike の HandsA から LoseA へのデータ転送について見ていきます.
+ HandsA は,プレイヤーのすべての手札を管理しているクラスで,LoseAは各ターンでプレイヤーがゲームに負けたか否かを表すクラスです.
+ この課題では,
+
+
+ 「HandsA の情報が更新されたときにその情報を LoseA にPULL型で転送しているプログラムを,PUSH型で転送するようにリファクタリングすること」 ++ + を目的とします.
+ 以下では,リファクタリングに要した時間を測っていただきますので,お手元に時計をご用意ください.
+ 時間計測にあたって,急いで作業していただく必要はまったくありません.
+ 最初の課題から最後の課題まで一定のペースを保てるよう, 正しくリファクタリングを行うことを意識してください.
+ この課題で作業していただく内容は,
+
+ 「HandsA の情報が更新されたときにその情報を LoseA にPULL型で転送しているプログラムを,PUSH型で転送するようにリファクタリングすること」 ++ です.
+ まず,現時点での HandsA から LoseA へのデータ転送に関するクラス図とシーケンス図を以下に示します.
+
+ 
+ 現時点ではPULL型のデータ転送で実装されているため,LoseA クラスの getValue() メソッドから HandsA クラスの getValue() メソッドを呼び出すために LoseA クラスが HandsA クラスを参照しています.
+ ここで Algo クラスは,初期化時に HandsA クラスや LoseA クラスのインスタンスを生成し,それらのインスタンスを関連付ける役割を担っています.
+ また,HandsA クラスや LoseA クラスにアクセスするための入口(Facade)としての役割も担っています.
+
+ これを,以下のクラス図とシーケンス図に示すようなPUSH型のデータ転送になるよう,手作業でリファクタリングを行っていただきます.
+
+ 
+ 今度はPUSH型のデータ転送であるため,HandsA クラスの updateResultBy...() メソッドから LoseA クラスの updateHandsA() メソッドを呼び出すために HandsA クラスが LoseA クラスを参照していることに注意してください.
+
+ リファクタリングの作業手順の詳細を以下に示します.
+
+ 作業に着手する前に,メッセージでお伝えした自分専用のブランチ(user??)を切って,一度プッシュを行ってください.
+ プッシュを行った後,開発環境の準備ができれば,時間計測を開始してください. 時間計測はできる限り,1分以内の単位での計測をお願いします.
+ テストプログラムが正しく動作するまでは作業完了とは見なされないので注意してください.
+
+ リファクタリングの作業が完了したら作業時間を記録し,その後,作業結果を自分専用のブランチにコミット&プッシュしてください.
+ ただし,main ブランチには決してマージをしないように,また自分専用のブランチを決して削除しないように注意してください.
+ プッシュ後に,以下のアンケートにお答えください.
+
+ アンケート回答 ++ +