Compare commits
75 Commits
dfe93e4da5
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| df41cd63c3 | |||
| 18f6594ec7 | |||
| c52ba44c44 | |||
| 8a15fa5a51 | |||
| c0b6517f14 | |||
| 40d5295716 | |||
| 153f710a44 | |||
| d84b853b65 | |||
| bd0e81a2f7 | |||
| a36481e098 | |||
| c97dcde07a | |||
| 4d5e6ad567 | |||
| 69e753d5a8 | |||
| a7cfa6923a | |||
| fe6d466cd6 | |||
| 047fe9597d | |||
| af551a1a57 | |||
| dc85fd679b | |||
| 8ae09335c0 | |||
| c1de4dad10 | |||
| fe9208291f | |||
| 1fbc555d31 | |||
| 2e11569755 | |||
| b5bbd00cc1 | |||
| 97c8d5641e | |||
| 964725a81c | |||
| aa07effa13 | |||
| 6ab5576115 | |||
| f70e394f01 | |||
| 9a0d7e7f7a | |||
| f1bb70a2a2 | |||
| 1796607c93 | |||
| 5cf095c370 | |||
| ddba231979 | |||
| c0c5151c41 | |||
| 236a363572 | |||
| 6215bff73d | |||
| c719e5b053 | |||
| b3a951626c | |||
| 3d047538f1 | |||
| a39e816038 | |||
| 443b4e9247 | |||
| 1ed7e0ce1f | |||
| fe11e83e78 | |||
| fc9f3a660e | |||
| f7f611c2ae | |||
| eba1e4567e | |||
| a0de2fb58d | |||
| aa8fb9a067 | |||
| 66b7ced23a | |||
| 532e78de04 | |||
| 1cd6356f4f | |||
| f8c53b518d | |||
| b095aeb05f | |||
| c605600c84 | |||
| 8477d63e51 | |||
| da0a97adfe | |||
| bfada2dbc2 | |||
| 22d42273c1 | |||
| ce7d999b0f | |||
| cdc2e107d5 | |||
| 51725cd2b8 | |||
| cdcb5a5bac | |||
| e58b55993d | |||
| afdeede498 | |||
| 56b755b3d6 | |||
| eae3e92d60 | |||
| 963fa43986 | |||
| 5d65c61f15 | |||
| 8fad77b878 | |||
| 6127510ec8 | |||
| aae6ac5e41 | |||
| 4013820d8d | |||
| 8eeb32af40 | |||
| 6ee623cad4 |
@@ -25,7 +25,7 @@ public class BreakingPlattform extends Plattform
|
||||
{
|
||||
IsBreaking= true;
|
||||
//Greenfoot.playSound("...")
|
||||
this.setImage("BreakingPlattform2.png"); //untested
|
||||
this.setImage("Breaking2.png");
|
||||
|
||||
}
|
||||
if(IsBreaking)
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
#BlueJ class context
|
||||
comment0.target=Enemy
|
||||
comment1.params=targetX\ targetY
|
||||
comment1.target=Enemy(int,\ int)
|
||||
comment2.params=
|
||||
comment2.target=void\ act()
|
||||
comment3.params=targetX\ targetY
|
||||
comment3.target=void\ moveToTargetLocation(int,\ int)
|
||||
comment4.params=
|
||||
comment4.target=void\ shootAtPlayer()
|
||||
numComments=5
|
||||
@@ -0,0 +1,51 @@
|
||||
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
|
||||
|
||||
public class Enemy extends Actor
|
||||
{
|
||||
int targetX;
|
||||
int targetY;
|
||||
|
||||
boolean targetReached = false;
|
||||
|
||||
int speed = 3;
|
||||
public Enemy (int targetX, int targetY) {
|
||||
this.targetX = targetX;
|
||||
this.targetY = targetY;
|
||||
}
|
||||
|
||||
int shootTimer;
|
||||
public void act()
|
||||
{
|
||||
shootAtPlayer();
|
||||
if (!targetReached){
|
||||
moveToTargetLocation(targetX, targetY);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void moveToTargetLocation(int targetX, int targetY){
|
||||
double dx = targetX - getX();
|
||||
double dy = targetY - getY();
|
||||
double distance = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));
|
||||
if (distance < 2){
|
||||
targetReached = true;
|
||||
}
|
||||
setLocation(getX() + (int)(dx/distance*speed), getY() + (int)(dy/distance*speed));
|
||||
}
|
||||
|
||||
public void shootAtPlayer(){
|
||||
Player player = getWorld().getObjects(Player.class).get(0);
|
||||
shootTimer++;
|
||||
if (player.getX() - getX() < 0){
|
||||
setImage("Enemy.png");
|
||||
} else if (player.getX() - getX() > 0){
|
||||
setImage("EnemyRight.png");
|
||||
}
|
||||
if (shootTimer >= 100){
|
||||
EnemyProjectile enemyProjectile = new EnemyProjectile();
|
||||
getWorld().addObject(enemyProjectile, getX(), getY());
|
||||
enemyProjectile.turnTowards(player.getX(), player.getY());
|
||||
shootTimer = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
#BlueJ class context
|
||||
comment0.target=EnemyProjectile
|
||||
comment0.text=\r\n\ Write\ a\ description\ of\ class\ EnemyProjectile\ here.\r\n\ \r\n\ @author\ (your\ name)\ \r\n\ @version\ (a\ version\ number\ or\ a\ date)\r\n
|
||||
comment1.params=
|
||||
comment1.target=void\ act()
|
||||
comment1.text=\r\n\ Act\ -\ do\ whatever\ the\ EnemyProjectile\ wants\ to\ do.\ This\ method\ is\ called\ whenever\r\n\ the\ 'Act'\ or\ 'Run'\ button\ gets\ pressed\ in\ the\ environment.\r\n
|
||||
comment2.params=
|
||||
comment2.target=boolean\ isProjectileOnScreen()
|
||||
numComments=3
|
||||
@@ -0,0 +1,34 @@
|
||||
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
|
||||
|
||||
/**
|
||||
* Write a description of class EnemyProjectile here.
|
||||
*
|
||||
* @author (your name)
|
||||
* @version (a version number or a date)
|
||||
*/
|
||||
public class EnemyProjectile extends Projectile
|
||||
{
|
||||
/**
|
||||
* Act - do whatever the EnemyProjectile wants to do. This method is called whenever
|
||||
* the 'Act' or 'Run' button gets pressed in the environment.
|
||||
*/
|
||||
public void act()
|
||||
{
|
||||
move(10);
|
||||
if (!isProjectileOnScreen()){
|
||||
getWorld().removeObject(this);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isProjectileOnScreen(){
|
||||
//Check Y-Value
|
||||
if (getY() <= 0 || getY() >= getWorld().getHeight()-1){
|
||||
return false;
|
||||
}
|
||||
//Check X-Value
|
||||
if (getX() <= 0 || getX() >= getWorld().getWidth()-1){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,11 @@
|
||||
#BlueJ class context
|
||||
comment0.target=GameOverWorld
|
||||
comment0.text=\r\n\ Write\ a\ description\ of\ class\ GameOverWorld\ here.\r\n\ \r\n\ @author\ (your\ name)\ \r\n\ @version\ (a\ version\ number\ or\ a\ date)\r\n
|
||||
comment1.params=
|
||||
comment1.target=GameOverWorld()
|
||||
comment1.text=\r\n\ Constructor\ for\ objects\ of\ class\ GameOverWorld.\r\n\ \r\n
|
||||
comment1.params=score
|
||||
comment1.target=GameOverWorld(int)
|
||||
comment2.params=
|
||||
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
|
||||
numComments=3
|
||||
comment3.params=
|
||||
comment3.target=void\ showScore()
|
||||
numComments=4
|
||||
|
||||
@@ -13,10 +13,12 @@ public class GameOverWorld extends World
|
||||
* Constructor for objects of class GameOverWorld.
|
||||
*
|
||||
*/
|
||||
public GameOverWorld()
|
||||
int score;
|
||||
public GameOverWorld(int score)
|
||||
{
|
||||
// Create a new world with 600x400 cells with a cell size of 1x1 pixels.
|
||||
super(400, 600, 1);
|
||||
this.score = score;
|
||||
prepare();
|
||||
}
|
||||
|
||||
@@ -27,7 +29,16 @@ public class GameOverWorld extends World
|
||||
private void prepare()
|
||||
{
|
||||
Button button = new Button();
|
||||
addObject(button,200,350);
|
||||
addObject(button,200,520);
|
||||
button.setImage("Neustart.png");
|
||||
showScore();
|
||||
}
|
||||
|
||||
public void showScore(){
|
||||
Color hintergrundFarbe = new Color(0,0,0,0);
|
||||
GreenfootImage scoreBild = new GreenfootImage("" + score, 75, Color.WHITE, hintergrundFarbe);
|
||||
Score score3 = new Score();
|
||||
addObject(score3,200,72);
|
||||
score3.setImage(scoreBild);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
#BlueJ class context
|
||||
comment0.target=Groundflower
|
||||
comment0.text=\r\n\ Write\ a\ description\ of\ class\ StarPowerUp\ here.\r\n\ \r\n\ @author\ (your\ name)\ \r\n\ @version\ (a\ version\ number\ or\ a\ date)\r\n
|
||||
comment1.params=
|
||||
comment1.target=void\ act()
|
||||
comment1.text=\r\n\ Act\ -\ do\ whatever\ the\ StarPowerUp\ wants\ to\ do.\ This\ method\ is\ called\ whenever\r\n\ the\ 'Act'\ or\ 'Run'\ button\ gets\ pressed\ in\ the\ environment.\r\n
|
||||
comment2.params=
|
||||
comment2.target=void\ collect()
|
||||
numComments=3
|
||||
@@ -0,0 +1,30 @@
|
||||
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
|
||||
|
||||
/**
|
||||
* Write a description of class StarPowerUp here.
|
||||
*
|
||||
* @author (your name)
|
||||
* @version (a version number or a date)
|
||||
*/
|
||||
public class Groundflower extends PowerUps
|
||||
{
|
||||
int duration= 60*4; //15 Sekunden
|
||||
/**
|
||||
* Act - do whatever the StarPowerUp wants to do. This method is called whenever
|
||||
* the 'Act' or 'Run' button gets pressed in the environment.
|
||||
*/
|
||||
public void act()
|
||||
{
|
||||
moveDown();
|
||||
touchedByPlayer();
|
||||
if (deleteAfterActCycle){
|
||||
getWorld().removeObject(this);
|
||||
}
|
||||
}
|
||||
|
||||
@ Override void collect()
|
||||
{
|
||||
Player player = getIntersectingObjects(Player.class).get(0);
|
||||
player.receivePowerUp(duration, "GroundPower");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
#BlueJ class context
|
||||
comment0.target=HealthItem
|
||||
comment0.text=\r\n\ Write\ a\ description\ of\ class\ HealthItem\ here.\r\n\ \r\n\ @author\ (your\ name)\ \r\n\ @version\ (a\ version\ number\ or\ a\ date)\r\n
|
||||
comment1.params=
|
||||
comment1.target=void\ act()
|
||||
comment2.params=
|
||||
comment2.target=void\ collect()
|
||||
numComments=3
|
||||
@@ -0,0 +1,24 @@
|
||||
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
|
||||
|
||||
/**
|
||||
* Write a description of class HealthItem here.
|
||||
*
|
||||
* @author (your name)
|
||||
* @version (a version number or a date)
|
||||
*/
|
||||
public class HealthItem extends PowerUps
|
||||
{
|
||||
public void act()
|
||||
{
|
||||
moveDown();
|
||||
touchedByPlayer();
|
||||
if (deleteAfterActCycle){
|
||||
getWorld().removeObject(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override void collect(){
|
||||
Player player = getIntersectingObjects(Player.class).get(0);
|
||||
player.receivePowerUp(duration, "Heal");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
#BlueJ class context
|
||||
comment0.target=Heart
|
||||
comment0.text=\r\n\ Write\ a\ description\ of\ class\ Heart\ here.\r\n\ \r\n\ @author\ (your\ name)\ \r\n\ @version\ (a\ version\ number\ or\ a\ date)\r\n
|
||||
comment1.params=
|
||||
comment1.target=void\ act()
|
||||
comment1.text=\r\n\ Act\ -\ do\ whatever\ the\ Heart\ wants\ to\ do.\ This\ method\ is\ called\ whenever\r\n\ the\ 'Act'\ or\ 'Run'\ button\ gets\ pressed\ in\ the\ environment.\r\n
|
||||
numComments=2
|
||||
@@ -0,0 +1,19 @@
|
||||
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
|
||||
|
||||
/**
|
||||
* Write a description of class Heart here.
|
||||
*
|
||||
* @author (your name)
|
||||
* @version (a version number or a date)
|
||||
*/
|
||||
public class Heart extends Actor
|
||||
{
|
||||
/**
|
||||
* Act - do whatever the Heart wants to do. This method is called whenever
|
||||
* the 'Act' or 'Run' button gets pressed in the environment.
|
||||
*/
|
||||
public void act()
|
||||
{
|
||||
// Add your action code here.
|
||||
}
|
||||
}
|
||||
@@ -11,11 +11,15 @@ public class JumpBoostItem extends PowerUps
|
||||
int duration = 60*5;
|
||||
public void act()
|
||||
{
|
||||
moveDown();
|
||||
touchedByPlayer();
|
||||
if (deleteAfterActCycle){
|
||||
getWorld().removeObject(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override void collect(){
|
||||
Player player = getIntersectingObjects(Player.class).get(0);
|
||||
player.reveivePowerUp(duration, "JumpBoost");
|
||||
player.receivePowerUp(duration, "JumpBoost");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,4 +8,6 @@ comment2.target=void\ act()
|
||||
comment2.text=\r\n\ Act\ -\ do\ whatever\ the\ MovingPlattform\ wants\ to\ do.\ This\ method\ is\ called\ whenever\r\n\ the\ 'Act'\ or\ 'Run'\ button\ gets\ pressed\ in\ the\ environment.\r\n
|
||||
comment3.params=
|
||||
comment3.target=void\ bewege()
|
||||
numComments=4
|
||||
comment4.params=
|
||||
comment4.target=void\ bewegeSpielerMit()
|
||||
numComments=5
|
||||
|
||||
@@ -9,7 +9,7 @@ import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
|
||||
public class MovingPlattform extends Plattform
|
||||
{
|
||||
int speed;
|
||||
|
||||
int temp=0;
|
||||
public MovingPlattform(int pSpeed)
|
||||
{
|
||||
speed= pSpeed;
|
||||
@@ -23,6 +23,7 @@ public class MovingPlattform extends Plattform
|
||||
{
|
||||
// Add your action code here.
|
||||
this.bewege();
|
||||
this.bewegeSpielerMit();
|
||||
super.act();
|
||||
}
|
||||
|
||||
@@ -34,5 +35,19 @@ public class MovingPlattform extends Plattform
|
||||
{
|
||||
speed=speed*(-1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void bewegeSpielerMit()
|
||||
{
|
||||
if(this.PlayerOnPlattform())
|
||||
{
|
||||
World theWorld= this.getWorld();
|
||||
Player DerSpieler = theWorld.getObjects(Player.class).get(0);
|
||||
if(DerSpieler!=null)
|
||||
{
|
||||
DerSpieler.setLocation(DerSpieler.getX()+speed*2, DerSpieler.getY());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,4 +9,16 @@ 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
|
||||
comment3.params=
|
||||
comment3.target=void\ act()
|
||||
numComments=4
|
||||
comment4.params=
|
||||
comment4.target=void\ drawNewHearts()
|
||||
comment5.params=
|
||||
comment5.target=void\ spawnItems()
|
||||
comment6.params=
|
||||
comment6.target=void\ spawnEnemies()
|
||||
comment7.params=
|
||||
comment7.target=void\ projectile()
|
||||
comment8.params=
|
||||
comment8.target=void\ targetingProjectile()
|
||||
comment9.params=
|
||||
comment9.target=void\ showScore()
|
||||
numComments=10
|
||||
|
||||
@@ -9,9 +9,13 @@ import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
|
||||
public class MyWorld extends World
|
||||
{
|
||||
int PlattformCountdown;
|
||||
int timer = 200; //Zeit, bevor das erste Projektil auftaucht
|
||||
int timer = 600; //Zeit, bevor das erste Projektil auftaucht
|
||||
//kann später noch beliebig angepasst werden
|
||||
int targetTimer = 900;
|
||||
int targetTimer = 1000;
|
||||
int time = 0;
|
||||
int enemyTimer;
|
||||
int itemTimer;
|
||||
int score = 0;
|
||||
/**
|
||||
* Constructor for objects of class MyWorld.
|
||||
*
|
||||
@@ -31,50 +35,155 @@ public class MyWorld extends World
|
||||
{
|
||||
Player player = new Player();
|
||||
addObject(player,302,320);
|
||||
Score score = new Score();
|
||||
addObject(score, 200, 50);
|
||||
Score score1 = new Score();
|
||||
addObject(score1, 200, 30);
|
||||
score1.setImage("Score1.png");
|
||||
Score score2 = new Score();
|
||||
addObject(score2, 200, 60);
|
||||
score2.setImage("Score2.png");
|
||||
Plattform plattform = new Plattform();
|
||||
addObject(plattform,285,577);
|
||||
plattform.setLocation(286,492);
|
||||
plattform.setLocation(293,379);
|
||||
removeObject(plattform);
|
||||
Plattform plattform2 = new Plattform();
|
||||
addObject(plattform2,291,373);
|
||||
Plattform plattform3 = new Plattform();
|
||||
addObject(plattform3,123,268);
|
||||
plattform3.setLocation(136,306);
|
||||
Plattform plattform4 = new Plattform();
|
||||
addObject(plattform4,294,204);
|
||||
Plattform plattform5 = new Plattform();
|
||||
addObject(plattform5,105,112);
|
||||
plattform2.setLocation(320,367);
|
||||
plattform2.setLocation(312,371);
|
||||
plattform2.setLocation(308,382);
|
||||
Heart heart = new Heart();
|
||||
addObject(heart,371,27);
|
||||
Heart heart2 = new Heart();
|
||||
addObject(heart2,343,27);
|
||||
Heart heart3 = new Heart();
|
||||
addObject(heart3,314,27);
|
||||
|
||||
addObject(new TemporaryGround(60*8), 200, 575);
|
||||
}
|
||||
|
||||
public void act()
|
||||
{
|
||||
if (getObjects(Score.class).size() > 0){
|
||||
removeObjects(getObjects(Score.class));
|
||||
}
|
||||
Score score1 = new Score();
|
||||
addObject(score1, 200, 30);
|
||||
score1.setImage("Score1.png");
|
||||
Score score2 = new Score();
|
||||
addObject(score2, 200, 60);
|
||||
score2.setImage("Score2.png");
|
||||
showScore();
|
||||
projectile();
|
||||
spawnEnemies();
|
||||
targetingProjectile();
|
||||
spawnItems();
|
||||
drawNewHearts();
|
||||
if(PlattformCountdown==0) //Damit in regelmäßigen Abständen auf jeden Fall eine Plattform auftaucht
|
||||
{
|
||||
addObject(new Plattform(), Greenfoot.getRandomNumber(400), 5);
|
||||
PlattformCountdown=100;
|
||||
addObject(new Plattform(), 1+Greenfoot.getRandomNumber(398), 5);
|
||||
PlattformCountdown=50;
|
||||
}
|
||||
PlattformCountdown--;
|
||||
if(Greenfoot.getRandomNumber(100000)>=99800)
|
||||
{
|
||||
addObject(new Plattform(), Greenfoot.getRandomNumber(400), 5);
|
||||
addObject(new Plattform(), 1+Greenfoot.getRandomNumber(398), 5);
|
||||
}
|
||||
if(Greenfoot.getRandomNumber(100000)>=99900)
|
||||
{
|
||||
addObject(new MovingPlattform(2), Greenfoot.getRandomNumber(400), 6); //Nach Rechts bewegende Plattform
|
||||
addObject(new MovingPlattform(1), 1+Greenfoot.getRandomNumber(398), 6); //Nach Rechts bewegende Plattform
|
||||
}
|
||||
if(Greenfoot.getRandomNumber(100000)>=99900)
|
||||
{
|
||||
addObject(new MovingPlattform(-2), Greenfoot.getRandomNumber(400), 6); //Nach Links bewegende Plattform
|
||||
addObject(new MovingPlattform(-1), 1+Greenfoot.getRandomNumber(398), 6); //Nach Links bewegende Plattform
|
||||
}
|
||||
if(Greenfoot.getRandomNumber(100000)>=99750)
|
||||
{
|
||||
addObject(new BreakingPlattform(50), Greenfoot.getRandomNumber(400), 6); //Nach Links bewegende Plattform
|
||||
addObject(new BreakingPlattform(50), 1+Greenfoot.getRandomNumber(398), 6); //Nach Links bewegende Plattform
|
||||
}
|
||||
if(Greenfoot.getRandomNumber(100000)>=99750)
|
||||
{
|
||||
addObject(new SpikedPlattform(40), 1+Greenfoot.getRandomNumber(398), 6); //Nach Links bewegende Plattform
|
||||
}
|
||||
}
|
||||
|
||||
public void drawNewHearts(){
|
||||
Player player = getObjects(Player.class).get(0);
|
||||
removeObjects(getObjects(Heart.class));
|
||||
Heart heart = new Heart();
|
||||
addObject(heart,371,27);
|
||||
if (player.health >= 2){
|
||||
Heart heart2 = new Heart();
|
||||
addObject(heart2,343,27);
|
||||
}
|
||||
if (player.health == 3){
|
||||
Heart heart3 = new Heart();
|
||||
addObject(heart3,314,27);
|
||||
}
|
||||
}
|
||||
|
||||
public void spawnItems(){
|
||||
itemTimer++;
|
||||
if (itemTimer >= 575){
|
||||
itemTimer = 0;
|
||||
switch (Greenfoot.getRandomNumber(3)){
|
||||
case 0:
|
||||
Groundflower groundF = new Groundflower();
|
||||
addObject(groundF, Greenfoot.getRandomNumber(getWidth()-100)+50,0);
|
||||
break;
|
||||
case 1:
|
||||
HealthItem healthItem = new HealthItem();
|
||||
addObject(healthItem, Greenfoot.getRandomNumber(getWidth()-100)+50,0);
|
||||
break;
|
||||
case 2:
|
||||
JumpBoostItem jumpBoostItem = new JumpBoostItem();
|
||||
addObject(jumpBoostItem, Greenfoot.getRandomNumber(getWidth()-100)+50,0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void spawnEnemies(){
|
||||
enemyTimer++;
|
||||
if (enemyTimer >= 420){
|
||||
Enemy enemy = new Enemy(Greenfoot.getRandomNumber(getWidth() - 50) + 25, Greenfoot.getRandomNumber(getHeight()/2) + 15);
|
||||
addObject(enemy, Greenfoot.getRandomNumber(getWidth()-100)+50,0);
|
||||
enemyTimer = 0;
|
||||
}
|
||||
|
||||
}
|
||||
public void projectile(){
|
||||
if(timer == 0){
|
||||
Projectile projectile = new Projectile();
|
||||
addObject(projectile,Greenfoot.getRandomNumber(300)+50,0);
|
||||
timer = 200; //zeitlicher Abstand
|
||||
timer = 600; //zeitlicher Abstand
|
||||
}
|
||||
else{
|
||||
timer = timer - 1;
|
||||
}
|
||||
}
|
||||
|
||||
public void targetingProjectile(){
|
||||
if(targetTimer == 0){
|
||||
TargetingProjectile targetingProjectile = new TargetingProjectile();
|
||||
addObject(targetingProjectile, Greenfoot.getRandomNumber(300)+50,0);
|
||||
targetTimer = 900;
|
||||
targetTimer = 1000;
|
||||
}
|
||||
else{
|
||||
targetTimer = targetTimer - 1;
|
||||
}
|
||||
}
|
||||
|
||||
public void showScore(){
|
||||
time++;
|
||||
score = time/60;
|
||||
showText("" + score, 200, 60);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -40,10 +40,10 @@ public class Plattform extends Actor
|
||||
|
||||
public boolean PlayerOnPlattform()
|
||||
{
|
||||
Player Spieler= (Player) getOneIntersectingObject(Player.class);
|
||||
if(this.isTouching(Player.class))
|
||||
Player Spieler= (Player) this.getWorld().getObjects(Player.class).get(0);
|
||||
if(Spieler.getX()+(Spieler.getImage().getWidth()/2)>=this.getX()-(this.getImage().getWidth()/2) && Spieler.getX()-(Spieler.getImage().getWidth()/2)<=this.getX()+(this.getImage().getWidth()/2))
|
||||
{
|
||||
if(Spieler.getY()<this.getY()-20)
|
||||
if(Spieler.getY()+(Spieler.getImage().getHeight()/2)<=this.getY()-(this.getImage().getHeight()/2) && Spieler.getY()+(Spieler.getImage().getHeight()/2)>=this.getY()-(this.getImage().getHeight()/2))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ comment0.target=Player
|
||||
comment0.text=\r\n\ Write\ a\ description\ of\ class\ Player\ here.\r\n\ \r\n\ @author\ (your\ name)\ \r\n\ @version\ (a\ version\ number\ or\ a\ date)\r\n
|
||||
comment1.params=
|
||||
comment1.target=void\ act()
|
||||
comment10.params=
|
||||
comment10.target=void\ playerRotation()
|
||||
comment2.params=
|
||||
comment2.target=void\ moveLeftAndRight()
|
||||
comment3.params=
|
||||
@@ -10,9 +12,13 @@ comment3.target=void\ jump()
|
||||
comment4.params=
|
||||
comment4.target=void\ fall()
|
||||
comment5.params=
|
||||
comment5.target=boolean\ collision()
|
||||
comment5.target=void\ shootProjectile()
|
||||
comment6.params=
|
||||
comment6.target=void\ handlePowerUps()
|
||||
comment7.params=duration\ type
|
||||
comment7.target=void\ reveivePowerUp(int,\ java.lang.String)
|
||||
numComments=8
|
||||
comment6.target=void\ collision()
|
||||
comment7.params=
|
||||
comment7.target=void\ checkHealth()
|
||||
comment8.params=
|
||||
comment8.target=void\ handlePowerUps()
|
||||
comment9.params=duration\ type
|
||||
comment9.target=void\ receivePowerUp(int,\ java.lang.String)
|
||||
numComments=11
|
||||
|
||||
@@ -8,10 +8,15 @@ import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
|
||||
*/
|
||||
public class Player extends Actor
|
||||
{
|
||||
int MAX_HEALTH = 3;
|
||||
int health = MAX_HEALTH;
|
||||
|
||||
int jumpBoostDuration = -1;
|
||||
int jumpBoostStrength = 5;
|
||||
|
||||
|
||||
int jumpBoostStrength = 3;
|
||||
|
||||
boolean projectileReady = false;
|
||||
int projectileTimer;
|
||||
|
||||
private int speed = 6;
|
||||
private int currentJumpStrength;
|
||||
private int defaultJumpStrength = 15;
|
||||
@@ -27,10 +32,20 @@ public class Player extends Actor
|
||||
jump();
|
||||
fall();
|
||||
handlePowerUps();
|
||||
|
||||
//Check ob der Spieler am unteren Bildschirmrand ist
|
||||
shootProjectile();
|
||||
checkHealth();
|
||||
playerRotation();
|
||||
|
||||
//Check ob der Spieler am unteren Fensterrand ist
|
||||
if (getY()+1 >= getWorld().getHeight()){
|
||||
Greenfoot.setWorld(new GameOverWorld());
|
||||
MyWorld world = (MyWorld) getWorld();
|
||||
Greenfoot.setWorld(new GameOverWorld(world.score));
|
||||
}
|
||||
//Check ob der Spieler an der Seite vom Fenster ist
|
||||
if (getX() <= 0){
|
||||
setLocation(getWorld().getWidth(), getY());
|
||||
} else if (getX() >= getWorld().getWidth()-1){
|
||||
setLocation(1, getY());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,11 +55,13 @@ public class Player extends Actor
|
||||
if (Greenfoot.isKeyDown("a"))
|
||||
{
|
||||
setLocation(getX() - speed, getY());
|
||||
setImage("Player.png");
|
||||
}
|
||||
|
||||
if (Greenfoot.isKeyDown("d"))
|
||||
{
|
||||
setLocation(getX() + speed, getY());
|
||||
setImage("Player.png");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,61 +75,64 @@ public class Player extends Actor
|
||||
}
|
||||
}
|
||||
|
||||
// Schwerkraft
|
||||
private void fall()
|
||||
{
|
||||
int oldY = getY();
|
||||
|
||||
verticalSpeed += gravity;
|
||||
|
||||
int newY = getY() + verticalSpeed;
|
||||
|
||||
setLocation(getX(), newY);
|
||||
|
||||
Actor ground = getOneIntersectingObject(Plattform.class);
|
||||
|
||||
if (ground != null && verticalSpeed >= 0)
|
||||
{
|
||||
int groundTop = ground.getY()
|
||||
- ground.getImage().getHeight() / 2;
|
||||
|
||||
int characterBottom = getY()
|
||||
+ getImage().getHeight() / 2;
|
||||
|
||||
// Nur landen, wenn der Spieler vorher über dem Boden war
|
||||
int oldCharacterBottom = oldY
|
||||
+ getImage().getHeight() / 2;
|
||||
|
||||
if (oldCharacterBottom <= groundTop &&
|
||||
characterBottom >= groundTop)
|
||||
{
|
||||
setLocation(
|
||||
getX(),
|
||||
groundTop - getImage().getHeight() / 2
|
||||
);
|
||||
|
||||
// Schwerkraft
|
||||
private void fall() {
|
||||
int oldY = getY();
|
||||
verticalSpeed += gravity;
|
||||
int newY = getY() + verticalSpeed;
|
||||
setLocation(getX(), newY);
|
||||
// Alle Plattformen überprüfen, die der Spieler berührt
|
||||
java.util.List<Plattform> platforms = getIntersectingObjects(Plattform.class);
|
||||
boolean landed = false;
|
||||
for (Plattform platform : platforms) {
|
||||
int groundTop = platform.getY() - platform.getImage().getHeight() / 2;
|
||||
int characterBottom = getY() + getImage().getHeight() / 2;
|
||||
int oldCharacterBottom = oldY + getImage().getHeight() / 2;
|
||||
// Prüfen, ob der Spieler von oben auf diese Plattform fällt
|
||||
if (verticalSpeed >= 0 && oldCharacterBottom <= groundTop && characterBottom >= groundTop) {
|
||||
setLocation( getX(), groundTop - getImage().getHeight() / 2 );
|
||||
verticalSpeed = 0;
|
||||
onGround = true;
|
||||
}
|
||||
landed = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
onGround = landed;
|
||||
}
|
||||
|
||||
public void shootProjectile(){
|
||||
projectileTimer++;
|
||||
MouseInfo mouse = Greenfoot.getMouseInfo();
|
||||
if (Greenfoot.mousePressed(null)){
|
||||
PlayerProjectile playerProjectile = new PlayerProjectile();
|
||||
getWorld().addObject(playerProjectile, getX(), getY());
|
||||
playerProjectile.turnTowards(Greenfoot.getMouseInfo().getX(), Greenfoot.getMouseInfo().getY());
|
||||
projectileReady = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
onGround = false;
|
||||
if (projectileTimer >= 10){
|
||||
projectileReady = true;
|
||||
projectileTimer = 0;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean collision(){
|
||||
if (getIntersectingObjects(Projectile.class).size()>0)
|
||||
public void collision(){
|
||||
if (getIntersectingObjects(Projectile.class).size()>0
|
||||
|| getIntersectingObjects(Enemy.class).size()>0
|
||||
|| getIntersectingObjects(Spike.class).size()>0)
|
||||
{
|
||||
Greenfoot.setWorld(new GameOverWorld());
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
health--;
|
||||
getWorld().removeObjects(getIntersectingObjects(Projectile.class));
|
||||
getWorld().removeObjects(getIntersectingObjects(Enemy.class));
|
||||
getWorld().removeObjects(getWorld().getObjects(Spike.class));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void checkHealth(){
|
||||
if (health <= 0){
|
||||
MyWorld world = (MyWorld) getWorld();
|
||||
Greenfoot.setWorld(new GameOverWorld(world.score));
|
||||
}
|
||||
}
|
||||
|
||||
public void handlePowerUps(){
|
||||
if (jumpBoostDuration >= 0){
|
||||
jumpBoostDuration -= 1;
|
||||
@@ -120,8 +140,8 @@ public class Player extends Actor
|
||||
currentJumpStrength = defaultJumpStrength;
|
||||
}
|
||||
}
|
||||
|
||||
public void reveivePowerUp(int duration, String type){
|
||||
|
||||
public void receivePowerUp(int duration, String type){
|
||||
switch(type){
|
||||
case "dummy":
|
||||
break;
|
||||
@@ -129,6 +149,32 @@ public class Player extends Actor
|
||||
currentJumpStrength = defaultJumpStrength;
|
||||
currentJumpStrength += jumpBoostStrength;
|
||||
jumpBoostDuration = duration;
|
||||
break;
|
||||
case "Heal":
|
||||
if (health < MAX_HEALTH){
|
||||
health++;
|
||||
}
|
||||
break;
|
||||
case "GroundPower":
|
||||
World theWorld= this.getWorld();
|
||||
if(!theWorld.getObjects(TemporaryGround.class).isEmpty())
|
||||
{
|
||||
theWorld.getObjects(TemporaryGround.class).get(0).RefreshLifeToDuration(duration);
|
||||
}
|
||||
else
|
||||
{
|
||||
theWorld.addObject((new TemporaryGround(duration)), 200, 575);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void playerRotation(){
|
||||
if(Greenfoot.isKeyDown("a")){
|
||||
setImage("PlayerLeft.png");
|
||||
}
|
||||
if(Greenfoot.isKeyDown("d")){
|
||||
setImage("Player.png");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
#BlueJ class context
|
||||
comment0.target=PlayerProjectile
|
||||
comment0.text=\r\n\ Write\ a\ description\ of\ class\ PlayerProjectile\ here.\r\n\ \r\n\ @author\ (your\ name)\ \r\n\ @version\ (a\ version\ number\ or\ a\ date)\r\n
|
||||
comment1.params=
|
||||
comment1.target=void\ act()
|
||||
comment1.text=\r\n\ Act\ -\ do\ whatever\ the\ PlayerProjectile\ wants\ to\ do.\ This\ method\ is\ called\ whenever\r\n\ the\ 'Act'\ or\ 'Run'\ button\ gets\ pressed\ in\ the\ environment.\r\n
|
||||
comment2.params=
|
||||
comment2.target=void\ checkForEnemyCollision()
|
||||
comment3.params=
|
||||
comment3.target=boolean\ isProjectileOnScreen()
|
||||
numComments=4
|
||||
@@ -0,0 +1,43 @@
|
||||
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
|
||||
|
||||
/**
|
||||
* Write a description of class PlayerProjectile here.
|
||||
*
|
||||
* @author (your name)
|
||||
* @version (a version number or a date)
|
||||
*/
|
||||
public class PlayerProjectile extends Actor
|
||||
{
|
||||
boolean deleteAfterActCycle = false;
|
||||
/**
|
||||
* Act - do whatever the PlayerProjectile wants to do. This method is called whenever
|
||||
* the 'Act' or 'Run' button gets pressed in the environment.
|
||||
*/
|
||||
public void act()
|
||||
{
|
||||
move(7);
|
||||
checkForEnemyCollision();
|
||||
if (deleteAfterActCycle || !isProjectileOnScreen()){
|
||||
getWorld().removeObject(this);
|
||||
}
|
||||
}
|
||||
|
||||
public void checkForEnemyCollision(){
|
||||
if (getOneIntersectingObject(Enemy.class) != null){
|
||||
getWorld().removeObject(getOneIntersectingObject(Enemy.class));
|
||||
deleteAfterActCycle = true;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isProjectileOnScreen(){
|
||||
//Check Y-Value
|
||||
if (getY() <= 0 || getY() >= getWorld().getHeight()-1){
|
||||
return false;
|
||||
}
|
||||
//Check X-Value
|
||||
if (getX() <= 0 || getX() >= getWorld().getWidth()-1){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -7,4 +7,6 @@ comment2.params=
|
||||
comment2.target=void\ touchedByPlayer()
|
||||
comment3.params=
|
||||
comment3.target=void\ collect()
|
||||
numComments=4
|
||||
comment4.params=
|
||||
comment4.target=void\ moveDown()
|
||||
numComments=5
|
||||
|
||||
@@ -9,20 +9,35 @@ import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
|
||||
public class PowerUps extends Actor
|
||||
{
|
||||
int duration;
|
||||
boolean deleteAfterActCycle = false;
|
||||
|
||||
public void act()
|
||||
{
|
||||
moveDown();
|
||||
touchedByPlayer();
|
||||
if (deleteAfterActCycle){
|
||||
getWorld().removeObject(this);
|
||||
}
|
||||
}
|
||||
|
||||
public void touchedByPlayer(){
|
||||
if (getIntersectingObjects(Player.class).size() > 0){
|
||||
collect();
|
||||
getWorld().removeObject(this);
|
||||
deleteAfterActCycle = true;
|
||||
}
|
||||
}
|
||||
|
||||
void collect(){
|
||||
Player player = getIntersectingObjects(Player.class).get(0);
|
||||
player.reveivePowerUp(duration, "dummy");
|
||||
player.receivePowerUp(duration, "dummy");
|
||||
}
|
||||
|
||||
public void moveDown()
|
||||
{
|
||||
setLocation(this.getX(), this.getY()+2);
|
||||
if(this.getY() >= getWorld().getHeight()-1)
|
||||
{
|
||||
deleteAfterActCycle = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,4 @@ comment0.text=\r\n\ Write\ a\ description\ of\ class\ UI\ here.\r\n\ \r\n\ @auth
|
||||
comment1.params=
|
||||
comment1.target=void\ act()
|
||||
comment1.text=\r\n\ Act\ -\ do\ whatever\ the\ UI\ wants\ to\ do.\ This\ method\ is\ called\ whenever\r\n\ the\ 'Act'\ or\ 'Run'\ button\ gets\ pressed\ in\ the\ environment.\r\n
|
||||
comment2.params=
|
||||
comment2.target=void\ draw_score()
|
||||
comment3.params=
|
||||
comment3.target=int\ calculate_score()
|
||||
numComments=4
|
||||
numComments=2
|
||||
|
||||
@@ -8,22 +8,13 @@ import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
|
||||
*/
|
||||
public class Score extends Actor
|
||||
{
|
||||
int timer;
|
||||
|
||||
/**
|
||||
* Act - do whatever the UI wants to do. This method is called whenever
|
||||
* the 'Act' or 'Run' button gets pressed in the environment.
|
||||
*/
|
||||
public void act()
|
||||
{
|
||||
timer++;
|
||||
draw_score();
|
||||
}
|
||||
|
||||
public void draw_score(){
|
||||
setImage(new GreenfootImage("Score:" + calculate_score(), 24, Color.WHITE, Color.BLACK));
|
||||
}
|
||||
|
||||
public int calculate_score(){
|
||||
return timer/60;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
#BlueJ class context
|
||||
comment0.target=Spike
|
||||
comment0.text=\r\n\ Write\ a\ description\ of\ class\ Spike\ here.\r\n\ \r\n\ @author\ (your\ name)\ \r\n\ @version\ (a\ version\ number\ or\ a\ date)\r\n
|
||||
comment1.params=pSpeed
|
||||
comment1.target=Spike(int)
|
||||
comment2.params=
|
||||
comment2.target=void\ act()
|
||||
comment2.text=\r\n\ Act\ -\ do\ whatever\ the\ Spike\ wants\ to\ do.\ This\ method\ is\ called\ whenever\r\n\ the\ 'Act'\ or\ 'Run'\ button\ gets\ pressed\ in\ the\ environment.\r\n
|
||||
comment3.params=
|
||||
comment3.target=void\ loescheMich()
|
||||
comment4.params=
|
||||
comment4.target=void\ bewege()
|
||||
numComments=5
|
||||
@@ -0,0 +1,41 @@
|
||||
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
|
||||
|
||||
/**
|
||||
* Write a description of class Spike here.
|
||||
*
|
||||
* @author (your name)
|
||||
* @version (a version number or a date)
|
||||
*/
|
||||
public class Spike extends Actor
|
||||
{
|
||||
int speed;
|
||||
public Spike(int pSpeed)
|
||||
{
|
||||
speed=pSpeed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Act - do whatever the Spike wants to do. This method is called whenever
|
||||
* the 'Act' or 'Run' button gets pressed in the environment.
|
||||
*/
|
||||
public void act()
|
||||
{
|
||||
this.bewege();
|
||||
}
|
||||
|
||||
public void loescheMich()
|
||||
{
|
||||
MyWorld theWorld= (MyWorld) this.getWorld();
|
||||
theWorld.removeObject(this);
|
||||
}
|
||||
|
||||
public void bewege()
|
||||
{
|
||||
this.setLocation(this.getX(), this.getY()+speed);
|
||||
MyWorld theWorld= (MyWorld) this.getWorld();
|
||||
if(this.getY()>=theWorld.getHeight()-5)
|
||||
{
|
||||
this.loescheMich();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
#BlueJ class context
|
||||
comment0.target=SpikedPlattform
|
||||
comment0.text=\r\n\ Write\ a\ description\ of\ class\ SpikedPlattform\ here.\r\n\ \r\n\ @author\ (your\ name)\ \r\n\ @version\ (a\ version\ number\ or\ a\ date)\r\n
|
||||
comment1.params=pSpikeCountdown
|
||||
comment1.target=SpikedPlattform(int)
|
||||
comment2.params=
|
||||
comment2.target=void\ act()
|
||||
comment2.text=\r\n\ Act\ -\ do\ whatever\ the\ SpikedPlattform\ wants\ to\ do.\ This\ method\ is\ called\ whenever\r\n\ the\ 'Act'\ or\ 'Run'\ button\ gets\ pressed\ in\ the\ environment.\r\n
|
||||
comment3.params=
|
||||
comment3.target=void\ activateSpikes()
|
||||
comment4.params=
|
||||
comment4.target=void\ spikeTheSurface()
|
||||
numComments=5
|
||||
@@ -0,0 +1,63 @@
|
||||
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
|
||||
|
||||
/**
|
||||
* Write a description of class SpikedPlattform here.
|
||||
*
|
||||
* @author (your name)
|
||||
* @version (a version number or a date)
|
||||
*/
|
||||
public class SpikedPlattform extends Plattform
|
||||
{
|
||||
int SpikeCountdown;
|
||||
boolean spikesActivated=false;
|
||||
boolean isSpiked=false;
|
||||
Spike[] hasSpikes= new Spike[5];
|
||||
public SpikedPlattform(int pSpikeCountdown)
|
||||
{
|
||||
SpikeCountdown=pSpikeCountdown;
|
||||
}
|
||||
|
||||
/**
|
||||
* Act - do whatever the SpikedPlattform wants to do. This method is called whenever
|
||||
* the 'Act' or 'Run' button gets pressed in the environment.
|
||||
*/
|
||||
public void act()
|
||||
{
|
||||
// Add your action code here.
|
||||
if(this.PlayerOnPlattform() && spikesActivated== false)
|
||||
{
|
||||
this.activateSpikes();
|
||||
}
|
||||
if(spikesActivated)
|
||||
{
|
||||
SpikeCountdown--;
|
||||
}
|
||||
if(SpikeCountdown==0)
|
||||
{
|
||||
this.spikeTheSurface();
|
||||
}
|
||||
super.act();
|
||||
}
|
||||
|
||||
public void activateSpikes()
|
||||
{
|
||||
spikesActivated=true;
|
||||
MyWorld theWorld= (MyWorld) this.getWorld();
|
||||
for(int i=-6; i<7; i++)
|
||||
{
|
||||
theWorld.addObject(new UnactiveSpike(2,SpikeCountdown, this ), this.getX()+i* (this.getImage().getWidth()/13), this.getY()-(this.getImage().getHeight()/2));
|
||||
}
|
||||
//Sound
|
||||
//setImage
|
||||
|
||||
}
|
||||
|
||||
public void spikeTheSurface()
|
||||
{
|
||||
isSpiked=true;
|
||||
|
||||
//Soun)
|
||||
//setImage
|
||||
}
|
||||
|
||||
}
|
||||
@@ -26,7 +26,7 @@ public class StartWorld extends World
|
||||
private void prepare()
|
||||
{
|
||||
Button button = new Button();
|
||||
addObject(button,200,350);
|
||||
addObject(button,200,310);
|
||||
button.setImage("Start.png");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,10 @@ public class TargetingProjectile extends Projectile
|
||||
int playerX = player.getX();
|
||||
int playerY = player.getY();
|
||||
turnTowards(playerX, playerY);
|
||||
move(5);
|
||||
move(1);
|
||||
if(getY() > playerY){
|
||||
setLocation(getX(),getY()+5);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
#BlueJ class context
|
||||
comment0.target=TemporaryGround
|
||||
comment0.text=\r\n\ Write\ a\ description\ of\ class\ TemporaryGround\ here.\r\n\ \r\n\ @author\ (your\ name)\ \r\n\ @version\ (a\ version\ number\ or\ a\ date)\r\n
|
||||
comment1.params=pLebensdauer
|
||||
comment1.target=TemporaryGround(int)
|
||||
comment2.params=
|
||||
comment2.target=void\ act()
|
||||
comment2.text=\r\n\ Act\ -\ do\ whatever\ the\ TemporaryGround\ wants\ to\ do.\ This\ method\ is\ called\ whenever\r\n\ the\ 'Act'\ or\ 'Run'\ button\ gets\ pressed\ in\ the\ environment.\r\n
|
||||
comment3.params=
|
||||
comment3.target=void\ warning()
|
||||
comment4.params=
|
||||
comment4.target=void\ noMoreWarning()
|
||||
comment5.params=pDuration
|
||||
comment5.target=void\ RefreshLifeToDuration(int)
|
||||
comment6.params=
|
||||
comment6.target=void\ Buffer()
|
||||
numComments=7
|
||||
@@ -0,0 +1,71 @@
|
||||
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
|
||||
|
||||
/**
|
||||
* Write a description of class TemporaryGround here.
|
||||
*
|
||||
* @author (your name)
|
||||
* @version (a version number or a date)
|
||||
*/
|
||||
public class TemporaryGround extends Plattform
|
||||
{
|
||||
private int Lebensdauer;
|
||||
boolean warningHasHappend=false;
|
||||
boolean deWarningHasHappend=true;
|
||||
public TemporaryGround(int pLebensdauer)
|
||||
{
|
||||
Lebensdauer=pLebensdauer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Act - do whatever the TemporaryGround wants to do. This method is called whenever
|
||||
* the 'Act' or 'Run' button gets pressed in the environment.
|
||||
*/
|
||||
public void act()
|
||||
{
|
||||
// Add your action code here.
|
||||
this.Buffer();
|
||||
Lebensdauer--;
|
||||
if(Lebensdauer==0)
|
||||
{
|
||||
this.loescheMich();
|
||||
}
|
||||
if(Lebensdauer<60*3 && warningHasHappend==false) //3 Sekunden
|
||||
{
|
||||
this.warning();
|
||||
}
|
||||
if(Lebensdauer>=60*3 && deWarningHasHappend==false)
|
||||
{
|
||||
this.noMoreWarning();
|
||||
}
|
||||
}
|
||||
|
||||
public void warning()
|
||||
{
|
||||
this.setImage("BreakingGround.png");
|
||||
warningHasHappend=true;
|
||||
deWarningHasHappend=false;
|
||||
}
|
||||
|
||||
public void noMoreWarning()
|
||||
{
|
||||
this.setImage("Ground.png");
|
||||
warningHasHappend=false;
|
||||
deWarningHasHappend=true;
|
||||
}
|
||||
|
||||
public void RefreshLifeToDuration(int pDuration)
|
||||
{
|
||||
Lebensdauer=pDuration;
|
||||
}
|
||||
|
||||
public void Buffer()
|
||||
{
|
||||
{
|
||||
Player player= this.getWorld().getObjects(Player.class).get(0);
|
||||
if(this.intersects(player))
|
||||
{
|
||||
player.setLocation(player.getX(), this.getY()-this.getImage().getHeight()-5);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
#BlueJ class context
|
||||
comment0.target=UnactiveSpike
|
||||
comment0.text=\r\n\ Write\ a\ description\ of\ class\ UnactiveSpike\ here.\r\n\ \r\n\ @author\ (your\ name)\ \r\n\ @version\ (a\ version\ number\ or\ a\ date)\r\n
|
||||
comment1.params=pSpeed\ pCoundown\ pPlattform
|
||||
comment1.target=UnactiveSpike(int,\ int,\ SpikedPlattform)
|
||||
comment2.params=
|
||||
comment2.target=void\ act()
|
||||
comment2.text=\r\n\ Act\ -\ do\ whatever\ the\ UnactiveSpike\ wants\ to\ do.\ This\ method\ is\ called\ whenever\r\n\ the\ 'Act'\ or\ 'Run'\ button\ gets\ pressed\ in\ the\ environment.\r\n
|
||||
comment3.params=
|
||||
comment3.target=void\ loescheMich()
|
||||
comment4.params=
|
||||
comment4.target=void\ bewege()
|
||||
numComments=5
|
||||
@@ -0,0 +1,58 @@
|
||||
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
|
||||
|
||||
/**
|
||||
* Write a description of class UnactiveSpike here.
|
||||
*
|
||||
* @author (your name)
|
||||
* @version (a version number or a date)
|
||||
*/
|
||||
public class UnactiveSpike extends Actor
|
||||
{
|
||||
int countdown;
|
||||
int speed;
|
||||
boolean geloescht=false;
|
||||
public UnactiveSpike(int pSpeed, int pCoundown, SpikedPlattform pPlattform)
|
||||
{
|
||||
speed=pSpeed;
|
||||
countdown=pCoundown;
|
||||
}
|
||||
|
||||
/**
|
||||
* Act - do whatever the UnactiveSpike wants to do. This method is called whenever
|
||||
* the 'Act' or 'Run' button gets pressed in the environment.
|
||||
*/
|
||||
public void act()
|
||||
{
|
||||
this.bewege();
|
||||
countdown--;
|
||||
if(countdown==0)
|
||||
{
|
||||
MyWorld theWorld= (MyWorld) this.getWorld();
|
||||
Spike BeispielSpike=new Spike(1);
|
||||
GreenfootImage SpikeImage= BeispielSpike.getImage();
|
||||
theWorld.addObject(new Spike(speed), this.getX(), (this.getY()- this.getImage().getHeight()/2)-2); //die Zahl Minus damit ist endlich passt
|
||||
geloescht=true;
|
||||
}
|
||||
if(geloescht)
|
||||
{
|
||||
this.loescheMich();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void loescheMich()
|
||||
{
|
||||
MyWorld theWorld= (MyWorld) this.getWorld();
|
||||
theWorld.removeObject(this);
|
||||
}
|
||||
|
||||
public void bewege()
|
||||
{
|
||||
this.setLocation(this.getX(), this.getY()+speed);
|
||||
MyWorld theWorld= (MyWorld) this.getWorld();
|
||||
if(this.getY()>=theWorld.getHeight()-5)
|
||||
{
|
||||
geloescht=true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,148 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<!-- Generated by javadoc (21) on Wed Sep 16 11:08:05 CEST 2026 -->
|
||||
<title>Score</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta name="dc.created" content="2026-09-16">
|
||||
<meta name="description" content="declaration: class: Score">
|
||||
<meta name="generator" content="javadoc/ClassWriterImpl">
|
||||
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
|
||||
<script type="text/javascript" src="script.js"></script>
|
||||
</head>
|
||||
<body class="class-declaration-page">
|
||||
<script type="text/javascript"></script>
|
||||
<noscript>
|
||||
<div>JavaScript ist im Browser deaktiviert.</div>
|
||||
</noscript>
|
||||
<div class="flex-box">
|
||||
<div class="flex-content">
|
||||
<main role="main">
|
||||
<!-- ======== START OF CLASS DATA ======== -->
|
||||
<div class="header">
|
||||
<h1 title="Klasse Score" class="title">Klasse Score</h1>
|
||||
</div>
|
||||
<div class="inheritance" title="Vererbungsbaum"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="Klasse oder Schnittstelle in java.lang" class="external-link">java.lang.Object</a>
|
||||
<div class="inheritance">greenfoot.Actor
|
||||
<div class="inheritance">Score</div>
|
||||
</div>
|
||||
</div>
|
||||
<section class="class-description" id="class-description">
|
||||
<hr>
|
||||
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">Score</span>
|
||||
<span class="extends-implements">extends greenfoot.Actor</span></div>
|
||||
<div class="block">Write a description of class UI here.</div>
|
||||
<dl class="notes">
|
||||
<dt>Version:</dt>
|
||||
<dd>(a version number or a date)</dd>
|
||||
<dt>Autor:</dt>
|
||||
<dd>(your name)</dd>
|
||||
</dl>
|
||||
</section>
|
||||
<section class="summary">
|
||||
<ul class="summary-list">
|
||||
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
|
||||
<li>
|
||||
<section class="constructor-summary" id="constructor-summary">
|
||||
<h2>Konstruktorübersicht</h2>
|
||||
<div class="caption"><span>Konstruktoren</span></div>
|
||||
<div class="summary-table two-column-summary">
|
||||
<div class="table-header col-first">Konstruktor</div>
|
||||
<div class="table-header col-last">Beschreibung</div>
|
||||
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">Score</a>()</code></div>
|
||||
<div class="col-last even-row-color"> </div>
|
||||
</div>
|
||||
</section>
|
||||
</li>
|
||||
<!-- ========== METHOD SUMMARY =========== -->
|
||||
<li>
|
||||
<section class="method-summary" id="method-summary">
|
||||
<h2>Methodenübersicht</h2>
|
||||
<div id="method-summary-table">
|
||||
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">Alle Methoden</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instanzmethoden</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Konkrete Methoden</button></div>
|
||||
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
|
||||
<div class="summary-table three-column-summary">
|
||||
<div class="table-header col-first">Modifizierer und Typ</div>
|
||||
<div class="table-header col-second">Methode</div>
|
||||
<div class="table-header col-last">Beschreibung</div>
|
||||
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
|
||||
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#act()" class="member-name-link">act</a>()</code></div>
|
||||
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
|
||||
<div class="block">Act - do whatever the UI wants to do.</div>
|
||||
</div>
|
||||
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
|
||||
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#calculate_score()" class="member-name-link">calculate_score</a>()</code></div>
|
||||
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
|
||||
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
|
||||
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#draw_score()" class="member-name-link">draw_score</a>()</code></div>
|
||||
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="inherited-list">
|
||||
<h3 id="methods-inherited-from-class-greenfoot.Actor">Von Klasse geerbte Methoden greenfoot.Actor</h3>
|
||||
<code>addedToWorld, getImage, getIntersectingObjects, getNeighbours, getObjectsAtOffset, getObjectsInRange, getOneIntersectingObject, getOneObjectAtOffset, getRotation, getWorld, getWorldOfType, getX, getY, intersects, isAtEdge, isTouching, move, removeTouching, setImage, setImage, setLocation, setRotation, sleepFor, turn, turnTowards</code></div>
|
||||
<div class="inherited-list">
|
||||
<h3 id="methods-inherited-from-class-java.lang.Object">Von Klasse geerbte Methoden java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="Klasse oder Schnittstelle in java.lang" class="external-link">Object</a></h3>
|
||||
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="Klasse oder Schnittstelle in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="Klasse oder Schnittstelle in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="Klasse oder Schnittstelle in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="Klasse oder Schnittstelle in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="Klasse oder Schnittstelle in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="Klasse oder Schnittstelle in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="Klasse oder Schnittstelle in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="Klasse oder Schnittstelle in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="Klasse oder Schnittstelle in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="Klasse oder Schnittstelle in java.lang" class="external-link">wait</a></code></div>
|
||||
</section>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section class="details">
|
||||
<ul class="details-list">
|
||||
<!-- ========= CONSTRUCTOR DETAIL ======== -->
|
||||
<li>
|
||||
<section class="constructor-details" id="constructor-detail">
|
||||
<h2>Konstruktordetails</h2>
|
||||
<ul class="member-list">
|
||||
<li>
|
||||
<section class="detail" id="<init>()">
|
||||
<h3>Score</h3>
|
||||
<div class="member-signature"><span class="modifiers">public</span> <span class="element-name">Score</span>()</div>
|
||||
</section>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
</li>
|
||||
<!-- ============ METHOD DETAIL ========== -->
|
||||
<li>
|
||||
<section class="method-details" id="method-detail">
|
||||
<h2>Methodendetails</h2>
|
||||
<ul class="member-list">
|
||||
<li>
|
||||
<section class="detail" id="act()">
|
||||
<h3>act</h3>
|
||||
<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">act</span>()</div>
|
||||
<div class="block">Act - do whatever the UI wants to do. This method is called whenever
|
||||
the 'Act' or 'Run' button gets pressed in the environment.</div>
|
||||
<dl class="notes">
|
||||
<dt>Setzt außer Kraft:</dt>
|
||||
<dd><code>act</code> in Klasse <code>greenfoot.Actor</code></dd>
|
||||
</dl>
|
||||
</section>
|
||||
</li>
|
||||
<li>
|
||||
<section class="detail" id="draw_score()">
|
||||
<h3>draw_score</h3>
|
||||
<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">draw_score</span>()</div>
|
||||
</section>
|
||||
</li>
|
||||
<li>
|
||||
<section class="detail" id="calculate_score()">
|
||||
<h3>calculate_score</h3>
|
||||
<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">int</span> <span class="element-name">calculate_score</span>()</div>
|
||||
</section>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<!-- ========= END OF CLASS DATA ========= -->
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,11 +1,11 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<!-- Generated by javadoc (21) on Tue Sep 15 12:14:29 CEST 2026 -->
|
||||
<!-- Generated by javadoc (21) on Wed Sep 16 11:08:05 CEST 2026 -->
|
||||
<title>Generierte Dokumentation (unbenannt)</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta name="dc.created" content="2026-09-15">
|
||||
<meta name="dc.created" content="2026-09-16">
|
||||
<meta name="description" content="index redirect">
|
||||
<meta name="generator" content="javadoc/IndexRedirectWriter">
|
||||
<link rel="canonical" href="package-summary.html">
|
||||
|
||||
@@ -20,16 +20,16 @@ C:\Users\Marlie\Documents\Workspace\SMIMS_2026_2\SMIMS-Game\doc
|
||||
UTF-8
|
||||
-charset
|
||||
UTF-8
|
||||
C:\Users\Marlie\Documents\Workspace\SMIMS_2026_2\SMIMS-Game\StartWorld.java
|
||||
C:\Users\Marlie\Documents\Workspace\SMIMS_2026_2\SMIMS-Game\Score.java
|
||||
<---- end of javadoc command ---->
|
||||
Quelldatei C:\Users\Marlie\Documents\Workspace\SMIMS_2026_2\SMIMS-Game\StartWorld.java wird geladen...
|
||||
Quelldatei C:\Users\Marlie\Documents\Workspace\SMIMS_2026_2\SMIMS-Game\Score.java wird geladen...
|
||||
Javadoc-Informationen werden erstellt...
|
||||
Warnung: Unbekannte Enum-Konstante Tag.Any
|
||||
Grund: Klassendatei für threadchecker.Tag nicht gefunden
|
||||
Warnung: Unbekannte Enum-Konstante Tag.Any
|
||||
Standard-Doclet-Version 21.0.4+7-LTS
|
||||
Baum für alle Packages und Klassen wird erstellt...
|
||||
C:\Users\Marlie\Documents\Workspace\SMIMS_2026_2\SMIMS-Game\doc\StartWorld.html wird generiert...
|
||||
C:\Users\Marlie\Documents\Workspace\SMIMS_2026_2\SMIMS-Game\doc\Score.html wird generiert...
|
||||
C:\Users\Marlie\Documents\Workspace\SMIMS_2026_2\SMIMS-Game\doc\package-summary.html wird generiert...
|
||||
C:\Users\Marlie\Documents\Workspace\SMIMS_2026_2\SMIMS-Game\doc\index.html wird generiert...
|
||||
2 Warnungen
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<!-- Generated by javadoc (21) on Tue Sep 15 12:14:29 CEST 2026 -->
|
||||
<!-- Generated by javadoc (21) on Wed Sep 16 11:08:05 CEST 2026 -->
|
||||
<title>Unbenanntes Package</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta name="dc.created" content="2026-09-15">
|
||||
<meta name="dc.created" content="2026-09-16">
|
||||
<meta name="description" content="declaration: package: <unnamed>">
|
||||
<meta name="generator" content="javadoc/PackageWriterImpl">
|
||||
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
|
||||
@@ -31,9 +31,9 @@
|
||||
<div class="summary-table two-column-summary">
|
||||
<div class="table-header col-first">Klasse</div>
|
||||
<div class="table-header col-last">Beschreibung</div>
|
||||
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="StartWorld.html" title="Klasse in Unbenanntes Package">StartWorld</a></div>
|
||||
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="Score.html" title="Klasse in Unbenanntes Package">Score</a></div>
|
||||
<div class="col-last even-row-color class-summary class-summary-tab2">
|
||||
<div class="block">Write a description of class StartWorld here.</div>
|
||||
<div class="block">Write a description of class UI here.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
After Width: | Height: | Size: 8.1 KiB |
|
After Width: | Height: | Size: 9.2 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 139 B |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 8.8 KiB After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 981 B After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 707 B |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 750 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 272 KiB |
|
After Width: | Height: | Size: 124 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 971 B After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 610 B After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 776 B |
|
After Width: | Height: | Size: 1.4 KiB |