This commit is contained in:
Max
2026-09-17 17:02:54 +02:00
parent 40867c7800
commit 9fa05786d2
17 changed files with 421 additions and 16 deletions
Binary file not shown.
+12 -2
View File
@@ -4,6 +4,10 @@ comment0.text=\r\n\ Write\ a\ description\ of\ class\ MyWorld\ here.\r\n\ \r\n\
comment1.params=pCharakterP1\ pCharakterP2 comment1.params=pCharakterP1\ pCharakterP2
comment1.target=MyWorld(int,\ int) comment1.target=MyWorld(int,\ int)
comment1.text=\r\n\ Constructor\ for\ objects\ of\ class\ MyWorld.\r\n\ \r\n comment1.text=\r\n\ Constructor\ for\ objects\ of\ class\ MyWorld.\r\n\ \r\n
comment10.params=
comment10.target=void\ charakterP1()
comment11.params=
comment11.target=void\ charakterP2()
comment2.params= comment2.params=
comment2.target=void\ prepare() comment2.target=void\ prepare()
comment2.text=\r\n\ Prepare\ the\ world\ for\ the\ start\ of\ the\ program.\r\n\ That\ is\:\ create\ the\ initial\ objects\ and\ add\ them\ to\ the\ world.\r\n comment2.text=\r\n\ Prepare\ the\ world\ for\ the\ start\ of\ the\ program.\r\n\ That\ is\:\ create\ the\ initial\ objects\ and\ add\ them\ to\ the\ world.\r\n
@@ -14,5 +18,11 @@ comment4.target=void\ gameEnd()
comment5.params= comment5.params=
comment5.target=void\ lebensAnzeige() comment5.target=void\ lebensAnzeige()
comment6.params= comment6.params=
comment6.target=void\ charakterP1() comment6.target=void\ shakra()
numComments=7 comment7.params=
comment7.target=void\ updateTimersP1()
comment8.params=
comment8.target=void\ shootP1()
comment9.params=
comment9.target=void\ shootP2()
numComments=12
+181 -6
View File
@@ -20,7 +20,19 @@ public class MyWorld extends World
int attack2Distance; int attack2Distance;
int attack1Strength; int attack1Strength;
int attack2Strength; int attack2Strength;
int attack1DistanceP2;
int attack2DistanceP2;
int attack1StrengthP2;
int attack2StrengthP2;
int var; 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. * Constructor for objects of class MyWorld.
* *
@@ -53,7 +65,12 @@ public class MyWorld extends World
addObject(p1,150,50); addObject(p1,150,50);
p2 = new Picture(2); p2 = new Picture(2);
addObject(p2,450,50); addObject(p2,450,50);
s1 = new Picture(5);
addObject(s1,150,50);
s2 = new Picture(5);
addObject(s2,150,50);
charakterP1(); charakterP1();
charakterP2();
} }
public void act(){ public void act(){
@@ -79,8 +96,8 @@ public class MyWorld extends World
} }
} }
if(player2.attacke() &! player1.isBlocking){ 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){ 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 -attack1Strength; player1.leben = player1.leben -attack1StrengthP2;
setPaintOrder(Player2.class,Player1.class); setPaintOrder(Player2.class,Player1.class);
if(player1.schautNachRechts){ if(player1.schautNachRechts){
player1.setImage(player1.hitAnimation); player1.setImage(player1.hitAnimation);
@@ -121,8 +138,8 @@ public class MyWorld extends World
} }
} }
if(player2.attacke2() &! player1.isBlocking){ 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){ 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 -attack2Strength; player1.leben = player1.leben -attack2StrengthP2;
setPaintOrder(Player2.class,Player1.class); setPaintOrder(Player2.class,Player1.class);
if(player1.schautNachRechts){ if(player1.schautNachRechts){
player1.setImage(player1.hitAnimation); player1.setImage(player1.hitAnimation);
@@ -164,9 +181,9 @@ public class MyWorld extends World
} }
} }
if(player2.dashAttack()){ if(player2.dashAttack()){
if(player1.getX() - player2.getX() < attack2Distance && player1.getX() - player2.getX() > -attack2Distance && player1.getY() - player2.getY() < 30 && player1.getY() - player2.getY() > -30){ 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.isBlocking = false;
player1.leben = player1.leben -attack2Strength; player1.leben = player1.leben -attack2StrengthP2;
setPaintOrder(Player2.class,Player1.class); setPaintOrder(Player2.class,Player1.class);
if(player1.schautNachRechts){ if(player1.schautNachRechts){
player1.setImage(player1.hitAnimation); player1.setImage(player1.hitAnimation);
@@ -191,8 +208,60 @@ public class MyWorld extends World
l2.leben(player2.leben, player2.maxLeben); l2.leben(player2.leben, player2.maxLeben);
l1.setLocation(150 - (int)(100 - ((double)player1.leben/(double)player1.maxLeben)*100), 40); 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); 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(); gameEnd();
lebensAnzeige(); 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(){ public void gameEnd(){
@@ -208,24 +277,130 @@ public class MyWorld extends World
} }
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(){ public void charakterP1(){
if(charakterP1 == 1){ if(charakterP1 == 1){
attack1Distance = 95; attack1Distance = 95;
attack2Distance = 120; attack2Distance = 120;
attack1Strength = 10; attack1Strength = 10;
attack2Strength = 20; attack2Strength = 20;
shootAnimation = "RenProjectile.png";
} }
else if(charakterP1 == 2){ else if(charakterP1 == 2){
attack1Distance = 95; attack1Distance = 95;
attack2Distance = 145; attack2Distance = 145;
attack1Strength = 15; attack1Strength = 15;
attack2Strength = 30; attack2Strength = 30;
shootAnimation = "TetsuProjectile.png";
} }
else if(charakterP1 == 3){ else if(charakterP1 == 3){
attack1Distance = 95; attack1Distance = 95;
attack2Distance = 110; attack2Distance = 110;
attack1Strength = 8; attack1Strength = 8;
attack2Strength = 15; 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";
} }
} }
} }
Binary file not shown.
+3
View File
@@ -43,5 +43,8 @@ public class Picture extends Actor
image.scale(200,67); image.scale(200,67);
setImage(image); setImage(image);
} }
if(pictureNumber == 5){
}
} }
} }
Binary file not shown.
+13
View File
@@ -0,0 +1,13 @@
#BlueJ class context
comment0.target=Projectile
comment1.params=direction\ pOwner\ pEnemy
comment1.target=Projectile(int,\ Player1,\ Player2)
comment2.params=
comment2.target=void\ act()
comment3.params=
comment3.target=void\ moveProjectile()
comment4.params=
comment4.target=void\ checkHit()
comment5.params=
comment5.target=void\ removeProjectile()
numComments=6
+67
View File
@@ -0,0 +1,67 @@
import greenfoot.*;
public class Projectile extends Actor
{
Player1 owner;
Player2 enemy;
int direction;
int speed = 10;
int damage = 10;
int lifetime = 100;
int currentFrame = 0;
int animationTimer = 0;
boolean isInWorld = true;
boolean hit = false;
public Projectile(int direction, Player1 pOwner, Player2 pEnemy)
{
this.direction = direction;
this.owner = pOwner;
enemy = pEnemy;
//Bilder für Schüsse nach links spiegeln
if (direction == -1) {
getImage().mirrorHorizontally();
}
}
public void act()
{
moveProjectile();
//animate();
checkHit();
lifetime--;
}
private void moveProjectile()
{
setLocation(getX() + speed * direction, getY());
}
private void checkHit()
{
if (getX() - enemy.getX() < 70 && getX() - enemy.getX() > -70 && getY() - enemy.getY() < 30 && getY() - enemy.getY() > -30 && isInWorld){
hit = true;
removeProjectile();
}
else if(lifetime <= 0 || isAtEdge()){
removeProjectile();
}
}
private void removeProjectile()
{
if (getWorld() != null) {
isInWorld = false;
getWorld().removeObject(this);
}
}
}
Binary file not shown.
+13
View File
@@ -0,0 +1,13 @@
#BlueJ class context
comment0.target=Projectile2
comment1.params=direction\ pOwner\ pEnemy
comment1.target=Projectile2(int,\ Player2,\ Player1)
comment2.params=
comment2.target=void\ act()
comment3.params=
comment3.target=void\ moveProjectile()
comment4.params=
comment4.target=void\ checkHit()
comment5.params=
comment5.target=void\ removeProjectile()
numComments=6
+67
View File
@@ -0,0 +1,67 @@
import greenfoot.*;
public class Projectile2 extends Actor
{
Player2 owner;
Player1 enemy;
int direction;
int speed = 10;
int damage = 10;
int lifetime = 100;
int currentFrame = 0;
int animationTimer = 0;
boolean isInWorld = true;
boolean hit = false;
public Projectile2(int direction, Player2 pOwner, Player1 pEnemy)
{
this.direction = direction;
this.owner = pOwner;
enemy = pEnemy;
//Bilder für Schüsse nach links spiegeln
if (direction == -1) {
getImage().mirrorHorizontally();
}
}
public void act()
{
moveProjectile();
//animate();
checkHit();
lifetime--;
}
private void moveProjectile()
{
setLocation(getX() + speed * direction, getY());
}
private void checkHit()
{
if (getX() - enemy.getX() < 70 && getX() - enemy.getX() > -70 && getY() - enemy.getY() < 30 && getY() - enemy.getY() > -30 && isInWorld){
hit = true;
removeProjectile();
}
else if(lifetime <= 0 || isAtEdge()){
removeProjectile();
}
}
private void removeProjectile()
{
if (getWorld() != null) {
isInWorld = false;
getWorld().removeObject(this);
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 643 B

Binary file not shown.
+15
View File
@@ -40,6 +40,8 @@ public class Player1 extends Actor
String hitAnimation; String hitAnimation;
String dashAttackAnimation; String dashAttackAnimation;
String blockAnimation; String blockAnimation;
String shootAnimation1;
String shootAnimation2;
int attack2Duration; int attack2Duration;
int speed; int speed;
double speedFaktor; double speedFaktor;
@@ -57,6 +59,11 @@ public class Player1 extends Actor
boolean isDashAttack = false; boolean isDashAttack = false;
long dashAttackTimer2 = 0; long dashAttackTimer2 = 0;
boolean isBlocking = false; boolean isBlocking = false;
int shakra;
int maxShakra;
int shootCooldown = 0;
int ultiCooldown = 0;
Player1(int pCharakter){ Player1(int pCharakter){
charakter = pCharakter; charakter = pCharakter;
@@ -484,6 +491,8 @@ public class Player1 extends Actor
} }
} }
public void charakter(){ public void charakter(){
if(charakter == 1){ if(charakter == 1){
defaultAnimation = "2Combo1.png"; defaultAnimation = "2Combo1.png";
@@ -505,6 +514,8 @@ public class Player1 extends Actor
speedFaktor = 1; speedFaktor = 1;
speedFaktor2 = speedFaktor; speedFaktor2 = speedFaktor;
vDashSpeedCharakter = 12; vDashSpeedCharakter = 12;
maxShakra = 80;
shakra = maxShakra;
} }
if(charakter == 2){ if(charakter == 2){
defaultAnimation = "Tetsu1Combo1.png"; defaultAnimation = "Tetsu1Combo1.png";
@@ -526,6 +537,8 @@ public class Player1 extends Actor
speedFaktor = 0.5; speedFaktor = 0.5;
speedFaktor2 = 0.75; speedFaktor2 = 0.75;
vDashSpeedCharakter = 10; vDashSpeedCharakter = 10;
maxShakra = 100;
shakra = maxShakra;
} }
if(charakter == 3){ if(charakter == 3){
defaultAnimation = "HinataShoot1.png"; defaultAnimation = "HinataShoot1.png";
@@ -547,6 +560,8 @@ public class Player1 extends Actor
speedFaktor = 2; speedFaktor = 2;
speedFaktor2 = 8; speedFaktor2 = 8;
vDashSpeedCharakter = 14; vDashSpeedCharakter = 14;
maxShakra = 60;
shakra = maxShakra;
} }
setImage(defaultAnimation); setImage(defaultAnimation);
GreenfootImage image = getImage(); GreenfootImage image = getImage();
Binary file not shown.
+10
View File
@@ -57,6 +57,10 @@ public class Player2 extends Actor
boolean isDashAttack = false; boolean isDashAttack = false;
long dashAttackTimer2 = 0; long dashAttackTimer2 = 0;
boolean isBlocking = false; boolean isBlocking = false;
int shakra;
int maxShakra;
int shootCooldown = 0;
int ultiCooldown = 0;
Player2(int pCharakter){ Player2(int pCharakter){
charakter = pCharakter; charakter = pCharakter;
@@ -505,6 +509,8 @@ public class Player2 extends Actor
speedFaktor = 1; speedFaktor = 1;
speedFaktor2 = speedFaktor; speedFaktor2 = speedFaktor;
vDashSpeedCharakter = 12; vDashSpeedCharakter = 12;
maxShakra = 80;
shakra = maxShakra;
} }
if(charakter == 2){ if(charakter == 2){
defaultAnimation = "Tetsu1Combo1.png"; defaultAnimation = "Tetsu1Combo1.png";
@@ -526,6 +532,8 @@ public class Player2 extends Actor
speedFaktor = 0.5; speedFaktor = 0.5;
speedFaktor2 = 0.75; speedFaktor2 = 0.75;
vDashSpeedCharakter = 10; vDashSpeedCharakter = 10;
maxShakra = 100;
shakra = maxShakra;
} }
if(charakter == 3){ if(charakter == 3){
defaultAnimation = "HinataShoot1.png"; defaultAnimation = "HinataShoot1.png";
@@ -547,6 +555,8 @@ public class Player2 extends Actor
speedFaktor = 2; speedFaktor = 2;
speedFaktor2 = 8; speedFaktor2 = 8;
vDashSpeedCharakter = 14; vDashSpeedCharakter = 14;
maxShakra = 60;
shakra = maxShakra;
} }
setImage(defaultAnimation); setImage(defaultAnimation);
GreenfootImage image = getImage(); GreenfootImage image = getImage();
+39 -7
View File
@@ -11,8 +11,26 @@ dependency10.from=MyWorld
dependency10.to=Picture dependency10.to=Picture
dependency10.type=UsesDependency dependency10.type=UsesDependency
dependency11.from=MyWorld dependency11.from=MyWorld
dependency11.to=EndWorld dependency11.to=Projectile
dependency11.type=UsesDependency dependency11.type=UsesDependency
dependency12.from=MyWorld
dependency12.to=Projectile2
dependency12.type=UsesDependency
dependency13.from=MyWorld
dependency13.to=EndWorld
dependency13.type=UsesDependency
dependency14.from=Projectile2
dependency14.to=Player2
dependency14.type=UsesDependency
dependency15.from=Projectile2
dependency15.to=Player1
dependency15.type=UsesDependency
dependency16.from=Projectile
dependency16.to=Player1
dependency16.type=UsesDependency
dependency17.from=Projectile
dependency17.to=Player2
dependency17.type=UsesDependency
dependency2.from=StartWorld dependency2.from=StartWorld
dependency2.to=Picture dependency2.to=Picture
dependency2.type=UsesDependency dependency2.type=UsesDependency
@@ -42,8 +60,8 @@ editor.fx.0.width=1294
editor.fx.0.x=-7 editor.fx.0.x=-7
editor.fx.0.y=-7 editor.fx.0.y=-7
height=686 height=686
package.numDependencies=11 package.numDependencies=17
package.numTargets=9 package.numTargets=11
project.charset=UTF-8 project.charset=UTF-8
publish.hasSource=false publish.hasSource=false
publish.locked=true publish.locked=true
@@ -65,6 +83,20 @@ target1.type=ClassTarget
target1.width=120 target1.width=120
target1.x=0 target1.x=0
target1.y=0 target1.y=0
target10.height=70
target10.name=MyWorld
target10.showInterface=false
target10.type=ClassTarget
target10.width=120
target10.x=0
target10.y=0
target11.height=70
target11.name=Projectile
target11.showInterface=false
target11.type=ClassTarget
target11.width=120
target11.x=0
target11.y=0
target2.height=70 target2.height=70
target2.name=EndWorld target2.name=EndWorld
target2.showInterface=false target2.showInterface=false
@@ -87,21 +119,21 @@ target4.width=120
target4.x=0 target4.x=0
target4.y=0 target4.y=0
target5.height=70 target5.height=70
target5.name=StartWorld target5.name=Projectile2
target5.showInterface=false target5.showInterface=false
target5.type=ClassTarget target5.type=ClassTarget
target5.width=120 target5.width=120
target5.x=0 target5.x=0
target5.y=0 target5.y=0
target6.height=70 target6.height=70
target6.name=Player2 target6.name=StartWorld
target6.showInterface=false target6.showInterface=false
target6.type=ClassTarget target6.type=ClassTarget
target6.width=120 target6.width=120
target6.x=0 target6.x=0
target6.y=0 target6.y=0
target7.height=70 target7.height=70
target7.name=Player1 target7.name=Player2
target7.showInterface=false target7.showInterface=false
target7.type=ClassTarget target7.type=ClassTarget
target7.width=120 target7.width=120
@@ -115,7 +147,7 @@ target8.width=120
target8.x=0 target8.x=0
target8.y=0 target8.y=0
target9.height=70 target9.height=70
target9.name=MyWorld target9.name=Player1
target9.showInterface=false target9.showInterface=false
target9.type=ClassTarget target9.type=ClassTarget
target9.width=120 target9.width=120