Files
SMIMS_2026_1/fighter/MyWorld.java
T
Max 0c0e0f39da -Dash
-DashAttack
-neue Springenmethode
-block
2026-09-17 11:14:29 +02:00

232 lines
9.3 KiB
Java

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 var;
/**
* 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);
charakterP1();
}
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() < attack1Distance && player1.getX() - player2.getX() > -attack1Distance && player1.getY() - player2.getY() < 30 && player1.getY() - player2.getY() > -30){
player1.leben = player1.leben -attack1Strength;
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() < attack2Distance && player1.getX() - player2.getX() > -attack2Distance && player1.getY() - player2.getY() < 30 && player1.getY() - player2.getY() > -30){
player1.leben = player1.leben -attack2Strength;
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() < attack2Distance && player1.getX() - player2.getX() > -attack2Distance && player1.getY() - player2.getY() < 30 && player1.getY() - player2.getY() > -30){
player1.isBlocking = false;
player1.leben = player1.leben -attack2Strength;
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);
gameEnd();
lebensAnzeige();
}
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 charakterP1(){
if(charakterP1 == 1){
attack1Distance = 95;
attack2Distance = 120;
attack1Strength = 10;
attack2Strength = 20;
}
else if(charakterP1 == 2){
attack1Distance = 95;
attack2Distance = 145;
attack1Strength = 15;
attack2Strength = 30;
}
else if(charakterP1 == 3){
attack1Distance = 95;
attack2Distance = 110;
attack1Strength = 8;
attack2Strength = 15;
}
}
}