diff options
Diffstat (limited to 'app/src/main/java/com/camilstaps/rushhour')
-rwxr-xr-x | app/src/main/java/com/camilstaps/rushhour/BoardLoader.java | 55 | ||||
-rwxr-xr-x[-rw-r--r--] | app/src/main/java/com/camilstaps/rushhour/Car.java | 61 | ||||
-rwxr-xr-x[-rw-r--r--] | app/src/main/java/com/camilstaps/rushhour/GamePlayActivity.java | 32 |
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() { |