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());