public Welt() { // Create a new world with 600x400 cells with a cell size of 1x1 pixels. super(600, 400, 1); herzen[0] = new Herz(0); herzen[1] = new Herz(0); herzen[2] = new Herz(0); herzenS[0] = 0; herzenS[1] = 0; herzenS[2] = 0; todZahl = 0; loadLevel(4, new Figur(this)); } public void loadLevel(int l, Figur fi){ int y = 25; int fX = 300; int fY = 300; if(!getObjects(Figur.class).isEmpty()){ fX = fi.getX(); fY = fi.getY(); } switch(l){ case 0:{ level +=3; fY = 6; }break; case 1:{ level +=1; fX = 6; }break; case 2:{ level -=3; fY = 394; }break; case 3:{ level -=1; fX = 594; }break; default:{ level = 4; fX = 300; fY = 300; }break; } removeObjects(getObjects(null)); for(int i = 0; i < lvl[0].length; i++){ if(i%12 == 0 && i!=0){ y+=50; Greenfoot.delay(1); } switch(lvl[level][i]){ case 0:{ addObject(new Boden(1),((i%12)*50)+25,y); }break; case 1:{ addObject(new Mauer(1),((i%12)*50)+25,y); }break; case 2:{ addObject(new Mauer(2),((i%12)*50)+25,y); }break; case 3:{ addObject(new Mauer(3),((i%12)*50)+25,y); }break; case 4:{ addObject(new Boden(2),((i%12)*50)+25,y); }break; default: break; } } switch(level){ case 0:{ if(gegner[level]){ while(getObjects(Spawn.class).size() < 2){ int gX = (int)(Math.random()*500+50); int gY = (int)(Math.random()*300+50); if(getObjectsAt(gX, gY, Mauer.class).isEmpty()){ addObject(new Spawn(), gX, gY); } } } }break; case 1:{ if(gegner[level]){ while(getObjects(Spawn.class).size() < 2){ int gX = (int)(Math.random()*500+50); int gY = (int)(Math.random()*300+50); if(getObjectsAt(gX, gY, Mauer.class).isEmpty()){ addObject(new Spawn(), gX, gY); } } } }break; case 2:{ if(gegner[level]){ while(getObjects(Spawn.class).size() < 2){ int gX = (int)(Math.random()*500+50); int gY = (int)(Math.random()*300+50); if(getObjectsAt(gX, gY, Mauer.class).isEmpty()){ addObject(new Spawn(), gX, gY); } } } }break; case 3:{ if(gegner[level]){ while(getObjects(Spawn.class).size() < 2){ int gX = (int)(Math.random()*500+50); int gY = (int)(Math.random()*300+50); if(getObjectsAt(gX, gY, Mauer.class).isEmpty()){ addObject(new Spawn(), gX, gY); } } } }break; case 4:{ addObject(new Schild("Seid wilkommen, ihr seid sicher gekommen, um die Prinzessin zu retten!!! Hierf\u00FCr musst du nur alle Teile des misteri\u00F6sen ... finden (:"), 400, 300); if(gegner[level]){ } }break; case 5:{ if(gegner[level]){ while(getObjects(Spawn.class).size() < 2){ int gX = (int)(Math.random()*500+50); int gY = (int)(Math.random()*300+50); if(getObjectsAt(gX, gY, Mauer.class).isEmpty()){ addObject(new Spawn(), gX, gY); } } } }break; case 6:{ if(gegner[level]){ while(getObjects(Spawn.class).size() < 2){ int gX = (int)(Math.random()*500+50); int gY = (int)(Math.random()*300+50); if(getObjectsAt(gX, gY, Mauer.class).isEmpty()){ addObject(new Spawn(), gX, gY); } } } }break; case 7:{ if(gegner[level]){ while(getObjects(Spawn.class).size() < 1){ int gX = (int)(Math.random()*500+50); int gY = (int)(Math.random()*300+50); if(getObjectsAt(gX, gY, Mauer.class).isEmpty()){ addObject(new Spawn(), gX, gY); } } } }break; case 8:{ if(gegner[level]){ } }break; } addObject(fi, fX, fY); for(int i = 0; i < herzen.length;i++){ if(herzen[i] != null){ addObject(herzen[i], 25+i*50, 25); } } /* addObject(new Herz(0), 25,25); addObject(new Herz(0), 75,25); addObject(new Herz(0), 125,25); */ }
public Mauer(int a){ switch(a){ case 1:{ setImage("Baeume.png"); //setImage("Sand.png"); }break; case 2:{ setImage("Blaetter.png"); //setImage("Sand.png"); }break; case 3:{ setImage("Mauer.png"); //setImage("Sand.png"); }break; case 4:{ //setImage("Blätter.png"); //setImage("Sand.png"); }break; case 5:{ //setImage("Blätter.png"); //setImage("Sand.png"); }break; default: break; } }
public Figur(Welt w){ welt = w; d = 4; lastS = 0; lastL = 0; leben = 2; img = 1; schild = false; setImage("Figur01.png"); }
public Herz(int m){ imgC(m); } public void imgC(int i){ switch(i){ case 0:{ setImage("Herz0.png"); } break; case 1:{ setImage("Herz1.png"); } break; case 2:{ setImage("Herz2.png"); } break; default: break; } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Welt here. * * @author (your name) * @version (a version number or a date) */ public class Welt extends World { private int lvl[][] = {{2,1,1,1,1,1,1,2,1,1,1,2, 2,0,0,0,0,0,0,2,0,0,0,2, 2,0,0,1,0,1,0,2,0,0,0,1, 2,0,0,0,0,0,0,2,0,0,0,0, 2,0,0,0,2,1,1,1,0,0,0,0, 2,0,0,0,1,0,0,0,0,0,0,2, 2,0,0,0,0,0,0,0,0,0,0,2, 1,1,1,1,1,0,0,1,1,1,1,1}, {2,2,1,1,1,1,1,1,1,1,2,2, 2,1,0,0,0,0,0,0,0,0,1,2, 1,0,0,0,0,0,0,0,0,0,0,1, 0,0,0,2,0,0,0,0,2,0,0,0, 0,0,0,1,0,0,0,0,1,0,0,0, 2,0,0,0,0,0,0,0,0,0,0,2, 2,2,0,0,0,0,0,0,0,0,2,2, 1,1,1,1,1,1,0,0,0,1,1,1}, {2,2,1,1,1,1,1,1,1,1,2,2, 2,1,0,0,0,0,0,0,0,0,1,2, 2,0,0,0,0,0,0,0,0,0,0,2, 0,0,0,0,0,0,0,0,0,0,0,2, 0,0,0,0,0,2,1,1,1,1,1,2, 2,0,0,0,0,2,0,0,0,0,0,2, 2,2,0,0,0,2,0,0,0,0,0,2, 1,1,1,1,1,1,1,1,0,0,0,1}, {2,2,1,1,1,0,0,1,1,1,2,2, 2,1,0,0,0,0,0,0,0,0,1,2, 2,0,0,2,0,2,2,0,2,0,0,2, 2,0,0,1,0,2,2,0,1,0,0,2, 2,0,0,0,0,1,1,0,0,0,0,2, 2,0,0,1,0,0,0,0,1,0,0,2, 2,2,0,0,0,0,0,0,0,0,2,2, 1,1,0,0,0,1,1,1,1,1,1,1}, {2,2,2,2,2,2,0,0,0,1,1,2, 2,2,2,2,2,2,0,0,0,0,0,2, 2,2,2,2,2,2,0,0,0,0,0,1, 2,1,1,1,1,1,1,1,2,0,0,0, 2,0,0,0,0,0,0,0,1,0,0,0, 2,0,0,0,0,0,0,0,0,0,0,2, 2,0,0,0,0,0,0,0,0,0,0,2, 1,1,1,1,1,1,1,1,1,1,1,1}, {2,1,1,1,1,1,1,0,0,0,0,2, 2,0,0,0,0,0,0,0,0,0,0,2, 1,0,1,0,0,0,0,0,0,0,0,2, 0,0,0,0,2,0,0,2,0,0,2,2, 0,0,0,0,1,0,0,1,0,0,1,2, 2,0,1,0,0,0,0,0,0,0,0,2, 2,0,0,0,0,0,0,0,0,0,0,2, 1,1,1,1,1,1,1,1,1,0,0,1}, {2,2,0,0,0,1,1,1,2,1,1,2, 2,1,0,0,0,0,0,0,2,0,0,2, 2,0,0,0,0,0,0,0,2,0,0,1, 2,0,0,1,1,1,1,1,2,0,0,0, 2,0,0,0,0,0,0,1,1,0,0,0, 2,1,1,1,1,0,0,0,0,0,0,2, 2,0,0,0,0,0,0,0,0,0,0,2, 1,1,1,1,1,1,1,1,1,1,1,1}, {2,1,1,1,1,1,1,1,1,1,1,2, 2,0,0,0,0,0,0,0,0,0,0,2, 2,0,0,0,0,0,0,0,3,3,0,2, 1,0,0,0,0,0,0,0,4,3,0,2, 0,0,0,0,0,0,0,0,4,3,0,2, 0,0,0,0,0,0,0,0,3,3,0,2, 0,0,0,0,0,0,0,0,0,0,0,2, 1,1,1,1,1,1,1,1,1,1,1,1}, {2,2,1,1,1,1,1,1,1,0,0,2, 2,1,0,0,0,0,0,0,0,0,0,2, 2,0,0,0,0,0,0,0,0,0,0,2, 2,0,0,0,0,0,0,0,0,0,0,2, 2,0,0,0,0,0,0,0,0,0,0,2, 2,0,0,0,0,0,0,0,0,0,0,2, 2,0,0,0,0,0,0,0,0,0,0,2, 1,1,1,1,1,1,1,1,1,1,1,1}}; private boolean gegner[] = {true, true, true, true, true, true, true, true, true}; private int level; private int todZahl; private Herz herzen[] = new Herz[6]; private int herzenS[] = new int[6]; public Welt() { // Create a new world with 600x400 cells with a cell size of 1x1 pixels. super(600, 400, 1); herzen[0] = new Herz(0); herzen[1] = new Herz(0); herzen[2] = new Herz(0); herzenS[0] = 0; herzenS[1] = 0; herzenS[2] = 0; todZahl = 0; loadLevel(4, new Figur(this)); } public void act(){ if(Greenfoot.isKeyDown("enter")){ Greenfoot.setWorld(new Menu(this)); } if(getObjects(Spawn.class).isEmpty()){ gegner[level] = false; } } public void endScreen(){ //play Sound tod; Greenfoot.setWorld(new NeuMenu(this, todZahl)); } public void loadLevel(int l, Figur fi){ int y = 25; int fX = 300; int fY = 300; if(!getObjects(Figur.class).isEmpty()){ fX = fi.getX(); fY = fi.getY(); } switch(l){ case 0:{ level +=3; fY = 6; }break; case 1:{ level +=1; fX = 6; }break; case 2:{ level -=3; fY = 394; }break; case 3:{ level -=1; fX = 594; }break; default:{ level = 4; fX = 300; fY = 300; }break; } removeObjects(getObjects(null)); for(int i = 0; i < lvl[0].length; i++){ if(i%12 == 0 && i!=0){ y+=50; Greenfoot.delay(1); } switch(lvl[level][i]){ case 0:{ addObject(new Boden(1),((i%12)*50)+25,y); }break; case 1:{ addObject(new Mauer(1),((i%12)*50)+25,y); }break; case 2:{ addObject(new Mauer(2),((i%12)*50)+25,y); }break; case 3:{ addObject(new Mauer(3),((i%12)*50)+25,y); }break; case 4:{ addObject(new Boden(2),((i%12)*50)+25,y); }break; default: break; } } switch(level){ case 0:{ if(gegner[level]){ while(getObjects(Spawn.class).size() < 2){ int gX = (int)(Math.random()*500+50); int gY = (int)(Math.random()*300+50); if(getObjectsAt(gX, gY, Mauer.class).isEmpty()){ addObject(new Spawn(), gX, gY); } } } }break; case 1:{ if(gegner[level]){ while(getObjects(Spawn.class).size() < 2){ int gX = (int)(Math.random()*500+50); int gY = (int)(Math.random()*300+50); if(getObjectsAt(gX, gY, Mauer.class).isEmpty()){ addObject(new Spawn(), gX, gY); } } } }break; case 2:{ if(gegner[level]){ while(getObjects(Spawn.class).size() < 2){ int gX = (int)(Math.random()*500+50); int gY = (int)(Math.random()*300+50); if(getObjectsAt(gX, gY, Mauer.class).isEmpty()){ addObject(new Spawn(), gX, gY); } } } }break; case 3:{ if(gegner[level]){ while(getObjects(Spawn.class).size() < 2){ int gX = (int)(Math.random()*500+50); int gY = (int)(Math.random()*300+50); if(getObjectsAt(gX, gY, Mauer.class).isEmpty()){ addObject(new Spawn(), gX, gY); } } } }break; case 4:{ addObject(new Schild("Seid wilkommen, ihr seid sicher gekommen, um die Prinzessin zu retten!!! Hierf\u00FCr musst du nur alle Teile des misteri\u00F6sen ... finden (:"), 400, 300); if(gegner[level]){ } }break; case 5:{ if(gegner[level]){ while(getObjects(Spawn.class).size() < 2){ int gX = (int)(Math.random()*500+50); int gY = (int)(Math.random()*300+50); if(getObjectsAt(gX, gY, Mauer.class).isEmpty()){ addObject(new Spawn(), gX, gY); } } } }break; case 6:{ if(gegner[level]){ while(getObjects(Spawn.class).size() < 2){ int gX = (int)(Math.random()*500+50); int gY = (int)(Math.random()*300+50); if(getObjectsAt(gX, gY, Mauer.class).isEmpty()){ addObject(new Spawn(), gX, gY); } } } }break; case 7:{ if(gegner[level]){ while(getObjects(Spawn.class).size() < 1){ int gX = (int)(Math.random()*500+50); int gY = (int)(Math.random()*300+50); if(getObjectsAt(gX, gY, Mauer.class).isEmpty()){ addObject(new Spawn(), gX, gY); } } } }break; case 8:{ if(gegner[level]){ } }break; } addObject(fi, fX, fY); for(int i = 0; i < herzen.length;i++){ if(herzen[i] != null){ addObject(herzen[i], 25+i*50, 25); } } /* addObject(new Herz(0), 25,25); addObject(new Herz(0), 75,25); addObject(new Herz(0), 125,25); */ } public void addNewHerz(){ int i = 0; while(herzen[i] != null && i <= herzen.length){ // evtl length -1 i++; } if(i <= herzen.length){ herzen[i] = new Herz(0); herzenS[i] = 0; addObject(herzen[i], 25+i*50, 25); } } public void lebenCheck(int l){ if(l < herzen.length){ for(int i = 5; i> l; i--){ if(herzen[i] != null){ herzen[i].imgC(2); } } } for(int i = 0; i < l; i++){ herzen[i].imgC(0); } } public int maxLeben(){ int temp = 0; for(int i = 0; i < herzen.length; i++){ if(herzen[i] != null){ temp++; } } return temp-1; } public void neuStart(){ Figur f =(Figur) getObjects(Figur.class).get(0); loadLevel(5, f); f.setLeben(2); for(int i = 0; i<gegner.length;i++){ gegner[i] = true; } herzen[0].imgC(0); herzen[1].imgC(0); herzen[2].imgC(0); } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class TextZelle here. * * @author (your name) * @version (a version number or a date) */ public class TextZelle extends Actor { private boolean on; public TextZelle(){ on = false; } public void act() { } public void textZ(String t){ if(!getNeighbours(20, false, Figur.class).isEmpty() && on == false) { on = true; getWorld().addObject(new Text(t), 300, 350); } else if(getNeighbours(20, false, Figur.class).isEmpty()){ getWorld().removeObjects(getWorld().getObjects(Text.class)); on = false; } } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Schild here. * * @author (your name) * @version (a version number or a date) */ public class Schild extends TextZelle { String text; public Schild(String t){ text = t; } public void act() { textZ(text); } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Figur here. * * @author (your name) * @version (a version number or a date) */ public class Figur extends Actor { private Welt welt; private int d; private long lastS, lastL, lastSch; private int leben; private short img; private boolean schild; public Figur(Welt w){ welt = w; d = 4; lastS = 0; lastL = 0; leben = 2; img = 1; schild = false; setImage("Figur01.png"); } public void act() { bewegen(); level(); lebenCheck(); if(System.currentTimeMillis() - lastL >= 1000 && schild){ schild = false; } if(schild){ setImage("Figur00.png"); } else { setImage("Figur01.png"); } /* if(!schild && img != 0){ setImage("Spieler0.png"); } while(schild){ if(System.currentTimeMillis() - lastSch >= 200){ if(img == 0){ setImage("Spieler1.png"); } else { setImage("Spieler0.png"); } } } */ } public void bewegen() { if(Greenfoot.isKeyDown("up") && noCollision(0,-5)) { setLocation(getX(),getY()-2); //d = 0; } if(Greenfoot.isKeyDown("down") && noCollision(0,23)) { setLocation(getX(),getY()+2); //d = 2; } if(Greenfoot.isKeyDown("left") && noCollision(-24,0)) { setLocation(getX()-2,getY()); //d = 3; } if(Greenfoot.isKeyDown("right") && noCollision(23,0)) { setLocation(getX()+2,getY()); //d = 1; } if(Greenfoot.isKeyDown("space") && System.currentTimeMillis() - lastS >= 500) { lastS = System.currentTimeMillis(); //welt.addObject(new Bumerang(), getX(), getY()); int gX = (int)(Math.random()*500+50); int gY = (int)(Math.random()*300+50); if(welt.getObjectsAt(gX, gY, Mauer.class).isEmpty()){ welt.addObject(new Gegner01(), gX, gY); } //d = 1; } /* if(Greenfoot.isKeyDown("space") && System.currentTimeMillis() - lastS >= 500) { lastS = System.currentTimeMillis(); welt.addObject(new Schwert(d), getX(), getY()); } switch(d) { case 0:{ setLocation(getX() , getY()- 2); } break; case 1:{ setLocation(getX()+ 2, getY() ); } break; case 2:{ setLocation(getX() , getY()+ 2); } break; case 3:{ setLocation(getX()- 2, getY() ); } break; default: break; } d = 4; */ if(Greenfoot.isKeyDown("w") && System.currentTimeMillis() - lastS >= 500){ lastS = System.currentTimeMillis(); welt.addObject(new Schwert(0), getX(), getY()); } if(Greenfoot.isKeyDown("d") && System.currentTimeMillis() - lastS >= 500){ lastS = System.currentTimeMillis(); welt.addObject(new Schwert(1), getX(), getY()); } if(Greenfoot.isKeyDown("s") && System.currentTimeMillis() - lastS >= 500){ lastS = System.currentTimeMillis(); welt.addObject(new Schwert(2), getX(), getY()); } if(Greenfoot.isKeyDown("a") && System.currentTimeMillis() - lastS >= 500){ lastS = System.currentTimeMillis(); welt.addObject(new Schwert(3), getX(), getY()); } } public void level(){ if(getX() >= 595){ welt.loadLevel(1, this); } else if(getX() <= 5){ welt.loadLevel(3, this); } else if(getY() >= 395){ welt.loadLevel(0, this); } else if(getY() <= 5){ welt.loadLevel(2, this); } } public boolean noCollision(int dx, int dy){ if(getOneObjectAtOffset(dx, dy, Mauer.class) != null) { return false; } else { return true; } } public void lebenCheck(){ if(getOneIntersectingObject(Gegner.class) != null && System.currentTimeMillis() - lastL >= 1000){ schild = true; lastL = System.currentTimeMillis(); leben --; welt.lebenCheck(leben); } if(getOneIntersectingObject(HerzItem.class) != null){ if(leben < welt.maxLeben()){ leben++; } welt.lebenCheck(leben+1); welt.removeObject(getOneIntersectingObject(HerzItem.class)); } if(leben < 0){ welt.endScreen(); } } public void setLeben(int l){ leben = l; //welt.lebenCheck(leben); } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Baum here. * * @author (your name) * @version (a version number or a date) */ public class Mauer extends Actor { /** * Act - do whatever the Baum wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public Mauer(int a){ switch(a){ case 1:{ setImage("Baeume.png"); //setImage("Sand.png"); }break; case 2:{ setImage("Blaetter.png"); //setImage("Sand.png"); }break; case 3:{ setImage("Mauer.png"); //setImage("Sand.png"); }break; case 4:{ //setImage("Blätter.png"); //setImage("Sand.png"); }break; case 5:{ //setImage("Blätter.png"); //setImage("Sand.png"); }break; default: break; } } } import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Boden here. * * @author (your name) * @version (a version number or a date) */ public class Boden extends Actor { public Boden(int a){ switch(a){ case 1:{ setImage("Gras.png"); }break; case 2:{ setImage("Treppe.png"); }break; } } public void act() { // Add your action code here. } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Herz here. * * @author (your name) * @version (a version number or a date) */ public class Herz extends Actor { public Herz(int m){ imgC(m); } public void act() { // Add your action code here. } public void imgC(int i){ switch(i){ case 0:{ setImage("Herz0.png"); } break; case 1:{ setImage("Herz1.png"); } break; case 2:{ setImage("Herz2.png"); } break; default: break; } } }