Quantcast
Channel: Library Questions - Processing 2.x and 3.x Forum
Viewing all articles
Browse latest Browse all 2896

Trying to increase health bar when particle system drops hits the PImage. Not sure how to do it :/

$
0
0

The piece of code I am trying to get working is commented out in draw().

import processing.serial.*;

import cc.arduino.*;

import static javax.swing.JOptionPane.*;
import javax.swing.JPasswordField;


final StringDict accounts = new StringDict(
  new String[] {
  "john", "tony", "amy"
  }
  , new String[] {
    "ilikedogs", "husky", "pepsi"
  }
  );

final JPasswordField pwd = new JPasswordField();

{
  println(accounts);
}

PImage startGameBackground;
PImage kitchen;
PImage dog;
float dogx=800, dogy=600;
HealthBar hb0 = new HealthBar();
boolean isWashed=false;

PImage achievment2;

int stage =1;
Serial port;

Fountain f = new Fountain();
//Ball b = new Ball(x,y,d,xs,ys);
ArrayList<Ball>ballList;

void setup() {
  size(1800, 900);
  String comPort = "COM3";

  stage =1;
  port = new Serial(this, comPort, 9600);

  f.fountainSetup();
  startGameBackground = loadImage("startGameBackground.png");
  kitchen = loadImage("kitchen.png");
  dog = loadImage("washDog.png");
  startGameBackground.resize(1800, 900);
  kitchen.resize(1800, 900);
  achievment2 = loadImage("achievment2.png");
}

void draw() {

  if (stage ==1) {

    background(startGameBackground);

    if (frameCount == 10)  surface.setVisible(true);


    String user = askUser();

    if (user == null)           confirmQuit();
    else if (!"".equals(user))  askPass(user);

  } else if (stage ==2) {

    background(kitchen);
    image(dog, dogx, dogy);
    hb0.draw();
    isWashed =true;

    f.fountainDraw();

    //if (hb0.value <100) {
    //   //delay(1000);
    //   hb0.value += .5;
    // }

    // else if(hb0.value == hb0.max){
    //   println("Here is the achievment");
    //   image(achievment2, 500,100);
  }
}
}

String askUser() {
  String id = showInputDialog("Please enter user:");

  if (id == null)
    showMessageDialog(null, "You've canceled login operation!"
      , "Alert", ERROR_MESSAGE);

  else if ("".equals(id))
    showMessageDialog(null, "Empty user input!"
      , "Alert", ERROR_MESSAGE);

  else if (!accounts.hasKey(id = id.toLowerCase()))
    showMessageDialog(null, "Unknown \"" + id + "\" user!" + (id = "")
      , "Alert", ERROR_MESSAGE);

  return id;
}

boolean askPass(String id) {
  boolean isLogged = false;
  pwd.setText("");

  int action = showConfirmDialog(null, pwd
    , "Now enter password:", OK_CANCEL_OPTION);

  if (action != OK_OPTION) {
    showMessageDialog(null, "Password input canceled!"
      , "Alert", ERROR_MESSAGE);

    return false;
  }

  String phrase = pwd.getText();
  //String phrase = new String(pwd.getPassword());

  if ("".equals(phrase))
    showMessageDialog(null, "Empty password input!"
      , "Alert", ERROR_MESSAGE);

  else if (accounts.get(id).equals(phrase)) {
    showMessageDialog(null, "Welcome \"" + id + "\"!\nYou're logged in!"
      , "Info", INFORMATION_MESSAGE);

    isLogged = true;
    stage=2;
  } else
    showMessageDialog(null, "Password \"" + phrase + "\" mismatch!"
      , "Alert", ERROR_MESSAGE);

  return isLogged;
}

void confirmQuit() {
  if (showConfirmDialog(null, "Wanna quit then?", "Exit"
    , OK_CANCEL_OPTION) == OK_OPTION)  exit();
}


public class Ball {

  float x, y, xSpeed, ySpeed, diameter;
  int dropColour;
  boolean isAlive;
  int stepsAlive;
  HealthBar hb0 = new HealthBar();

  public Ball(float x, float y, float d, float xs, float ys) {
    this.x=x;
    this.y =y;
    this.diameter =d;
    xSpeed =xs;
    ySpeed =ys;
    isAlive = true;
    int stepsAlive =0 ;
  }

  public void move() {
    stepsAlive++;
    x = x + xSpeed;
    y = y + ySpeed;

    if (x >=800) {

      xSpeed = -xSpeed;
    }

    if (x <=950) {

      xSpeed = -xSpeed;
    }

    ySpeed = ySpeed +0.1F;

    if (y  > 800) {
      ySpeed = -ySpeed;
    }
  }

  public void isDead() {

    if (stepsAlive >= 400) {
      isAlive = false;
    }

    if (dist(x, y, dogx, dogy) <100  ) {

      isAlive = false;
    }

    if (y  > 800) {
      isAlive =false;
    }
  }
}


import ddf.minim.*;

public class Fountain {
  ArrayList<Ball> ballList;
  AudioPlayer player;
  Minim minim;
  HealthBar hb0 = new HealthBar();

  void fountainSetup() {
    //size(600,600);
    ballList = new ArrayList<Ball>();
    //minim = new Minim(this);
  }

  public void fountainDraw() {
    //background(255,255,255);

    // if (mousePressed){
    if (mousePressed ==true) {
      float xSpeed = (float)(-3 + Math.random()*6);
      Ball b = new Ball(880, 400, 20, xSpeed, -2);

      b.dropColour = color(204, 255, 255);

      ballList.add(b);
    }

    for (int i =0; i <ballList.size(); i++) {
      Ball b2 = ballList.get(i);

      fill(b2.dropColour);
      ellipse(b2.x, b2.y, b2.diameter, b2.diameter);
      b2.move();
      //println("working");

      b2.isDead();

      if (b2.isAlive == false)
        ballList.remove(b2);

          println(dogy + ""+ "This thing is broke");
        }
      }
    }

class HealthBar {
  float value, max, x, y, w, h;
  color backing, bar;
  HealthBar(){
    value = 0;
    max = 100;
    x = 800;
    y = 60;
    w = 200;
    h = 30;
    backing = color(255,0,0);
    bar = color(0,255,0);
  }
  void draw(){
    fill(backing);
    stroke(0);
    rect(x,y,w,h);
    fill(bar);
    rect(x,y,map(value,0,max,0,w),h);
  }
}

Viewing all articles
Browse latest Browse all 2896

Trending Articles