Graphics/2019/ex14CD
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*グラフィックス基礎及び実習 2019年度 第14回課題C,D [#e970...
- [[第14回実習課題全体のページ>Graphics/2019/ex14]]
- [[第14回実習課題A,Bのページ>Graphics/2019/ex14AB]]
- [[第14回実習課題C,Dのページ>Graphics/2019/ex14CD]]
#contents
//&color(#ff0000){工事中};
//**注意 [#notice]
**課題C,Dのための準備 [#o0bcb890]
+ 以下の3つのファイルをダウンロードしていつもの場所に置き...
-- [[Graphics:SammokuSample.class]]
-- [[Graphics:SammokuGUISample.class]]
-- [[Graphics:sammokuGUI.css]]
+ SammokuSample を実行してみましょう.
-- 盤面の外や既に o/x が置いてある所を指定するとどうなる?
-- 勝ち/負け/引き分けの判定はしてないですね
+ SammokuGUISample を実行してみましょう.
-- SammokuSampleクラス使ってます
-- 適当にボタンを押してみよう
**課題C(TA) 完成目標: 次回の実習終了30分前まで [#kadaiC]
//&color(blue){この課題の点数は通常の実習課題の点数とは別...
***まとめの演習Step0 -- Sammoku (ver.0) を作ろう [#step0]
[[''Step0''>#step0]] [[Step1>#step1]] [[Step2>#step2]] ...
&color(#00a000){(^o^)/ まずはキー入力の処理だけのプログラ...
次のような動作をするプログラムを作ろう.★から右側は解説.
#pre{{
0 1 2
0| | | |
1| | | | ★ 盤面を数字と縦棒で表示
2| | | |
横縦の順に値を入力してね(例: 2 1): 2 1 ★ 右側の 2 1...
(2,1) ★ 入力された値を表示
0 1 2
0| | | |
1| | | | ★ ver.0 では o や x の表示はなく,常に空の...
2| | | |
横縦の順に値を入力してね(例: 2 1): 1 1
(1,1)
0 1 2
0| | | |
1| | | |
2| | | |
横縦の順に値を入力してね(例: 2 1): -1 2 ★ 盤面内の数...
(-1,2)
0 1 2
0| | | |
1| | | |
2| | | |
横縦の順に値を入力してね(例: 2 1): 99 100
(99,100)
0 1 2
0| | | |
1| | | |
2| | | |
横縦の順に値を入力してね(例: 2 1): 0 hoge ★ 整数とし...
横縦の順に値を入力してね(例: 2 1):
}}
&color(red){/(*_*) 次のことを守ってプログラムを考えよう};
+ クラス名は Sammoku とする.
+ ver.0 では,盤面を表示するインスタンスメソッド(引数な...
+ mainメソッドは,以下のプログラム例を参考に作ろう.
#pre{{
import java.util.*; // for Scanner class
public class Hoge{
public static void main(String[] args){
// キー入力を扱う Scanner クラス
Scanner sc = new Scanner(System.in);
// 空白を区切りとして2つの整数を入力するとその和を出力
// 動作確認のためわざと変な入力をしてみるとよい
while(true){
int x, y;
boolean done = false;
do{
System.out.print("x y : ");
try{
x = Integer.parseInt(sc.next());
y = Integer.parseInt(sc.next());
sc.nextLine(); // この行の残りを読みとばす
done = true;
}catch(NumberFormatException e){
x = y = 0;
sc.nextLine(); // この行の残りを読みとばす
done = false;
}
}while(!done);
System.out.println("x + y = " + (x + y));
}
}
}
}}
***まとめの演習Step1 -- Sammoku (ver.1) を作ろう [#step1]
[[Step0>#step0]] [[''Step1''>#step1]] [[Step2>#step2]] ...
&color(#00a000){(^o^)/ キー入力で指定された位置に o や x ...
次のような動作をするプログラムを作ろう.
以下の動作例からわかるように,このver.1では,SammokuSampl...
#pre{{
0 1 2
0| | | |
1| | | |
2| | | |
横縦の順に値を入力してね(例: 2 1): 0 0
(0,0) に置いたで
0 1 2
0|o| | |
1| | | |
2| | | |
横縦の順に値を入力してね(例: 2 1): 0 0
(0,0) に置いたで
0 1 2
0|x| | |
1| | | |
2| | | |
横縦の順に値を入力してね(例: 2 1): 0 hoge
横縦の順に値を入力してね(例: 2 1): 0 100
Exception in thread "main" java.lang.ArrayIndexOutOfBound...
}}
&color(red){/(*_*) 次のことを守ってプログラムを考えよう};
以下の「&color(blue){クラスの設計を考えよう};」をよく読ん...
***クラスの設計を考えよう [#i0e89597]
&color(Blue){/(?_?) Sammokuクラスのオブジェクトは,データ...
つまり,インスタンス変数やクラス変数としてどんなものを用...
→ 例えば盤面はどう扱う?
○や×などの文字列で扱うのはややこしいからやめた方がよい
→ 適当に整数値を割り当てるのがよいだろう.
といっても,マスの数ぶんの変数を一つ一つばらばらに用意す...
→ ということは…
&color(Blue){/(*_*) 次のことを守ってプログラムを考えよう}...
+ 盤面を表す変数などは外部から勝手にいじられたりしないよ...
&color(Blue){/(?_?) Sammokuクラスのオブジェクトにはどんな...
一つのメソッドがいろんな仕事をするように作ると使い勝手が...
一つのメソッドはなるべく単純な仕事しかしないように作って...
→ そういうわけで,次のような5つの機能に分ける構成としてみ...
- 盤面の初期化: コンストラクタで
- 指定された位置のマスの値(○や×を表す値)を返す:
- 指定された位置のマスを指定された値(○や×を表す値)にす...
- 盤面を表示: ver.0 で作成したメソッドを改造
- キー入力を受け付けて上記のメソッドたちを呼ぶ動作を繰り...
***まとめの演習Step2 -- Sammoku (ver.2) を作ろう [#step2]
[[Step0>#step0]] [[Step1>#step1]] [[''Step2''>#step2]] ...
&color(#00a000){(^o^)/ 盤面外や既に○×が置いてある場所を指...
そのためには,指定した位置に○×を置ける/置けないを判定す...
というわけで,次の仕様のメソッドを定義してそれを使うよう...
:boolean isPlaceable(int x, int y)|
位置 (x,y) が置ける場所なら,つまり (x,y) が盤面内でかつ...
**課題D(TA) 完成目標: 次回の実習終了30分前まで [#kadaiD]
//&color(blue){この課題の点数は通常の実習課題の点数とは別...
***まとめの演習Step3 -- SammokuGUI を作ろう [#step3]
[[Step0>#step0]] [[Step1>#step1]] [[Step2>#step2]] [['...
SammokuGUISample と同様のふるまいをするプログラム(Sammok...
- Sammokuクラスを利用する(Sammokuのインスタンスを生成し...
- Button の2次元配列を作るとよい
- ボタンをサンプルのように配置するには,GridPane を使えば...
- CSS ファイル sammokuGUI.css で全てのボタンに対するスタ...
#pre{{
Scene scene = new Scene(root);
scene.getStylesheets().add("sammokuGUI.css");
}}
★★★ 次は [[Step4>Graphics/2019/ex14#kadaiS]](おまけ課題)
#hr
- [[第14回実習課題全体のページ>Graphics/2019/ex14]]
- [[第14回実習課題A,Bのページ>Graphics/2019/ex14AB]]
- [[第14回実習課題C,Dのページ>Graphics/2019/ex14CD]]
終了行:
*グラフィックス基礎及び実習 2019年度 第14回課題C,D [#e970...
- [[第14回実習課題全体のページ>Graphics/2019/ex14]]
- [[第14回実習課題A,Bのページ>Graphics/2019/ex14AB]]
- [[第14回実習課題C,Dのページ>Graphics/2019/ex14CD]]
#contents
//&color(#ff0000){工事中};
//**注意 [#notice]
**課題C,Dのための準備 [#o0bcb890]
+ 以下の3つのファイルをダウンロードしていつもの場所に置き...
-- [[Graphics:SammokuSample.class]]
-- [[Graphics:SammokuGUISample.class]]
-- [[Graphics:sammokuGUI.css]]
+ SammokuSample を実行してみましょう.
-- 盤面の外や既に o/x が置いてある所を指定するとどうなる?
-- 勝ち/負け/引き分けの判定はしてないですね
+ SammokuGUISample を実行してみましょう.
-- SammokuSampleクラス使ってます
-- 適当にボタンを押してみよう
**課題C(TA) 完成目標: 次回の実習終了30分前まで [#kadaiC]
//&color(blue){この課題の点数は通常の実習課題の点数とは別...
***まとめの演習Step0 -- Sammoku (ver.0) を作ろう [#step0]
[[''Step0''>#step0]] [[Step1>#step1]] [[Step2>#step2]] ...
&color(#00a000){(^o^)/ まずはキー入力の処理だけのプログラ...
次のような動作をするプログラムを作ろう.★から右側は解説.
#pre{{
0 1 2
0| | | |
1| | | | ★ 盤面を数字と縦棒で表示
2| | | |
横縦の順に値を入力してね(例: 2 1): 2 1 ★ 右側の 2 1...
(2,1) ★ 入力された値を表示
0 1 2
0| | | |
1| | | | ★ ver.0 では o や x の表示はなく,常に空の...
2| | | |
横縦の順に値を入力してね(例: 2 1): 1 1
(1,1)
0 1 2
0| | | |
1| | | |
2| | | |
横縦の順に値を入力してね(例: 2 1): -1 2 ★ 盤面内の数...
(-1,2)
0 1 2
0| | | |
1| | | |
2| | | |
横縦の順に値を入力してね(例: 2 1): 99 100
(99,100)
0 1 2
0| | | |
1| | | |
2| | | |
横縦の順に値を入力してね(例: 2 1): 0 hoge ★ 整数とし...
横縦の順に値を入力してね(例: 2 1):
}}
&color(red){/(*_*) 次のことを守ってプログラムを考えよう};
+ クラス名は Sammoku とする.
+ ver.0 では,盤面を表示するインスタンスメソッド(引数な...
+ mainメソッドは,以下のプログラム例を参考に作ろう.
#pre{{
import java.util.*; // for Scanner class
public class Hoge{
public static void main(String[] args){
// キー入力を扱う Scanner クラス
Scanner sc = new Scanner(System.in);
// 空白を区切りとして2つの整数を入力するとその和を出力
// 動作確認のためわざと変な入力をしてみるとよい
while(true){
int x, y;
boolean done = false;
do{
System.out.print("x y : ");
try{
x = Integer.parseInt(sc.next());
y = Integer.parseInt(sc.next());
sc.nextLine(); // この行の残りを読みとばす
done = true;
}catch(NumberFormatException e){
x = y = 0;
sc.nextLine(); // この行の残りを読みとばす
done = false;
}
}while(!done);
System.out.println("x + y = " + (x + y));
}
}
}
}}
***まとめの演習Step1 -- Sammoku (ver.1) を作ろう [#step1]
[[Step0>#step0]] [[''Step1''>#step1]] [[Step2>#step2]] ...
&color(#00a000){(^o^)/ キー入力で指定された位置に o や x ...
次のような動作をするプログラムを作ろう.
以下の動作例からわかるように,このver.1では,SammokuSampl...
#pre{{
0 1 2
0| | | |
1| | | |
2| | | |
横縦の順に値を入力してね(例: 2 1): 0 0
(0,0) に置いたで
0 1 2
0|o| | |
1| | | |
2| | | |
横縦の順に値を入力してね(例: 2 1): 0 0
(0,0) に置いたで
0 1 2
0|x| | |
1| | | |
2| | | |
横縦の順に値を入力してね(例: 2 1): 0 hoge
横縦の順に値を入力してね(例: 2 1): 0 100
Exception in thread "main" java.lang.ArrayIndexOutOfBound...
}}
&color(red){/(*_*) 次のことを守ってプログラムを考えよう};
以下の「&color(blue){クラスの設計を考えよう};」をよく読ん...
***クラスの設計を考えよう [#i0e89597]
&color(Blue){/(?_?) Sammokuクラスのオブジェクトは,データ...
つまり,インスタンス変数やクラス変数としてどんなものを用...
→ 例えば盤面はどう扱う?
○や×などの文字列で扱うのはややこしいからやめた方がよい
→ 適当に整数値を割り当てるのがよいだろう.
といっても,マスの数ぶんの変数を一つ一つばらばらに用意す...
→ ということは…
&color(Blue){/(*_*) 次のことを守ってプログラムを考えよう}...
+ 盤面を表す変数などは外部から勝手にいじられたりしないよ...
&color(Blue){/(?_?) Sammokuクラスのオブジェクトにはどんな...
一つのメソッドがいろんな仕事をするように作ると使い勝手が...
一つのメソッドはなるべく単純な仕事しかしないように作って...
→ そういうわけで,次のような5つの機能に分ける構成としてみ...
- 盤面の初期化: コンストラクタで
- 指定された位置のマスの値(○や×を表す値)を返す:
- 指定された位置のマスを指定された値(○や×を表す値)にす...
- 盤面を表示: ver.0 で作成したメソッドを改造
- キー入力を受け付けて上記のメソッドたちを呼ぶ動作を繰り...
***まとめの演習Step2 -- Sammoku (ver.2) を作ろう [#step2]
[[Step0>#step0]] [[Step1>#step1]] [[''Step2''>#step2]] ...
&color(#00a000){(^o^)/ 盤面外や既に○×が置いてある場所を指...
そのためには,指定した位置に○×を置ける/置けないを判定す...
というわけで,次の仕様のメソッドを定義してそれを使うよう...
:boolean isPlaceable(int x, int y)|
位置 (x,y) が置ける場所なら,つまり (x,y) が盤面内でかつ...
**課題D(TA) 完成目標: 次回の実習終了30分前まで [#kadaiD]
//&color(blue){この課題の点数は通常の実習課題の点数とは別...
***まとめの演習Step3 -- SammokuGUI を作ろう [#step3]
[[Step0>#step0]] [[Step1>#step1]] [[Step2>#step2]] [['...
SammokuGUISample と同様のふるまいをするプログラム(Sammok...
- Sammokuクラスを利用する(Sammokuのインスタンスを生成し...
- Button の2次元配列を作るとよい
- ボタンをサンプルのように配置するには,GridPane を使えば...
- CSS ファイル sammokuGUI.css で全てのボタンに対するスタ...
#pre{{
Scene scene = new Scene(root);
scene.getStylesheets().add("sammokuGUI.css");
}}
★★★ 次は [[Step4>Graphics/2019/ex14#kadaiS]](おまけ課題)
#hr
- [[第14回実習課題全体のページ>Graphics/2019/ex14]]
- [[第14回実習課題A,Bのページ>Graphics/2019/ex14AB]]
- [[第14回実習課題C,Dのページ>Graphics/2019/ex14CD]]
ページ名: