絵や音など材料を準備できたらいよいよプログラミングです。
Anroid Studioでプロジェクトを作成します。自動で生成されるMainActivity以外のクラスを考えました。
・表示用のTamaireViewクラス Viewクラスを継承します。
・ひよこ表示のHiyokoクラス
・玉を表示するBallクラス
・カゴを表示するKagoクラス
次にプログラムの流れを考えます。
Andoidではアプリが起動すると最初にMainActivityクラスのonCreateメソッドが呼び出されます。
この中で以下の処理をします。
・TamaireViewのインスタンス(tamaireView)を生成
・tamaireViewを表示に指定
・一定の間隔で画面の更新するためのコールバック処理指定
public class MainActivity extends AppCompatActivity {
private Handler handler = new Handler();
private TamaireView tamaireView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tamaireView = new TamaireView(this);
setContentView(tamaireView);
Timer timer = new Timer(false);
timer.schedule(new TimerTask(){
public void run(){
handler.post(new Runnable(){
public void run(){
tamaireView.invalidate();
}
});
}
},0,30);
}
ゲームの画面のインスタンスを生成します。
tamaireView = new TamaireView(this);
生成したインスタンスを表示対象として設定します。
setContentView(tamaireView);
ゲームの画面は短時間で描画を繰り返す必要があります。Timerクラスtimerインスタンスを生成し、tamaireViewのonDrawを一定間隔で呼び出します。下記
ソースファイルにはonDrawと書かれていませんが呼び出されます。
Timer timer = new Timer(false);
timer.schedule(new TimerTask(){
public void run(){
handler.post(new Runnable(){
public void run(){
tamaireView.invalidate();
}
});
}
},0,30);
次にTamaireViewクラスです。今回は何もしない空の状態です。
public class TamaireView extends View {
private Hiyoko hiyokoRed,hiyokoWhite;
private Ball[] ballRed;
private Ball[] ballWhite;
private Kago kago;
TamaireView(Context context){
super(context);
}
@Override
public void onDraw(Canvas canvas) {
}
Hiyokoクラスの紅組のひよこ(hiyokoRed)と白組のひよこ(hiyokoWhite)、2つのオブジェクトを宣言します。ボールも2種類宣言しますが玉入れはボールが何個もあるので配列としておきます。また、カゴもKagoクラスとして宣言します。実際の玉入れ競技ではチームごとにカゴを用意しますがスマホ画面は狭いので一つのカゴを紅白両チームの共用とします。/
TamaireView(Context context)はコンストラクタです。
onDraw(Canvas canvas)はMainActivityクラス中の一定間隔で呼び出されると説明したメソッドです。この中に描画や描画で発生する条件判断を記載します。
次回は画面の表示を扱います。

