This site requires JavaScript, please enable it in your browser!
Greenfoot back
Bo8ker
Bo8ker wrote ...

2017/6/26

derivefont problem

Bo8ker Bo8ker

2017/6/26

#
finde den Fehler nicht. Könnt ihr mir helfen: import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import greenfoot.Font; import greenfoot.Color; /** * Write a description of class Energieanzeige here. * * @author (your name) * @version (a version number or a date) */ public class Lebensanzeige extends Actor { GreenfootImage bild; Spieler1 s1; /** * Act - do whatever the Energieanzeige wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() { aktualisiere(20); } public Lebensanzeige(Spieler1 s1){ s1= s1; bild= new GreenfootImage(300, 100); bild.clear(); bild.setColor(Color.WHITE); setImage(bild); aktualisiere(20); } public void aktualisiere(int pSchriftg){ GreenfootImage bild=getImage(); Font font =bild.getFont(); bild.clear(); font=font.deriveFont(1,pSchriftg); bild.setFont(font); bild.drawString("Leben: " ,0,20); setImage(bild); } } bei Font.font.deriveFont wird immer fehler angezeigt. method deriveFont in class greenfoot.Font cannot be applied to given types; required:float found int,int reason: actual and formal Arguments differ in length. Vielen dank für eure hilfe
Super_Hippo Super_Hippo

2017/6/26

#
Wenn du 'greenfoot.*' importierst, sind Font und Color mit drin auch wenn es im Kommentar dahinter nicht steht. Brauchst es also nicht extra importieren. Du hast da "1, pSchrifg" stehen, also zwei Argumente, die ganze Zahlen sind. Eine float bekommt man, wenn man ein f hinter die Zahl schreibt, also beispielsweise '20f'. Im Constructor der Font Klasse ist es als 'int' erforderlich, in dieser deriveFont Methode hingegen nicht. Du könntest z. B. auch machen: (denke ich)
1
2
3
Font font =bild.getFont();
Font fontNeu = new Font(font.getName(), font.isBold(), font.isItalic(), pSchriftg);
bild.setFont(fontNeu);
Oder du änderst eben das 'int' im Methoden-Parameter in 'float' und die 20 in 20f.
Bo8ker Bo8ker

2017/6/26

#
Danke hab den Code geänder aber wenn ich den so habe: import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import greenfoot.Font; import greenfoot.Color; /** * Write a description of class Energieanzeige here. * * @author (your name) * @version (a version number or a date) */ public class Lebensanzeige extends Actor { GreenfootImage bild; Spieler1 s1; int lebenübrig=s1.leben; /** * Act - do whatever the Energieanzeige wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() { aktualisiere(20); } public Lebensanzeige(Spieler1 s1){ s1= s1; bild= new GreenfootImage(150, 50); bild.clear(); bild.setColor(Color.WHITE); setImage(bild); aktualisiere(20); } public void aktualisiere(int pSchriftg){ GreenfootImage bild=getImage(); Font font =bild.getFont(); bild.clear(); font=font.deriveFont(20f); bild.setFont(font); bild.drawString("Leben: "+lebenübrig,0,15); setImage(bild); } } will ich ausgeben wie viele Leben er noch hat. Konsole sagt fehler java.lang.NullPointerException at Lebensanzeige.<init>(Lebensanzeige.java:15) at Space.<init>(Space.java:24) danke für die antwort
danpost danpost

2017/6/26

#
Change:
1
int lebenübrig=s1.leben;
to
1
int lebenübrig;
and put
1
lebenübrig=s1.leben;
in the constructor block that starts with 'public Lebensanzeige(Spieler1 s1){'.
You need to login to post a reply.