次のゲームがやっと出来上がり、公開にこぎつけました。
今回は画面表示周りでちょっと苦労しました。
今回はリバーシを作ろうと思っており、コンピュータでしかできないことをやりたいなぁと思い、
盤面サイズを無限大(メモリの続く限り)にしようと…
本当に無限大だとゲームが終わりませんので、100個の石でという制限をつけました。
こうすると、今までのリバーシの定石が通用しなくて
CPU相手にレベル最強、CPU白手順(後攻)だと、未だに1勝もできていません。
全然勝てる気がしないのです。
話は変わって、今回は設定画面にシークバーを使用しました。
今まで使用したことがなかったので、どうするのか悩んでいましたが、
以下のようにしました。
ダイアログでは AlertDialog.Builderを使用しているので、xmlファイルを読み込むためには
一工夫必要になります。
(1) ダイアログ用xmlファイルの作成。ここにシークバーの設定も行う。
(2) ダイアログ用xmlファイルの読み込み
(3) ダイアログ表示時にシークバーへの設定を行う
(1) xmlファイルの内容 (res/layout/setting_dialog.xml)
<SeekBar
android:id="@+id/seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp">
</SeekBar>
(2) ダイアログ用xmlファイルの読み込み
View view = getActivity().getLayoutInflater().inflate(R.layout.setting_dialog, null);
builder.setView(view);
(3) シークバーへの設定
SeekBar seekbar = (SeekBar)view.findViewById(R.id.seekbar);
seekbar.setMax(GL.MAX_LEVEL);
seekbar.setProgress(ProgressValue);
seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
ProgressValue = progress;
}
public void onStartTrackingTouch(SeekBar seekBar) {
// シークバー トラッキング開始
}
public void onStopTrackingTouch(SeekBar seekBar) {
// シークバー トラッキング終了
seekBar.setSecondaryProgress(seekBar.getProgress());
}
});
これで、 ProgressValueにシークバーの値(0~GL.MAX_LEVEL)が入るようになります。
開始が0で、これは変更ができません。
0 件のコメント:
コメントを投稿