Höy, ich mal wieder.
Ich hab mich ein ein neues Spiel getraut und mache jetzt sowas in der Richtung von Binding of Isaac. Dabei werden auch Monster mit Tränen abgeschossen. Dabei hab ich die Schüsse so gemacht:
Das mit dem tasteUnten hab ich irgendwo so gefunden, ist damit nicht nur eine Taste funktioniert und die Tränen nicht direkt hintereinander kommen, aber ist in dem Fall unwichtig.
Wenn jetzt eine Träne mit einer z.B. Fliege kollidiert soll die Träne verschwinden (hab ich hier mit nem transparenten Bild gemacht, nicht mit removeObject), die Fliege verschwinden und auf die Variable flytreffer eins addiert werden (also flytreffer = flytreffer +1). Das hat auch funktioniert, doch ganz plötzlich funktioniert es nicht mehr. Die Fliegen verschwinden auch manchmal in Kontakt mit der Figur oder mit der Weltgrenze, was eig. nicht passieren dürfte. Mein Code für die Fliege wäre:
Code für die Tränen:
Und die Klasse Mover wurde so aus der Grenfoot-Datenbank übernommen, hab ich aus einem Video-Tut.
Wäre schön, wenn ihr einem Anfänger helfen könntet
Ich hab mich ein ein neues Spiel getraut und mache jetzt sowas in der Richtung von Binding of Isaac. Dabei werden auch Monster mit Tränen abgeschossen. Dabei hab ich die Schüsse so gemacht:
Java:
if(Greenfoot.isKeyDown("left") && !tasteUnten){
tear tear = new tear();
getWorld().addObject(tear, getX(), getY());
tear.setRotation(180);
tasteUnten =true;
}
if(!Greenfoot.isKeyDown("left") && tasteUnten){
tasteUnten = false;
}
if(Greenfoot.isKeyDown("right") && !tasteUnten2){
tear tear = new tear();
getWorld().addObject(tear, getX(), getY());
tear.setRotation(0);
tasteUnten2 =true;
}
if(!Greenfoot.isKeyDown("right") && tasteUnten2){
tasteUnten2 = false;
}
if(Greenfoot.isKeyDown("up") && !tasteUnten3){
tear tear = new tear();
getWorld().addObject(tear, getX(), getY());
tear.setRotation(270);
tasteUnten3 =true;
}
if(!Greenfoot.isKeyDown("up") && tasteUnten3){
tasteUnten3 = false;
}
if(Greenfoot.isKeyDown("down") && !tasteUnten4){
tear tear = new tear();
getWorld().addObject(tear, getX(), getY());
tear.setRotation(90);
tasteUnten4 =true;
}
if(!Greenfoot.isKeyDown("down") && tasteUnten4){
tasteUnten4 = false;
}
Wenn jetzt eine Träne mit einer z.B. Fliege kollidiert soll die Träne verschwinden (hab ich hier mit nem transparenten Bild gemacht, nicht mit removeObject), die Fliege verschwinden und auf die Variable flytreffer eins addiert werden (also flytreffer = flytreffer +1). Das hat auch funktioniert, doch ganz plötzlich funktioniert es nicht mehr. Die Fliegen verschwinden auch manchmal in Kontakt mit der Figur oder mit der Weltgrenze, was eig. nicht passieren dürfte. Mein Code für die Fliege wäre:
Java:
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class fly here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class fly extends Mover
{
/**
* Act - do whatever the fly wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
if (anWeltRand())
{
drehe(17);
}
bewege();
if (Greenfoot.getRandomNumber(100) > 90)
{
drehe(Greenfoot.getRandomNumber(90) - 45);
}
}
/**
* Drehe den übergebenen Wert in Grad nach rechts.
* Das p vor pGrad zeigt an, dass es ein Parameter (Übergabewert) ist.
*/
public void drehe(int pGrad)
{
setRotation(getRotation() + pGrad);
}
/**
* Bewegt Objekt in aktueller Richtung nach vorne.
*/
public void bewege()
{
double grad = Math.toRadians( getRotation() );
int x = (int) Math.round(getX() + Math.cos(grad) * 1);
int y = (int) Math.round(getY() + Math.sin(grad) * 1);
setLocation(x, y);
}
/**
* Teste, ob sich das Objekt in der Nähe des Randes der Welt befindet.
* Gebe true (wahr) zurück, falls dies der Fall ist, anderfalls false.
*/
public boolean anWeltRand()
{
if(getX() < 20 || getX() > getWorld().getWidth() - 20)
return true;
if(getY() < 105 || getY() > getWorld().getHeight() - 20)
return true;
else
return false;
}
}
Code für die Tränen:
Java:
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class tear here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class tear extends Mover
{
/**
* Act - do whatever the tear wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
fly fly = (fly) getOneIntersectingObject(fly.class);
if(fly != null) {
getWorld().removeObject(fly);
flytreffer = flytreffer +1;
}
if(getX() <= 89 || getX() >= 711 || getY() <=192 || getY() >= 500){
setImage("invisible.png");
}
else{
move(05.00);
}
}
}
Und die Klasse Mover wurde so aus der Grenfoot-Datenbank übernommen, hab ich aus einem Video-Tut.
Wäre schön, wenn ihr einem Anfänger helfen könntet