Oh, I was talking about the shootKey = this.Player.playerNum line
public void doBulletHit(int playerNum)
{
World myWorld = getWorld();
BattleWorld battleWorld = (BattleWorld)myWorld;
myPlayerNum = playerNum;
if (isTouching(Bullet.class) && !(didShoot))
{
Bar bar = battleWorld.getBar(playerNum);
Actor bull = (Actor) getOneIntersectingObject(Bullet.class);
bleed((Greenfoot.getRandomNumber(3)+2), bull.getX(), bull.getY());
getWorld().removeObject(bull);
bar.loseHealth();
if(bar.health <=0)
{
GameOver gameover = new GameOver(myPlayerNum);
myWorld.addObject(gameover, myWorld.getWidth()/2, myWorld.getHeight()/2);
myWorld.removeObject(this);
if (++counter == 5) Greenfoot.setWorld(new TitleScreen());
}
}
//else if ((playerNum == 0)&& isTouching(Bullet.class) && !(didShoot))
//{
// Bar bar2 = battleWorld.getBar();
// Actor bull = (Actor) getOneIntersectingObject(Bullet.class);
// bleed((Greenfoot.getRandomNumber(3)+2), bull.getX(), bull.getY());
// getWorld().removeObject(bull);
// bar2.loseHealth();
// if(bar2.health <=0)
//{
//GameOver gameover = new GameOver(myPlayerNum);
//myWorld.addObject(gameover, myWorld.getWidth()/2, myWorld.getHeight()/2);
//myWorld.removeObject(this);
//if (++counter == 100) Greenfoot.setWorld(new TitleScreen());
// }
}
public void shootStuff()
{
if(Greenfoot.isKeyDown(shootKey) && shotCoolDown == 0) {
getWorld().addObject(new Bullet(getRotation()), getX(), getY());
shotCoolDown = 20;
didShoot = true;
}
if(shotCoolDown > 0)
shotCoolDown -= 1;
}
public void setShootKey(String key)
{
shootKey = key;
}
protected void addedToWorld(World world)
{
world.addObject(pipe, getX(), getY());
}
}
public class Pipe extends Actor
{
String shootKey;
public Pipe()
{
shootKey = this.Player.playerNum == 0 ? "e": "o";
GreenfootImage img = new GreenfootImage("Rohr"+(this.Player.playerNum+1)+".PNG");
img.scale(25, 25);
setImage(img);
}
}public void shootStuff()
{
if (shotCoolDown > 0) shotCoolDown--;
else if (Greenfoot.isKeyDown(shootKey))
{
getWorld().addObject(new Bullet(getRotation()), getX(), getY());
shotCoolDown = 20;
}
}public void act()
{
if (this.Player.getWorld() == null) { getWorld().removeObject(this); return; }
shootStuff();
}public void act()
{
if (this.Player.getWorld() == null) { getWorld().removeObject(this); return; }
shootStuff();
} public Pipe()
{
shootKey = this.Player.playerNum == 0 ? "e": "o";
GreenfootImage img = new GreenfootImage("Rohr"+(this.Player.playerNum+1)+".PNG");
img.scale(25, 25);
setImage(img);
}player.pipe = new Pipe();
player.setShootKey("o");import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo)
/**
* Ergänzen Sie hier eine Beschreibung für die Klasse BattleWorld.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class BattleWorld extends World
{
Player player = new Player(0, "tank.png", "left", "right", "up", "down");
Player player2 = new Player(1, "tank2.png", "a", "d", "w", "s");
Bar bar = new Bar();
Bar bar2 = new Bar();
public static int p1X = 100;
public static int p1Y = 300;
public static int p2X = 700;
public static int p2Y = 300;
/**
* Konstruktor für Objekte der Klasse BattleWorld
*
*/
public BattleWorld()
{
// Erstellt eine neue Welt mit 600x400 Zellen und einer Zell-Größe von 1x1 Pixeln.
super(800, 600, 1);
player.pipe = new Pipe();
player.pipe.setImage("Rohr1.PNG");
player.pipe.getImage().scale(50, 50);
player.setShootKey("o");
player2.pipe = new Pipe();
player2.pipe.setImage("Rohr2.PNG");
player2.pipe.getImage().scale(50, 50);
player2.setShootKey("e");
addObject(player, 100, 300);
addObject(player2, 700, 300);
addObject(bar, 200, 40);
addObject(bar2, 600, 40);
//addObject(playbutton, 300, 200);
}
public Bar getBar(int playerNum)
{
if (playerNum == 0)
{
return bar;
}
else
{
return bar2;
}
}
}Player player = new Player(0); Player player2 = new Player(1);
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo)
import java.lang.String;
import java.lang.Math;
/**
* Ergänzen Sie hier eine Beschreibung für die Klasse Player.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class Player extends Actor
{
String leftKey, rightKey, upKey, downKey;
GreenfootImage myImage;
public int myPlayerNum = 0;
int playerNum;
boolean didShoot = false;
public double xVel = 0.0;
public double yVel = 0.0;
public double terminalSpeed = 5.0;
public int counter;
boolean playerContact = false;
double currentForce = 0;
public Pipe pipe;
//Pipe pipe = new Pipe();
int shotCoolDown = 0;
String shootKey = "o";
public Player(int num, String image, String left, String right, String up, String down)
{
myImage = new GreenfootImage(image);
myPlayerNum = playerNum;
playerNum = num;
leftKey = left;
rightKey = right;
upKey = up;
downKey = down;
didShoot = false;
myImage.scale(50, 50);
setImage(myImage);
if (num == 0)
{
myImage = new GreenfootImage("tank.png");
rightKey = "right";
leftKey = "left";
upKey = "up";
downKey = "down";
}
else
{
myImage = new GreenfootImage("tank2.png");
rightKey = "d";
leftKey = "a";
upKey = "w";
downKey = "s";
}
}
/**
* Act - tut, was auch immer Player tun will. Diese Methode wird aufgerufen,
* sobald der 'Act' oder 'Run' Button in der Umgebung angeklickt werden.
*/
public void act()
{
movementEngine();
turnTowardsEnemy();
wallBounce();
calculateForce();
doBulletHit(myPlayerNum);
playerCollider();
mutualmovement();
shootStuff();
if (this.Player.getWorld() == null) { getWorld().removeObject(this); return;}
}
public void mutualmovement()
{
Pipe actor = (Pipe) getOneIntersectingObject(Pipe.class);
if (actor != null) {
actor.setLocation(this.getX(),this.getY());
}
}
public void turnTowardsEnemy()
{
if(myPlayerNum == 1) {
turnTowards(BattleWorld.p2X, BattleWorld.p2Y);
}
else {
turnTowards(BattleWorld.p1X, BattleWorld.p1Y);
}
}
public void movementEngine()
{
//int angle = getRotation();
setLocation((int) (getX() + xVel), (int) (getY() + yVel));
if(Greenfoot.isKeyDown(rightKey))
xVel += 0.5;
if(Greenfoot.isKeyDown(leftKey))
xVel -= 0.5;
if(Greenfoot.isKeyDown(upKey))
yVel -= 0.5;
if(Greenfoot.isKeyDown(downKey))
yVel += 0.5;
friction();
terminalVelocity();
}
public void friction()
{
if(xVel >= 0)
xVel -= 0.125;
if(xVel <= 0)
xVel += 0.125;
if(yVel >= 0)
yVel -= 0.125;
if(yVel <= 0)
yVel += 0.125;
}
public void terminalVelocity()
{
if(xVel >= terminalSpeed)
xVel = terminalSpeed;
if(xVel <= -terminalSpeed)
xVel = -terminalSpeed;
if(yVel >= terminalSpeed)
yVel = terminalSpeed;
if(yVel <= -terminalSpeed)
yVel = -terminalSpeed;
}
public void bleed(int particles, int x, int y)
{
for(int a = 0; a < particles; a++) {
bleed(x, y);
}
}
public void bleed(int x, int y)
{
getWorld().addObject(new Particle("blood", ((Greenfoot.getRandomNumber(21)-10)/4.0), ((Greenfoot.getRandomNumber(21)-10)/5.0)), x, y);
}
public boolean atWorldLeft()
{
if(getX() < 20)
return true;
else return false;
}
public boolean atWorldRight()
{
if(getX() > getWorld().getWidth() - 20)
return true;
else return false;
}
public boolean atWorldTop()
{
if(getY() < 20)
return true;
else return false;
}
public boolean atWorldBottom()
{
if(getY() > getWorld().getHeight() - 20)
return true;
else return false;
}
public void bleed()
{
getWorld().addObject(new Particle("blood", ((Greenfoot.getRandomNumber(21)-10)/4.0), ((Greenfoot.getRandomNumber(21)-10)/5.0)), getX(), getY());
}
public void wallBounce()
{
if(atWorldRight() && xVel > 0) {
xVel *= -1.1;
setLocation((int) (getX() + xVel), (int) (getY() + yVel));
}
if(atWorldLeft() && xVel < 0) {
xVel *= -1.1;
setLocation((int) (getX() + xVel), (int) (getY() + yVel));
}
if(atWorldTop() && yVel < 0) {
yVel *= -1.1;
setLocation((int) (getX() + xVel), (int) (getY() + yVel));
}
if(atWorldBottom() && yVel > 0) {
yVel *= -1.1;
setLocation((int) (getX() + xVel), (int) (getY() + yVel));
}
}
public void calculateForce()
{
currentForce = Math.hypot(Math.abs(xVel), Math.abs(yVel));
}
public void playerCollider()
{
if (getWorld() == null) return;
if(isTouching(Player.class)) {
playerContact = true;
Actor oPlayer = (Actor) getOneIntersectingObject(Player.class);
int oPlayerX = oPlayer.getX();
int oPlayerY = oPlayer.getY();
double k = 1.5 * currentForce;
int angle = getRotation();
if (oPlayerX > getX()) {
if(oPlayerY < getY()) {
xVel = (-1) * (k) * Math.cos(Math.toRadians(360-angle));
yVel = (1) * (k) * Math.sin(Math.toRadians(360-angle));
}
else {
xVel = (1) * (k) * Math.cos(Math.toRadians(angle-180));
yVel = (1) * (k) * Math.sin(Math.toRadians(angle-180));
}
}
else {
if(oPlayerY < getY()) {
xVel = (1) * (k) * Math.cos(Math.toRadians(180-angle));
yVel = (-1) * (k) * Math.sin(Math.toRadians(180-angle));
}
else {
xVel = (-1) * (k) * Math.cos(Math.toRadians(angle));
yVel = (-1) * (k) * Math.sin(Math.toRadians(angle));
}
}
}
else {
playerContact = false;
}
}
public void doBulletHit(int playerNum)
{
World myWorld = getWorld();
BattleWorld battleWorld = (BattleWorld)myWorld;
myPlayerNum = playerNum;
if (isTouching(Bullet.class) && !(didShoot))
{
Bar bar = battleWorld.getBar(playerNum);
Actor bull = (Actor) getOneIntersectingObject(Bullet.class);
bleed((Greenfoot.getRandomNumber(3)+2), bull.getX(), bull.getY());
getWorld().removeObject(bull);
bar.loseHealth();
if(bar.health <=0)
{
GameOver gameover = new GameOver(myPlayerNum);
myWorld.addObject(gameover, myWorld.getWidth()/2, myWorld.getHeight()/2);
myWorld.removeObject(this);
if (++counter == 5) Greenfoot.setWorld(new TitleScreen());
}
}
}
//public void setShootKey(String key)
//{
//shootKey = key;
//}
protected void addedToWorld(World world)
{
world.addObject(pipe, getX(), getY());
}
public class Pipe extends Actor
{
String shootKey;
public Pipe()
{
shootKey = this.Player.playerNum == 0 ? "e": "o";
GreenfootImage img = new GreenfootImage("Rohr"+(this.Player.playerNum+1)+".PNG");
img.scale(25, 25);
setImage(img);
}
}
public void act()
{
if (this.Player.getWorld() == null) { getWorld().removeObject(this); return; }
shootStuff();
}
public void shootStuff()
{
if (shotCoolDown > 0) shotCoolDown--;
else if (Greenfoot.isKeyDown(shootKey))
{
getWorld().addObject(new Bullet(getRotation()), getX(), getY());
shotCoolDown = 20;
}
}
}setImage(new GreenfootImage("..."));getImage.scale(50, 50); setImage(getImage());
pipe.setRotation(this.getRotation());