aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/com
diff options
context:
space:
mode:
authorCamil Staps2015-04-29 11:43:50 +0200
committerCamil Staps2015-04-29 11:43:50 +0200
commit71f415e5c1cac0ed491113e35a65ebc1ae75bb7d (patch)
tree9baddadf846681823228340b4346d817f813f4bf /app/src/main/java/com
parentMerge branch 'master' into MainActivity (diff)
Highscores
Diffstat (limited to 'app/src/main/java/com')
-rw-r--r--app/src/main/java/com/camilstaps/rushhour/Board.java21
-rw-r--r--app/src/main/java/com/camilstaps/rushhour/FinishedActivity.java101
-rwxr-xr-xapp/src/main/java/com/camilstaps/rushhour/GamePlayActivity.java12
-rw-r--r--app/src/main/java/com/camilstaps/rushhour/HighScore.java4
-rw-r--r--app/src/main/java/com/camilstaps/rushhour/HighScoreList.java19
5 files changed, 147 insertions, 10 deletions
diff --git a/app/src/main/java/com/camilstaps/rushhour/Board.java b/app/src/main/java/com/camilstaps/rushhour/Board.java
index bdfb6d4..7f1f842 100644
--- a/app/src/main/java/com/camilstaps/rushhour/Board.java
+++ b/app/src/main/java/com/camilstaps/rushhour/Board.java
@@ -1,9 +1,11 @@
package com.camilstaps.rushhour;
import android.content.Context;
+import android.content.Intent;
import android.util.Log;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
+import android.widget.Toast;
import java.util.HashSet;
import java.util.Set;
@@ -18,6 +20,9 @@ public class Board {
public static final int DIMENSION = 6;
private DriveListener driveListener;
+ private SolveListener solveListener;
+
+ private int score;
/**
* Move a car if possible, and call the appropriate listeners
@@ -37,6 +42,10 @@ public class Board {
}
}
car.move(offset);
+ score++;
+ if (isSolved() && solveListener != null) {
+ solveListener.onSolve(score);
+ }
driveListener.onDrive();
}
};
@@ -76,9 +85,9 @@ public class Board {
* @return
*/
public boolean isSolved() {
- for (int x = DIMENSION - 1; x >= 0; x++) {
+ for (int x = DIMENSION - 1; x >= 0; x--) {
for (Car car : cars) {
- if (car.occupies(new Coordinate(x, 3))) {
+ if (car.occupies(new Coordinate(x, 2))) {
if (car.canMoveHorizontally()) {
return true;
} else {
@@ -94,4 +103,12 @@ public class Board {
driveListener = dl;
}
+ public interface SolveListener {
+ public void onSolve(int score);
+ }
+
+ public void setSolveListener(SolveListener sl) {
+ solveListener = sl;
+ }
+
}
diff --git a/app/src/main/java/com/camilstaps/rushhour/FinishedActivity.java b/app/src/main/java/com/camilstaps/rushhour/FinishedActivity.java
new file mode 100644
index 0000000..9c092a3
--- /dev/null
+++ b/app/src/main/java/com/camilstaps/rushhour/FinishedActivity.java
@@ -0,0 +1,101 @@
+package com.camilstaps.rushhour;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.support.v7.app.ActionBarActivity;
+import android.os.Bundle;
+import android.text.Editable;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import com.camilstaps.rushhour.R;
+
+import java.util.ArrayList;
+
+public class FinishedActivity extends ActionBarActivity {
+
+ Context context;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_finished);
+
+ context = this;
+
+ final HighScoreList list = new HighScoreList(this);
+
+ final int score = getIntent().getIntExtra("score", Integer.MAX_VALUE);
+ final EditText input = new EditText(this);
+ new AlertDialog.Builder(this)
+ .setTitle("Enter name")
+ .setView(input)
+ .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int whichButton) {
+ Editable value = input.getText();
+ list.addToList(new HighScore(score, value.toString()));
+ list.save(context);
+ }
+ })
+ .show();
+
+ ListView highscoresListView = (ListView) findViewById(R.id.highscoresListView);
+
+ HighScoreAdapter arrayAdapter = new HighScoreAdapter(this, R.layout.highscore_item, list.getList());
+
+ highscoresListView.setAdapter(arrayAdapter);
+ }
+
+ private class HighScoreAdapter extends ArrayAdapter<HighScore> {
+ Context context;
+ int layoutResourceId;
+ ArrayList<HighScore> data;
+
+ public HighScoreAdapter(Context context, int layoutResourceId, ArrayList<HighScore> data) {
+ super(context, layoutResourceId, data);
+ this.layoutResourceId = layoutResourceId;
+ this.context = context;
+ this.data = data;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ View row = convertView;
+ HighScoreHolder holder;
+
+ if(row == null) {
+ LayoutInflater inflater = ((Activity)context).getLayoutInflater();
+ row = inflater.inflate(layoutResourceId, parent, false);
+
+ holder = new HighScoreHolder();
+ holder.score = (TextView)row.findViewById(R.id.score);
+ holder.name = (TextView)row.findViewById(R.id.name);
+
+ row.setTag(holder);
+ } else {
+ holder = (HighScoreHolder)row.getTag();
+ }
+
+ HighScore highscore = data.get(position);
+ holder.name.setText(highscore.getName());
+ holder.score.setText(Integer.toString(highscore.getScore()));
+
+ return row;
+ }
+
+ private class HighScoreHolder {
+ TextView score, name;
+ }
+ }
+
+}
diff --git a/app/src/main/java/com/camilstaps/rushhour/GamePlayActivity.java b/app/src/main/java/com/camilstaps/rushhour/GamePlayActivity.java
index d7958c3..dd3bafe 100755
--- a/app/src/main/java/com/camilstaps/rushhour/GamePlayActivity.java
+++ b/app/src/main/java/com/camilstaps/rushhour/GamePlayActivity.java
@@ -1,6 +1,7 @@
package com.camilstaps.rushhour;
import android.app.Activity;
+import android.content.Intent;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
@@ -9,7 +10,7 @@ import android.widget.RelativeLayout;
import java.io.InputStream;
-public class GamePlayActivity extends Activity {
+public class GamePlayActivity extends Activity implements Board.SolveListener {
private SoundPool soundPool;
private int soundBackgroundId, soundCarDriveId, soundCantMoveId;
@@ -51,6 +52,8 @@ public class GamePlayActivity extends Activity {
soundPool.play(soundCantMoveId, 1, 1, 1, 0, 1);
}
});
+
+ board.setSolveListener(this);
}
/**
@@ -70,4 +73,11 @@ public class GamePlayActivity extends Activity {
soundCarDriveId = soundPool.load(this, R.raw.car_drive, 1);
soundCantMoveId = soundPool.load(this, R.raw.cantmove, 1);
}
+
+ @Override
+ public void onSolve(int score) {
+ Intent intent = new Intent(this, FinishedActivity.class);
+ intent.putExtra("score", score);
+ startActivity(intent);
+ }
}
diff --git a/app/src/main/java/com/camilstaps/rushhour/HighScore.java b/app/src/main/java/com/camilstaps/rushhour/HighScore.java
index 9168f02..5bff298 100644
--- a/app/src/main/java/com/camilstaps/rushhour/HighScore.java
+++ b/app/src/main/java/com/camilstaps/rushhour/HighScore.java
@@ -47,7 +47,7 @@ public class HighScore implements Comparable<HighScore> {
public int compareTo(HighScore other_score) {
if (other_score.score < score)
{
- return -1;
+ return 1;
}
else if (other_score.score == score)
{
@@ -55,7 +55,7 @@ public class HighScore implements Comparable<HighScore> {
}
else
{
- return 1;
+ return -1;
}
}
diff --git a/app/src/main/java/com/camilstaps/rushhour/HighScoreList.java b/app/src/main/java/com/camilstaps/rushhour/HighScoreList.java
index 4d8f829..f84b30f 100644
--- a/app/src/main/java/com/camilstaps/rushhour/HighScoreList.java
+++ b/app/src/main/java/com/camilstaps/rushhour/HighScoreList.java
@@ -8,6 +8,7 @@ package com.camilstaps.rushhour;
import android.content.Context;
import android.preference.PreferenceManager;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
@@ -21,9 +22,9 @@ public class HighScoreList {
private final String PREFERENCES_KEY = "highscores";
- private List<HighScore> list;
+ private ArrayList<HighScore> list;
- public HighScoreList (List<HighScore> some_list) {
+ public HighScoreList (ArrayList<HighScore> some_list) {
this.list = some_list;
}
@@ -32,13 +33,17 @@ public class HighScoreList {
* @param context
*/
public HighScoreList(Context context) {
- Set<String> jsonList = PreferenceManager.getDefaultSharedPreferences(context).getStringSet(PREFERENCES_KEY, new HashSet<String>());
+ Set<String> jsonList = PreferenceManager
+ .getDefaultSharedPreferences(context)
+ .getStringSet(PREFERENCES_KEY, new HashSet<String>());
+ list = new ArrayList<>();
for (String json : jsonList) {
list.add(new HighScore(json));
}
+ Collections.sort(list);
}
- public List<HighScore> getList() {
+ public ArrayList<HighScore> getList() {
return list;
}
@@ -57,7 +62,11 @@ public class HighScoreList {
for (HighScore hs : list) {
jsonList.add(hs.toString());
}
- PreferenceManager.getDefaultSharedPreferences(context).edit().putStringSet(PREFERENCES_KEY, jsonList).apply();
+ PreferenceManager
+ .getDefaultSharedPreferences(context)
+ .edit()
+ .putStringSet(PREFERENCES_KEY, jsonList)
+ .apply();
}
}