I am having trouble drawing text and graphics in my game.
Basically, I am wanting to display a score in the top left corner and a filed rectangle to be a health bar.
How should I go about this?
thanks
[code]public class HealthBar extends Actor { public HealthBar() { setImage("health.jpg"); // Draw a red image. Size doesn't matter. Name it health.jpg and put it into the image ordner } public void showHealth(int health) // health from 0 - 50 { getImage().scale(health, 30); } }
[code]public class TextField extends Actor { public GreenfootImage label = new GreenfootImage(100,100); public Label() { setImage(label); } public void setText(String text) { label.drawString( text,0,20); } }
public void setText(String text) { label.clear(); label.drawString( text,0,20); }
import greenfoot.*; import java.awt.Color; import java.awt.color.*; public class HealthBar extends Actor { private final int maxValue = 200; // whatever max value you desire private int barValue = 200; private int lastValue = 0; public HealthBar() { } public void act() { if (barValue != lastValue) { lastValue = barValue; int pctHealth = (int) (200 * barValue / maxValue); // 200 is maxPixelHealth // Create thermometer -- sorta speak GreenfootImage imgOne = new GreenfootImage(206,12); imgOne.setColor(Color.CYAN); imgOne.fill(); imgOne.setColor(Color.BLUE); imgOne.drawRect(2,2,202,8); // Add mercury, if there is any temperature -- sorta speak if (pctHealth != 0) { GreenfootImage imgTwo = new GreenfootImage(pctHealth,6); imgTwo.setColor(Color.RED); imgTwo.fill(); // Completes the second image imgOne.drawImage(imgTwo,3,3); // Puts mercury into the thermometer } // imgOne.scale(myX, myY); // Dimensions myX and myY are whatever size you wish to make it imgOne.setTransparency(128); // Adjust value as wanted or delete statement for no transparency setImage(imgOne); } } public void chgHealth(int chgValue) { barValue += chgValue; if (barValue > maxValue) barValue = maxValue; if (barValue < 0) barValue = 0; } public int getHealth() { return barValue; } }
public class HUD extends Actor { private GreenfootImage label = new GreenfootImage(200,200); public void setText(String text) { setImage(label); label.clear(); label.drawString(text,0,20); setImage(label); } }
public class HUD extends Actor { private GreenfootImage imageScore = new GreenfootImage(120, 24); public HUD() { setImage(imageScore); Font font = imageScore.getFont(); imageScore.setFont(font.deriveFont(24.0F)); // use larger font } public void act() { CarWorld w = (CarWorld) getWorld(); Car aCar = w.getCar(); imageScore.clear(); imageScore.drawString("Score: " + aCar.getScore(), 1, 18); } }
int exp = 100; int nextlvlat = 150; ... ... ... ... public void act() { int value1 = (int) nextlvlat/exp; GreenfootImage img1 = new GreenfootImage(206,6); img1.setColor(Color.RED); img1.fill(); if(value1 > 0) { GreenfootImage img2 = new GreenfootImage(value1,6); img2.setColor(Color.green); img2.fill(); img1.drawImage(img2,0,0); } setImage(img1); }