aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/com/camilstaps/rushhour
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/com/camilstaps/rushhour')
-rwxr-xr-xapp/src/main/java/com/camilstaps/rushhour/BoardLoader.java55
-rwxr-xr-x[-rw-r--r--]app/src/main/java/com/camilstaps/rushhour/Car.java61
-rwxr-xr-x[-rw-r--r--]app/src/main/java/com/camilstaps/rushhour/GamePlayActivity.java32
3 files changed, 134 insertions, 14 deletions
diff --git a/app/src/main/java/com/camilstaps/rushhour/BoardLoader.java b/app/src/main/java/com/camilstaps/rushhour/BoardLoader.java
new file mode 100755
index 0000000..c92c96b
--- /dev/null
+++ b/app/src/main/java/com/camilstaps/rushhour/BoardLoader.java
@@ -0,0 +1,55 @@
+package com.camilstaps.rushhour;
+
+import android.graphics.Color;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Scanner;
+
+/**
+ * Created by Jos on 23-4-2015.
+ */
+public class BoardLoader {
+ public BoardLoader()
+ {}
+
+ public Board loadBoard(InputStream file)
+ {
+ /*
+ Level formaat:
+ 1 regel: Aantal auto's
+
+ voor iedere auto:
+ x1 y1 x2 y2 op een regel.
+ r g b op een regel.
+ */
+ Scanner scan = new Scanner(file);
+
+ Board board = new Board();
+
+ int numCars = scan.nextInt();
+ scan.nextLine();
+
+ for(int carN = 0; carN < numCars; carN++)
+ {
+ int x1 = scan.nextInt();
+ int y1 = scan.nextInt();
+ int x2 = scan.nextInt();
+ int y2 = scan.nextInt();
+ scan.nextLine();
+
+ int r = scan.nextInt();
+ int g = scan.nextInt();
+ int b = scan.nextInt();
+
+ Car c = new Car(new Coordinate(x1, y1), new Coordinate(x2, y2), Color.rgb(r, g, b));
+ board.add(c);
+
+ if(scan.hasNext()) scan.nextLine();
+ }
+
+ return board;
+ }
+}
diff --git a/app/src/main/java/com/camilstaps/rushhour/Car.java b/app/src/main/java/com/camilstaps/rushhour/Car.java
index 2dce203..faa5796 100644..100755
--- a/app/src/main/java/com/camilstaps/rushhour/Car.java
+++ b/app/src/main/java/com/camilstaps/rushhour/Car.java
@@ -11,6 +11,8 @@ import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TableLayout;
+import java.util.Random;
+
/**
* Created by camilstaps on 16-4-15.
*/
@@ -58,7 +60,40 @@ public class Car {
calculatedHeight = (int) ((endCoordinate.getY() - startCoordinate.getY() + 1) * (this.widthPerCell + MARGIN) - MARGIN);
iv = new ImageView(context);
- iv.setBackgroundColor(colour);
+
+ int[] images = null;
+ if(canMoveHorizontally()) {
+ if(getCarLength() == 2) {
+ images = new int[] {
+ R.drawable.car_1_white,
+ R.drawable.car_2_white,
+ R.drawable.car_3_white,
+ R.drawable.car_4_white};
+ }else{
+ images = new int[] {
+ R.drawable.truck_1_white,
+ R.drawable.truck_2_white,
+ R.drawable.truck_3_white,
+ R.drawable.truck_4_white};
+ }
+ }else{
+ if(getCarLength() == 2) {
+ images = new int[] {
+ R.drawable.car_1_white_vertical,
+ R.drawable.car_2_white_vertical,
+ R.drawable.car_3_white_vertical,
+ R.drawable.car_4_white_vertical};
+ }else{
+ images = new int[] {
+ R.drawable.truck_1_white_vertical,
+ R.drawable.truck_2_white_vertical,
+ R.drawable.truck_3_white_vertical,
+ R.drawable.truck_4_white_vertical};
+ }
+ }
+
+ iv.setImageResource(choose(images));
+ iv.setColorFilter(colour);
iv.setMinimumWidth(calculatedWidth);
iv.setMinimumHeight(calculatedHeight);
@@ -76,6 +111,30 @@ public class Car {
return iv;
}
+ private static int choose(int[] a)
+ {
+ Random r = new Random();
+ return a[r.nextInt(a.length)];
+ }
+
+ private float getCarDirection()
+ {
+ final double TWOPI = Math.PI * 2;
+ double radians = ((Math.atan2(startCoordinate.getY() - endCoordinate.getY(), endCoordinate.getX() - startCoordinate.getX()) + TWOPI) % TWOPI);
+ double degrees = radians / Math.PI * 180.0;
+
+ return (float)degrees;
+ }
+ private int getCarLength()
+ {
+ if(startCoordinate.getX() == endCoordinate.getX())
+ {
+ return endCoordinate.getY() - startCoordinate.getY() + 1;
+ }else{
+ return endCoordinate.getX() - startCoordinate.getX() + 1;
+ }
+ }
+
public boolean canMoveHorizontally() {
return startCoordinate.getY() == endCoordinate.getY();
}
diff --git a/app/src/main/java/com/camilstaps/rushhour/GamePlayActivity.java b/app/src/main/java/com/camilstaps/rushhour/GamePlayActivity.java
index 1c0b2ab..f0dd4af 100644..100755
--- a/app/src/main/java/com/camilstaps/rushhour/GamePlayActivity.java
+++ b/app/src/main/java/com/camilstaps/rushhour/GamePlayActivity.java
@@ -8,6 +8,8 @@ import android.os.Bundle;
import android.view.ViewTreeObserver;
import android.widget.RelativeLayout;
+import java.io.InputStream;
+
public class GamePlayActivity extends Activity {
private SoundPool soundPool;
@@ -19,19 +21,23 @@ public class GamePlayActivity extends Activity {
setContentView(R.layout.activity_fullscreen);
- final Board board = new Board();
- board.add(new Car(new Coordinate(0,0), new Coordinate(2,0), Color.YELLOW));
- board.add(new Car(new Coordinate(3,0), new Coordinate(3,1), Color.rgb(128,223,182)));
- board.add(new Car(new Coordinate(4,0), new Coordinate(4,2), Color.rgb(198, 134,221)));
- board.add(new Car(new Coordinate(0,2), new Coordinate(1,2), Color.RED));
- board.add(new Car(new Coordinate(5,2), new Coordinate(5,3), Color.rgb(255,165,0)));
- board.add(new Car(new Coordinate(0,3), new Coordinate(0,4), Color.rgb(158,231,246)));
- board.add(new Car(new Coordinate(1,3), new Coordinate(2,3), Color.rgb(245,158,246)));
- board.add(new Car(new Coordinate(3,3), new Coordinate(4,3), Color.rgb(150,126,196)));
- board.add(new Car(new Coordinate(1,4), new Coordinate(2,4), Color.GREEN));
- board.add(new Car(new Coordinate(3,4), new Coordinate(3,5), Color.BLACK));
- board.add(new Car(new Coordinate(5,4), new Coordinate(5,5), Color.rgb(219,202,161)));
- board.add(new Car(new Coordinate(0,5), new Coordinate(2,5), Color.rgb(25,195,167)));
+ InputStream input = getResources().openRawResource(R.raw.level);
+
+ BoardLoader loader = new BoardLoader();
+ final Board board = loader.loadBoard(input);
+ //final Board board = new Board();
+// board.add(new Car(new Coordinate(0,0), new Coordinate(2,0), Color.YELLOW));
+// board.add(new Car(new Coordinate(3,0), new Coordinate(3,1), Color.rgb(128,223,182)));
+// board.add(new Car(new Coordinate(4,0), new Coordinate(4,2), Color.rgb(198, 134,221)));
+// board.add(new Car(new Coordinate(0,2), new Coordinate(1,2), Color.RED));
+// board.add(new Car(new Coordinate(5,2), new Coordinate(5,3), Color.rgb(255,165,0)));
+// board.add(new Car(new Coordinate(0,3), new Coordinate(0,4), Color.rgb(158,231,246)));
+// board.add(new Car(new Coordinate(1,3), new Coordinate(2,3), Color.rgb(245,158,246)));
+// board.add(new Car(new Coordinate(3,3), new Coordinate(4,3), Color.rgb(150,126,196)));
+// board.add(new Car(new Coordinate(1,4), new Coordinate(2,4), Color.GREEN));
+// board.add(new Car(new Coordinate(3,4), new Coordinate(3,5), Color.BLACK));
+// board.add(new Car(new Coordinate(5,4), new Coordinate(5,5), Color.rgb(219,202,161)));
+// board.add(new Car(new Coordinate(0,5), new Coordinate(2,5), Color.rgb(25,195,167)));
soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 0);
soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {