こんにちはアンドロイドの本には数独の解決策があります。最後に、おめでとうというダイアログを表示するメッセージを作成したかったのです。空の正方形が残っているかどうかを確認するメソッドがあり、最後の入力が正方形の有効なエントリであるかどうかを確認する別のメソッドでそれを呼び出します
/****** Check to see if the game is complete **/
public boolean isSolved() {
for (int element : puzzle) {
if (element == 0)
return false;
}
return true;
}
/** Change the tile only if it's a valid move */
protected boolean setTileIfValid(int x, int y, int value) {
int tiles[] = getUsedTiles(x, y);
if (value != 0) {
for (int tile : tiles) {
if (tile == value)
return false;
}
}
setTile(x, y, value);
calculateUsedTiles();
//check if the game is complete after each valid move
if (isSolved() == true) {
Intent i = new Intent(this, Congratulations.class);
startActivity(i);}
else
{
return false;
}
return true;
}
どういうわけか、ゲームが完了する前にタイルに入ると、画面全体が左右に揺れます。私がゲームのチェックに入る前に、これはこれをしませんでした。なぜ、どこでこれを行っているのですか?
Congratulatons.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dip" >
<TextView
android:id="@+id/about_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/congratulations_text" />
</ScrollView>
Congratulations.java
package com.example.sudoku;
import android.app.Activity;
import android.os.Bundle;
public class Congratulations extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.congratulations);
}
}