import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class MyWorld here. * * @author (your name) * @version (a version number or a date) */ public class MyWorld extends World { Player1 player1; Player2 player2; int charakterP1; int charakterP2; Lebensanzeige l1; Lebensanzeige l2; Picture p1; Picture p2; int attack1Distance; int attack2Distance; int attack1Strength; int attack2Strength; int attack1DistanceP2; int attack2DistanceP2; int attack1StrengthP2; int attack2StrengthP2; int var; Picture s1; Picture s2; String shootAnimation; String shootAnimationP2; Projectile projectile1; Projectile2 projectile2; boolean shot = false; boolean shot2 = false; /** * Constructor for objects of class MyWorld. * */ public MyWorld(int pCharakterP1, int pCharakterP2) { // Create a new world with 600x400 cells with a cell size of 1x1 pixels. super(600, 400, 1); charakterP1 = pCharakterP1; charakterP2 = pCharakterP2; prepare(); } /** * Prepare the world for the start of the program. * That is: create the initial objects and add them to the world. */ private void prepare() { player1 = new Player1(charakterP1); addObject(player1,125,153); player2 = new Player2(charakterP2); addObject(player2,429,152); l1 = new Lebensanzeige(); addObject(l1,150,40); l2 = new Lebensanzeige(); addObject(l2,450,40); p1 = new Picture(1); addObject(p1,150,50); p2 = new Picture(2); addObject(p2,450,50); s1 = new Picture(5); addObject(s1,150,50); s2 = new Picture(5); addObject(s2,150,50); charakterP1(); charakterP2(); } public void act(){ if(player1.attacke() &! player2.isBlocking){ if(player1.getX() - player2.getX() < attack1Distance && player1.getX() - player2.getX() > -attack1Distance && player1.getY() - player2.getY() < 30 && player1.getY() - player2.getY() > -30){ player2.leben = player2.leben -attack1Strength; setPaintOrder(Player1.class,Player2.class); if(player2.schautNachRechts){ player2.setImage(player2.hitAnimation); GreenfootImage image = player2.getImage(); image.scale(250, 250); player2.setImage(image); } else{ player2.setImage(player2.hitAnimation); GreenfootImage image = player2.getImage(); image.scale(250, 250); player2.setImage(image); player2.getImage().mirrorHorizontally(); } player2.hitTimer = System.currentTimeMillis() + 250; player2.gotHit = true; } } if(player2.attacke() &! player1.isBlocking){ if(player1.getX() - player2.getX() < attack1DistanceP2 && player1.getX() - player2.getX() > -attack1DistanceP2 && player1.getY() - player2.getY() < 30 && player1.getY() - player2.getY() > -30){ player1.leben = player1.leben -attack1StrengthP2; setPaintOrder(Player2.class,Player1.class); if(player1.schautNachRechts){ player1.setImage(player1.hitAnimation); GreenfootImage image = player1.getImage(); image.scale(250, 250); player1.setImage(image); } else{ player1.setImage(player1.hitAnimation); GreenfootImage image = player1.getImage(); image.scale(250, 250); player1.setImage(image); player1.getImage().mirrorHorizontally(); } player1.hitTimer = System.currentTimeMillis() + 250; player1.gotHit = true; } } if(player1.attacke2() &! player2.isBlocking){ if(player1.getX() - player2.getX() < attack2Distance && player1.getX() - player2.getX() > -attack2Distance && player1.getY() - player2.getY() < 30 && player1.getY() - player2.getY() > -30){ player2.leben = player2.leben -attack2Strength; setPaintOrder(Player1.class,Player2.class); if(player2.schautNachRechts){ player2.setImage(player2.hitAnimation); GreenfootImage image = player2.getImage(); image.scale(250, 250); player2.setImage(image); } else{ player2.setImage(player2.hitAnimation); GreenfootImage image = player2.getImage(); image.scale(250, 250); player2.setImage(image); player2.getImage().mirrorHorizontally(); } player2.hitTimer = System.currentTimeMillis() + 250; player2.gotHit = true; } } if(player2.attacke2() &! player1.isBlocking){ if(player1.getX() - player2.getX() < attack2DistanceP2 && player1.getX() - player2.getX() > -attack2DistanceP2 && player1.getY() - player2.getY() < 30 && player1.getY() - player2.getY() > -30){ player1.leben = player1.leben -attack2StrengthP2; setPaintOrder(Player2.class,Player1.class); if(player1.schautNachRechts){ player1.setImage(player1.hitAnimation); GreenfootImage image = player1.getImage(); image.scale(250, 250); player1.setImage(image); } else{ player1.setImage(player1.hitAnimation); GreenfootImage image = player1.getImage(); image.scale(250, 250); player1.setImage(image); player1.getImage().mirrorHorizontally(); } player1.hitTimer = System.currentTimeMillis() + 250; player1.gotHit = true; } } if(player1.dashAttack()){ if(player1.getX() - player2.getX() < attack2Distance && player1.getX() - player2.getX() > -attack2Distance && player1.getY() - player2.getY() < 30 && player1.getY() - player2.getY() > -30){ player2.isBlocking = false; player2.leben = player2.leben -attack2Strength; setPaintOrder(Player1.class,Player2.class); if(player2.schautNachRechts){ player2.setImage(player2.hitAnimation); GreenfootImage image = player2.getImage(); image.scale(250, 250); player2.setImage(image); } else{ player2.setImage(player2.hitAnimation); GreenfootImage image = player2.getImage(); image.scale(250, 250); player2.setImage(image); player2.getImage().mirrorHorizontally(); } player2.hitTimer = System.currentTimeMillis() + 250; player2.gotHit = true; } } if(player2.dashAttack()){ if(player1.getX() - player2.getX() < attack2DistanceP2 && player1.getX() - player2.getX() > -attack2DistanceP2 && player1.getY() - player2.getY() < 30 && player1.getY() - player2.getY() > -30){ player1.isBlocking = false; player1.leben = player1.leben -attack2StrengthP2; setPaintOrder(Player2.class,Player1.class); if(player1.schautNachRechts){ player1.setImage(player1.hitAnimation); GreenfootImage image = player1.getImage(); image.scale(250, 250); player1.setImage(image); } else{ player1.setImage(player1.hitAnimation); GreenfootImage image = player1.getImage(); image.scale(250, 250); player1.setImage(image); player1.getImage().mirrorHorizontally(); } player1.hitTimer = System.currentTimeMillis() + 250; player1.gotHit = true; } } showText(String.valueOf(player2.leben),450,40); showText(String.valueOf(player1.leben),150,40); l1.leben(player1.leben, player1.maxLeben); l2.leben(player2.leben, player2.maxLeben); l1.setLocation(150 - (int)(100 - ((double)player1.leben/(double)player1.maxLeben)*100), 40); l2.setLocation(450 + (int)(100 - ((double)player2.leben/(double)player2.maxLeben)*100), 40); s1.setLocation(125 - (int)(60 - ((double)player1.shakra/(double)player1.maxShakra)*60),67); s2.setLocation(475 + (int)(60 - ((double)player2.shakra/(double)player2.maxShakra)*60),67); shakra(); gameEnd(); lebensAnzeige(); updateTimersP1(); if(Greenfoot.isKeyDown("y")){ shootP1(); } if(Greenfoot.isKeyDown("m")){ shootP2(); } if(shot){ if(projectile1.hit){ player2.leben = player2.leben -20; if(player2.schautNachRechts){ player2.setImage(player2.hitAnimation); GreenfootImage image = player2.getImage(); image.scale(250, 250); player2.setImage(image); } else{ player2.setImage(player2.hitAnimation); GreenfootImage image = player2.getImage(); image.scale(250, 250); player2.setImage(image); player2.getImage().mirrorHorizontally(); } player2.hitTimer = System.currentTimeMillis() + 250; player2.gotHit = true; shot = false; } } if(shot2){ if(projectile2.hit){ player1.leben = player1.leben -20; if(player1.schautNachRechts){ player1.setImage(player1.hitAnimation); GreenfootImage image = player1.getImage(); image.scale(250, 250); player1.setImage(image); } else{ player1.setImage(player1.hitAnimation); GreenfootImage image = player1.getImage(); image.scale(250, 250); player1.setImage(image); player1.getImage().mirrorHorizontally(); } player1.hitTimer = System.currentTimeMillis() + 250; player1.gotHit = true; shot2 = false; } } } public void gameEnd(){ if(player1.leben <= 0){ Greenfoot.setWorld(new EndWorld("Player Two")); } if(player2.leben <= 0){ Greenfoot.setWorld(new EndWorld("Player One")); } } public void lebensAnzeige(){ } public void shakra(){ if(player1.shakra > 0){ s1.setImage("blue.png"); GreenfootImage imag = s1.getImage(); imag.scale((int)(120 * ((double)player1.shakra/(double)player1.maxShakra)),5); s1.setImage(imag); } if(player2.shakra > 0){ s2.setImage("blue.png"); GreenfootImage imag2 = s2.getImage(); imag2.scale((int)(120 * ((double)player2.shakra/(double)player1.maxShakra)),5); s2.setImage(imag2); } } protected void updateTimersP1() { if (player1.shootCooldown > 0) { player1.shootCooldown--; } if (player2.shootCooldown > 0) { player2.shootCooldown--; } if (player1.ultiCooldown > 0) { player1.ultiCooldown--; } if (player2.ultiCooldown > 0) { player2.ultiCooldown--; } } public void shootP1() { if (player1.shootCooldown > 0) { return; } int direction = player1.schautNachRechts ? 1 : -1; projectile1 = new Projectile(direction, player1, player2); projectile1.setImage(shootAnimation); GreenfootImage image = projectile1.getImage(); image.scale(100, 100); projectile1.setImage(image); int spawnX = player1.getX() + direction * 60; int spawnY = player1.getY() - 10; addObject(projectile1, spawnX, spawnY); shot = true; player1.shootCooldown = 60; } public void shootP2() { if (player2.shootCooldown > 0) { return; } int direction = player2.schautNachRechts ? 1 : -1; projectile2 = new Projectile2(direction, player2, player1); projectile2.setImage(shootAnimationP2); GreenfootImage image = projectile2.getImage(); image.scale(100, 100); projectile2.setImage(image); int spawnX = player2.getX() + direction * 60; int spawnY = player2.getY() - 10; addObject(projectile2, spawnX, spawnY); shot2 = true; player2.shootCooldown = 60; } public void charakterP1(){ if(charakterP1 == 1){ attack1Distance = 95; attack2Distance = 120; attack1Strength = 10; attack2Strength = 20; shootAnimation = "RenProjectile.png"; } else if(charakterP1 == 2){ attack1Distance = 95; attack2Distance = 145; attack1Strength = 15; attack2Strength = 30; shootAnimation = "TetsuProjectile.png"; } else if(charakterP1 == 3){ attack1Distance = 95; attack2Distance = 110; attack1Strength = 8; attack2Strength = 15; shootAnimation = "HinataProjectile.png"; } } public void charakterP2(){ if(charakterP2 == 1){ attack1DistanceP2 = 95; attack2DistanceP2 = 120; attack1StrengthP2 = 10; attack2StrengthP2 = 20; shootAnimationP2 = "RenProjectile.png"; } else if(charakterP2 == 2){ attack1DistanceP2 = 95; attack2DistanceP2 = 145; attack1StrengthP2 = 15; attack2StrengthP2 = 30; shootAnimationP2 = "TetsuProjectile.png"; } else if(charakterP2 == 3){ attack1DistanceP2 = 95; attack2DistanceP2 = 110; attack1StrengthP2 = 8; attack2StrengthP2 = 15; shootAnimationP2 = "HinataProjectile.png"; } } }