Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package snowstorm.games.knightraid;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Random;
- import android.util.Log;
- import android.view.Gravity;
- import android.widget.Toast;
- import snowstorm.games.knightraid.objects.Enemy;
- import snowstorm.games.knightraid.objects.InnerSanctum_LB;
- import snowstorm.games.knightraid.objects.InnerSanctum_LT;
- import snowstorm.games.knightraid.objects.InnerSanctum_RB;
- import snowstorm.games.knightraid.objects.InnerSanctum_RT;
- import snowstorm.games.knightraid.objects.Klok;
- import snowstorm.games.knightraid.objects.SpawnPoint;
- import snowstorm.games.knightraid.objects.Tower;
- import snowstorm.games.knightraid.objects.Wave;
- import snowstorm.games.playground.model.Game;
- import snowstorm.games.playground.model.GameBoard;
- import snowstorm.games.playground.model.GameObject;
- public class KnightRaidGame extends Game {
- /** Reference to the main activity, so some labels can be updated. */
- private MainActivity activity;
- private KnightRaidGameBoardView gameView;
- private GameBoard bord;
- private SpawnPoint spawnpoint = new SpawnPoint();
- private Toast toast;
- private static double klokCounter = 20;
- private static boolean enemiesZijnGespawned = false;
- private ArrayList<Enemy> enemies = new ArrayList<Enemy>();;
- /**
- * Constructor.
- *
- * @param activity
- * The main activity
- */
- public KnightRaidGame(MainActivity activity) {
- // Create a new game board and couple it to this game
- super(new KnightRaidGameBoard(activity));
- // Store reference to the main activity
- this.activity = activity;
- // Reset the game
- initNewGame();
- // Tell the game board view which game board to show
- gameView = activity.getGameBoardView();
- GameBoard gameBoard = getGameBoard();
- gameView.setGameBoard(gameBoard);
- Tower.setBoard((KnightRaidGameBoard) gameBoard);
- // Set size of the view to that of the game board
- gameView.setFixedGridSize(gameBoard.getWidth(), gameBoard.getHeight());
- }
- /**
- * Starts a new game. Resets the score and places all objects in the right
- * place.
- */
- public void initNewGame() {
- // Set the score and update the label
- GameBoard board = getGameBoard();
- board.removeAllObjects();
- bord = board;
- Klok timer = new Klok(this);
- timer.start();
- // Add a player object
- board.addGameObject(new InnerSanctum_LB(100), 17, 10);
- board.addGameObject(new InnerSanctum_RB(100), 18, 10);
- board.addGameObject(new InnerSanctum_LT(100), 17, 9);
- board.addGameObject(new InnerSanctum_RT(100), 18, 9);
- // Redraw the game view
- board.updateView();
- }
- public GameBoard getBoard() {
- return bord;
- }
- private void spawnRandomEnemy(Enemy enemy) {
- if ((int) (Math.random() * 2 + 1) == 2)
- spawnEnemyOnX(enemy);
- else
- spawnEnemyOnY(enemy);
- }
- /**
- * Spawns een enemy op X as waar y=0 v y=max
- *
- * @param enemy
- * de enemy die gespawned moet worden.
- */
- public void spawnEnemyOnX(Enemy enemy) {
- GameBoard board = getGameBoard();
- board.addGameObject(enemy, spawnpoint.getSpawnLocationEnemyOnWX(),
- spawnpoint.getSpawnLocationEnemyOnWY());
- board.updateView();
- }
- /**
- * Spawns een enemy op Y as waar x=0 v x=max
- *
- * @param enemy
- * de enemy die gespawned moet worden.
- */
- public void spawnEnemyOnY(Enemy enemy) {
- GameBoard board = getGameBoard();
- board.addGameObject(enemy, spawnpoint.getSpawnLocationEnemyOnHX(),
- spawnpoint.getSpawnLocationEnemyOnHY());
- board.updateView();
- }
- /**
- * Methode ontvangt de ticks van Klok class
- */
- public void step() {
- GameBoard board = getGameBoard();
- klokCounter += 0.125;
- // Counter op 20 zetten zodat de Speler 10 seconden de tijd krijgt om
- // bij te bouwen.
- if (checkIfEnemiesAreDead(board)) {
- if (enemiesZijnGespawned) {
- klokCounter = 20;
- enemiesZijnGespawned = false;
- }
- }
- // De speler krijgt 30 seconden de tijd om de wave te clearen, anders
- // begint er al een nieuwe!
- if (klokCounter % 30 == 20) {
- toast = Toast.makeText(this.activity,
- "The next wave is starting in 10 seconds!",
- Toast.LENGTH_LONG);
- toast.setGravity(Gravity.TOP, 0, 300);
- toast.show();
- }
- if (klokCounter % 30 == 0) {
- Wave wave = new Wave();
- toast = Toast.makeText(this.activity,
- "Wave " + wave.getWaveCounter() + " has started",
- Toast.LENGTH_LONG);
- toast.setGravity(Gravity.TOP, 0, 300);
- toast.show();
- for (Enemy enemy : wave.getWave()) {
- spawnRandomEnemy(enemy);
- }
- enemiesZijnGespawned = true;
- }
- if (!activity.getTowerList().isEmpty()) {
- for (Tower t : activity.getTowerList()) {
- t.findTarget(bord.getBoard());
- }
- }
- for (int x = 0; x < 37; x++) {
- for (int y = 0; y < 21; y++) {
- GameObject object = board.getObject(x, y);
- if (object instanceof Tower) {
- ((Tower) object).findTarget(bord.getBoard());
- }
- }
- }
- // public void moveObject(GameObject obj, int newX, int newY)
- if (klokCounter % 1 == 0) {
- List<GameObject> templist = new ArrayList<GameObject>();
- for (int x = 0; x < 37; x++) {
- for (int y = 0; y < 21; y++) {
- GameObject object = board.getObject(x, y);
- if (object instanceof Enemy && !templist.contains(object)) {
- int objectX = object.getPositionX();
- int objectY = object.getPositionY();
- // Linksboven
- if ((objectX >= 0 && objectX < 18) && (objectY >= 0 && objectY < 10)) {
- if (objectX == 17 && objectY != 9) {
- try {
- bord.moveObject(object, objectX, objectY + 1);
- } catch (Exception e) {
- } finally {
- bord.updateView();
- }
- } else if (objectY == 9 && objectX != 17) {
- try {
- bord.moveObject(object, objectX + 1, objectY);
- } catch (Exception e) {
- } finally {
- bord.updateView();
- }
- } else {
- if (randomMovement() == 0) {
- try {
- bord.moveObject(object, objectX + 1, objectY);
- } catch (Exception e) {
- } finally {
- bord.updateView();
- }
- } else {
- try {
- bord.moveObject(object, objectX, objectY + 1);
- } catch (Exception e) {
- } finally {
- bord.updateView();
- }
- }
- }
- }
- // Linksonder
- else if ((objectX >= 0 && objectX < 18) && (objectY >= 11 && objectY < 21)) {
- if (objectX == 17 && objectY != 20) {
- try {
- bord.moveObject(object, objectX, objectY - 1);
- } catch (Exception e) {
- } finally {
- bord.updateView();
- }
- } else if (objectY == 20 && objectX != 17) {
- try {
- bord.moveObject(object, objectX + 1, objectY);
- } catch (Exception e) {
- } finally {
- bord.updateView();
- }
- } else {
- if (randomMovement() == 0) {
- try {
- bord.moveObject(object, objectX + 1, objectY);
- } catch (Exception e) {
- } finally {
- bord.updateView();
- }
- } else {
- try {
- bord.moveObject(object, objectX, objectY - 1);
- } catch (Exception e) {
- } finally {
- bord.updateView();
- }
- }
- }
- }
- // Rechtsboven
- else if ((objectX >=19 && objectX < 37) && (objectY >= 0 && objectY < 10)) {
- if (objectX == 36 && objectY != 9) {
- try {
- bord.moveObject(object, objectX, objectY + 1);
- } catch (Exception e) {
- } finally {
- bord.updateView();
- }
- } else if (objectY == 9 && objectX != 36) {
- try {
- bord.moveObject(object, objectX - 1, objectY);
- } catch (Exception e) {
- } finally {
- bord.updateView();
- }
- } else {
- if (randomMovement() == 0) {
- try {
- bord.moveObject(object, objectX - 1, objectY);
- } catch (Exception e) {
- } finally {
- bord.updateView();
- }
- } else {
- try {
- bord.moveObject(object, objectX, objectY + 1);
- } catch (Exception e) {
- } finally {
- bord.updateView();
- }
- }
- }
- }
- // Rechtsonder
- else {
- if (objectX == 36 && objectY != 20) {
- try {
- bord.moveObject(object, objectX, objectY - 1);
- } catch (Exception e) {
- } finally {
- bord.updateView();
- }
- } else if (objectY == 20 && objectX != 36) {
- try {
- bord.moveObject(object, objectX - 1, objectY);
- } catch (Exception e) {
- } finally {
- bord.updateView();
- }
- } else {
- if (randomMovement() == 0) {
- try {
- bord.moveObject(object, objectX - 1, objectY);
- } catch (Exception e) {
- } finally {
- bord.updateView();
- }
- } else {
- try {
- bord.moveObject(object, objectX, objectY - 1);
- } catch (Exception e) {
- } finally {
- bord.updateView();
- }
- }
- }
- // }
- }
- templist.add(object);
- }
- }
- }
- }
- gameView.invalidate();
- }
- private int randomMovement() {
- return (int) (Math.random() * 2);
- }
- /**
- * Controleert of er nog enemies leven
- *
- * @return True wanneer er geen enemies meer zijn
- */
- private boolean checkIfEnemiesAreDead(GameBoard board) {
- for (int x = 0; x < 37; x++) {
- for (int y = 0; y < 21; y++) {
- GameObject object = board.getObject(x, y);
- if (object != null && (object instanceof Enemy)) {
- return false;
- }
- }
- }
- return true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement