Android Open Source - SnowLand Copy Of Game Screen






From Project

Back to project page SnowLand.

License

The source code is released under:

GNU General Public License

If you think the Android project SnowLand listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.walrus.game;
/*from  www. j  a  va2  s  .  c  om*/
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import android.graphics.Color;
import android.graphics.Paint;

import com.walrus.framework.Game;
import com.walrus.framework.Graphics;
import com.walrus.framework.Image;
import com.walrus.framework.Screen;
import com.walrus.framework.Input.TouchEvent;

public class CopyOfGameScreen extends Screen {

  public CopyOfGameScreen(Game game) {
    super(game);
    // TODO Auto-generated constructor stub
  }/*
  enum GameState {
    Ready, Running, Paused, GameOver
  }

  GameState state = GameState.Ready;

  // Variable Setup

  private static Background bg1, bg2;
  private static Robot robot;
  public static Heliboy hb, hb2;

  private Image currentSprite, character, character2, character3, heliboy,
      heliboy2, heliboy3, heliboy4, heliboy5;
  private Animation anim, hanim;

  private ArrayList<Tile> tilearray = new ArrayList<Tile>();

  int livesLeft = 1;
  Paint paint, paint2;

  public CopyOfGameScreen(Game game) {
    super(game);

    // Initialize game objects here

    bg1 = new Background(0, 0);
    bg2 = new Background(2160, 0);
    robot = new Robot();
    hb = new Heliboy(340, 360);
    hb2 = new Heliboy(700, 360);

    character = Assets.character;
    character2 = Assets.character2;
    character3 = Assets.character3;

    heliboy = Assets.heliboy;
    heliboy2 = Assets.heliboy2;
    heliboy3 = Assets.heliboy3;
    heliboy4 = Assets.heliboy4;
    heliboy5 = Assets.heliboy5;

    anim = new Animation();
    anim.addFrame(character, 1250);
    anim.addFrame(character2, 50);
    anim.addFrame(character3, 50);
    anim.addFrame(character2, 50);

    hanim = new Animation();
    hanim.addFrame(heliboy, 100);
    hanim.addFrame(heliboy2, 100);
    hanim.addFrame(heliboy3, 100);
    hanim.addFrame(heliboy4, 100);
    hanim.addFrame(heliboy5, 100);
    hanim.addFrame(heliboy4, 100);
    hanim.addFrame(heliboy3, 100);
    hanim.addFrame(heliboy2, 100);

    currentSprite = anim.getImage();

    loadMap();

    // Defining a paint object
    paint = new Paint();
    paint.setTextSize(30);
    paint.setTextAlign(Paint.Align.CENTER);
    paint.setAntiAlias(true);
    paint.setColor(Color.WHITE);

    paint2 = new Paint();
    paint2.setTextSize(100);
    paint2.setTextAlign(Paint.Align.CENTER);
    paint2.setAntiAlias(true);
    paint2.setColor(Color.WHITE);

  }

  private void loadMap() {
    ArrayList lines = new ArrayList();
    int width = 0;
    int height = 0;

    Scanner scanner = new Scanner(GameBoot.map);
    while (scanner.hasNextLine()) {
      String line = scanner.nextLine();

      // no more lines to read
      if (line == null) {
        break;
      }

      if (!line.startsWith("!")) {
        lines.add(line);
        width = Math.max(width, line.length());

      }
    }
    height = lines.size();

    for (int j = 0; j < 12; j++) {
      String line = (String) lines.get(j);
      for (int i = 0; i < width; i++) {

        if (i < line.length()) {
          char ch = line.charAt(i);
          Tile t = new Tile(i, j, Character.getNumericValue(ch));
          tilearray.add(t);
        }

      }
    }

  }

  @Override
  public void update(float deltaTime) {
    List<TouchEvent> touchEvents = game.getInput().getTouchEvents();

    // We have four separate update methods in this example.
    // Depending on the state of the game, we call different update methods.
    // Refer to Unit 3's code. We did a similar thing without separating the
    // update methods.

    if (state == GameState.Ready)
      updateReady(touchEvents);
    if (state == GameState.Running)
      updateRunning(touchEvents, deltaTime);
    if (state == GameState.Paused)
      updatePaused(touchEvents);
    if (state == GameState.GameOver)
      updateGameOver(touchEvents);
  }

  private void updateReady(List<TouchEvent> touchEvents) {

    // This example starts with a "Ready" screen.
    // When the user touches the screen, the game begins.
    // state now becomes GameState.Running.
    // Now the updateRunning() method will be called!

    if (touchEvents.size() > 0)
      state = GameState.Running;
  }

  private void updateRunning(List<TouchEvent> touchEvents, float deltaTime) {

    // This is identical to the update() method from our Unit 2/3 game.

    // 1. All touch input is handled here:
    int len = touchEvents.size();
    for (int i = 0; i < len; i++) {
      TouchEvent event = touchEvents.get(i);
      if (event.type == TouchEvent.TOUCH_DOWN) {

        if (inBounds(event, 0, 285, 65, 65)) {
          robot.jump();
          currentSprite = anim.getImage();
          robot.setDucked(false);
        }

        else if (inBounds(event, 0, 350, 65, 65)) {

          if (robot.isDucked() == false && robot.isJumped() == false
              && robot.isReadyToFire()) {
            robot.shoot();
          }
        }

        else if (inBounds(event, 0, 415, 65, 65)
            && robot.isJumped() == false) {
          currentSprite = Assets.characterDown;
          robot.setDucked(true);
          robot.setSpeedX(0);

        }

        if (event.x > 400) {
          // Move right.
          robot.moveRight();
          robot.setMovingRight(true);

        }

      }

      if (event.type == TouchEvent.TOUCH_UP) {

        if (inBounds(event, 0, 415, 65, 65)) {
          currentSprite = anim.getImage();
          robot.setDucked(false);

        }

        if (inBounds(event, 0, 0, 35, 35)) {
          pause();

        }

        if (event.x > 400) {
          // Move right.
          robot.stopRight();
        }
      }

    }

    // 2. Check miscellaneous events like death:

    if (livesLeft == 0) {
      state = GameState.GameOver;
    }

    // 3. Call individual update() methods here.
    // This is where all the game updates happen.
    // For example, robot.update();
    robot.update();
    if (robot.isJumped()) {
      currentSprite = Assets.characterJump;
    } else if (robot.isJumped() == false && robot.isDucked() == false) {
      currentSprite = anim.getImage();
    }

    ArrayList projectiles = robot.getProjectiles();
    for (int i = 0; i < projectiles.size(); i++) {
      Projectile p = (Projectile) projectiles.get(i);
      if (p.isVisible() == true) {
        p.update();
      } else {
        projectiles.remove(i);
      }
    }

    updateTiles();
    hb.update();
    hb2.update();
    bg1.update();
    bg2.update();
    animate();

    if (robot.getCenterY() > 500) {
      state = GameState.GameOver;
    }
  }

  private boolean inBounds(TouchEvent event, int x, int y, int width,
      int height) {
    if (event.x > x && event.x < x + width - 1 && event.y > y
        && event.y < y + height - 1)
      return true;
    else
      return false;
  }

  private void updatePaused(List<TouchEvent> touchEvents) {
    int len = touchEvents.size();
    for (int i = 0; i < len; i++) {
      TouchEvent event = touchEvents.get(i);
      if (event.type == TouchEvent.TOUCH_UP) {
        if (inBounds(event, 0, 0, 800, 240)) {

          if (!inBounds(event, 0, 0, 35, 35)) {
            resume();
          }
        }

        if (inBounds(event, 0, 240, 800, 240)) {
          nullify();
          goToMenu();
        }
      }
    }
  }

  private void updateGameOver(List<TouchEvent> touchEvents) {
    int len = touchEvents.size();
    for (int i = 0; i < len; i++) {
      TouchEvent event = touchEvents.get(i);
      if (event.type == TouchEvent.TOUCH_DOWN) {
        if (inBounds(event, 0, 0, 800, 480)) {
          nullify();
          game.setScreen(new MainMenuScreen(game));
          return;
        }
      }
    }

  }

  private void updateTiles() {

    for (int i = 0; i < tilearray.size(); i++) {
      Tile t = (Tile) tilearray.get(i);
      t.update();
    }

  }

  @Override
  public void paint(float deltaTime) {
    Graphics g = game.getGraphics();

    g.drawImage(Assets.background, bg1.getBgX(), bg1.getBgY());
    g.drawImage(Assets.background, bg2.getBgX(), bg2.getBgY());
    paintTiles(g);

    ArrayList projectiles = robot.getProjectiles();
    for (int i = 0; i < projectiles.size(); i++) {
      Projectile p = (Projectile) projectiles.get(i);
      g.drawRect(p.getX(), p.getY(), 10, 5, Color.YELLOW);
    }
    // First draw the game elements.

    g.drawImage(currentSprite, robot.getCenterX() - 61,
        robot.getCenterY() - 63);
    g.drawImage(hanim.getImage(), hb.getCenterX() - 48,
        hb.getCenterY() - 48);
    g.drawImage(hanim.getImage(), hb2.getCenterX() - 48,
        hb2.getCenterY() - 48);

    // Example:
    // g.drawImage(Assets.background, 0, 0);
    // g.drawImage(Assets.character, characterX, characterY);

    // Secondly, draw the UI above the game elements.
    if (state == GameState.Ready)
      drawReadyUI();
    if (state == GameState.Running)
      drawRunningUI();
    if (state == GameState.Paused)
      drawPausedUI();
    if (state == GameState.GameOver)
      drawGameOverUI();

  }

  private void paintTiles(Graphics g) {
    for (int i = 0; i < tilearray.size(); i++) {
      Tile t = (Tile) tilearray.get(i);
      if (t.type != 0) {
        g.drawImage(t.getTileImage(), t.getTileX(), t.getTileY());
      }
    }
  }

  public void animate() {
    anim.update(10);
    hanim.update(50);
  }

  private void nullify() {

    // Set all variables to null. You will be recreating them in the
    // constructor.
    paint = null;
    bg1 = null;
    bg2 = null;
    robot = null;
    hb = null;
    hb2 = null;
    currentSprite = null;
    character = null;
    character2 = null;
    character3 = null;
    heliboy = null;
    heliboy2 = null;
    heliboy3 = null;
    heliboy4 = null;
    heliboy5 = null;
    anim = null;
    hanim = null;

    // Call garbage collector to clean up memory.
    System.gc();

  }

  private void drawReadyUI() {
    Graphics g = game.getGraphics();

    g.drawARGB(155, 0, 0, 0);
    g.drawString("Tap to Start.", 400, 240, paint);

  }

  private void drawRunningUI() {
    Graphics g = game.getGraphics();
    g.drawImage(Assets.joystick, 0, 285, 0, 0, 65, 65);
    g.drawImage(Assets.joystick, 0, 350, 0, 65, 65, 65);
    g.drawImage(Assets.joystick, 0, 415, 0, 130, 65, 65);
    g.drawImage(Assets.joystick, 0, 0, 0, 195, 35, 35);

  }

  private void drawPausedUI() {
    Graphics g = game.getGraphics();
    // Darken the entire screen so you can display the Paused screen.
    g.drawARGB(155, 0, 0, 0);
    g.drawString("Resume", 400, 165, paint2);
    g.drawString("Menu", 400, 360, paint2);

  }

  private void drawGameOverUI() {
    Graphics g = game.getGraphics();
    g.drawRect(0, 0, 1281, 801, Color.BLACK);
    g.drawString("GAME OVER.", 400, 240, paint2);
    g.drawString("Tap to return.", 400, 290, paint);

  }

  @Override
  public void pause() {
    if (state == GameState.Running)
      state = GameState.Paused;

  }

  @Override
  public void resume() {
    if (state == GameState.Paused)
      state = GameState.Running;
  }

  @Override
  public void dispose() {

  }

  @Override
  public void backButton() {
    pause();
  }

  private void goToMenu() {
    // TODO Auto-generated method stub
    game.setScreen(new MainMenuScreen(game));

  }

  public static Background getBg1() {
    // TODO Auto-generated method stub
    return bg1;
  }

  public static Background getBg2() {
    // TODO Auto-generated method stub
    return bg2;
  }

  public static Robot getRobot() {
    // TODO Auto-generated method stub
    return robot;
  }
*/

  @Override
  public void update(float deltaTime) {
    // TODO Auto-generated method stub
    
  }

  @Override
  public void paint(float deltaTime) {
    // TODO Auto-generated method stub
    
  }

  @Override
  public void pause() {
    // TODO Auto-generated method stub
    
  }

  @Override
  public void resume() {
    // TODO Auto-generated method stub
    
  }

  @Override
  public void dispose() {
    // TODO Auto-generated method stub
    
  }

  @Override
  public void backButton() {
    // TODO Auto-generated method stub
    
  }
}




Java Source Code List

com.walrus.core.LevelGenerator.java
com.walrus.core.Move.java
com.walrus.framework.Audio.java
com.walrus.framework.FileIO.java
com.walrus.framework.Game.java
com.walrus.framework.Graphics.java
com.walrus.framework.Image.java
com.walrus.framework.Input.java
com.walrus.framework.Music.java
com.walrus.framework.Pool.java
com.walrus.framework.Screen.java
com.walrus.framework.Sound.java
com.walrus.framework.implementation.AndroidAudio.java
com.walrus.framework.implementation.AndroidFastRenderView.java
com.walrus.framework.implementation.AndroidFileIO.java
com.walrus.framework.implementation.AndroidGame.java
com.walrus.framework.implementation.AndroidGraphics.java
com.walrus.framework.implementation.AndroidImage.java
com.walrus.framework.implementation.AndroidInput.java
com.walrus.framework.implementation.AndroidMusic.java
com.walrus.framework.implementation.AndroidSound.java
com.walrus.framework.implementation.MultiTouchHandler.java
com.walrus.framework.implementation.SingleTouchHandler.java
com.walrus.framework.implementation.TouchHandler.java
com.walrus.game.Animation.java
com.walrus.game.Assets.java
com.walrus.game.Background.java
com.walrus.game.CopyOfGameScreen.java
com.walrus.game.Entity.java
com.walrus.game.GameBoot.java
com.walrus.game.GameScreen.java
com.walrus.game.LoadingScreen.java
com.walrus.game.Loading.java
com.walrus.game.MainMenuScreen.java
com.walrus.game.SplashLoadingScreen.java
com.walrus.game.TileMatrixFactory.java
com.walrus.game.Tile.java
com.walrus.gui.ArrowSelector.java
com.walrus.gui.Button.java
com.walrus.gui.GridSpatiator.java
com.walrus.gui.SlidingBackground.java
com.walrus.gui.TextArea.java