Hallo zusammen,
ein Freund und ich haben ein kleines Projekt gestartet indem wir uns an der Programmierung eines Stickman-Shooters versuchen.
Im Moment sind wir daran einen Counter der unsere für den Abschuss eines Gegners bekommende Punkte zählen soll. Haben uns dazu ein kleines Youtube-Tutorial angeguckt ( Link dazu: The Joy of Code #16: Adding a score counter - YouTube )das wir jedoch nicht ganz genau wie dort gezeigt übernehmen können, da unser Spieler den Gegner mit einer Patrone die auf ihn zufliegt tötet und nicht einfach durch die Berührung des Gegners.
Wir entschuldigen uns im voraus für die Fülle an Quelltext sowie die höchstwarscheinlich unprofessionelle Darstellung des Problems. Und bedanken uns bei denen die sich trotzdem die Mühe machen dies zu lesen und uns evtl. zu helfen.
Unser Übertragungsansatz sieht wie folgt aus:
Der Counter [JAVA=42] import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.awt.Color;
/**
* A simple counter with graphical representation as an actor on screen.
*
* @author mik
* @version 1.0
*/
public class Counter extends Actor
{
private static final Color transparent = new Color(0,0,0,0);
private GreenfootImage background;
private int value;
private int target;
/**
* Create a new counter, initialised to 0.
*/
public Counter()
{
background = getImage(); // get image from class
value = 0;
target = 0;
updateImage();
}
/**
* Animate the display to count up (or down) to the current target value.
*/
public void act()
{
if (value < target) {
value++;
updateImage();
}
else if (value > target) {
value--;
updateImage();
}
}
/**
* Add a new score to the current counter value.
*/
public void add(int score)
{
target += score;
}
/**
* Return the current counter value.
*/
public int getValue()
{
return value;
}
/**
* Set a new counter value.
*/
public void setValue(int newValue)
{
target = newValue;
value = newValue;
updateImage();
}
/**
* Update the image on screen to show the current value.
*/
private void updateImage()
{
GreenfootImage image = new GreenfootImage(background);
GreenfootImage text = new GreenfootImage("" + value, 22, Color.BLACK, transparent);
image.drawImage(text, (image.getWidth()-text.getWidth())/2,
(image.getHeight()-text.getHeight())/2);
setImage(image);
}
}
[/Java]
diesen konnten wir komplett übernehmen.
Damit wir Punkte für das töten eines Gegners mit einer Patrone bekommen müssen wir die Patrone und den Counter in Verbindung setzen. Was wir wie folgt getan haben:
Editor unserer Welt:
[JAVA=42] import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Stickman here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Stickman extends World
{
/**
* Constructor for objects of class Stickman.
*
*/
public Stickman(){
super(720, 450, 1);
prepare();
}
public void prepare(){
Counter counter = new Counter();
addObject(counter, 360, 50);
EigenerSpieler eigenerspieler = new EigenerSpieler();
addObject(eigenerspieler, 50, 415);
Patrone patrone = new Patrone (counter);
addObject(patrone, 55, 420);
}
}
[/code]
Die Klasse Patrone sieht so aus :
[JAVA=42]import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Patrone here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Patrone extends Actor
{
private Counter counter;
public Patrone(Counter pointCounter)
{
counter = pointCounter;
}
public void act()
{
if(getX() + 5 > getWorld().getWidth())
{
getWorld().removeObject(this);
}
else
{
setLocation(getX() + 4, getY());
if(getOneIntersectingObject(KleinerGegner.class) != null)
getWorld().removeObject(getOneIntersectingObject(KleinerGegner.class));
counter.add(10);
}
}
}
[/code]
Mit dem Code:
[JAVA=42]public void schiessen(){
if(Greenfoot.isKeyDown("space")){
getWorld().addObject(new Patrone(), getX()+50, getY()+25);
GreenfootImage blub = new GreenfootImage("H:/Eigene Dateien/Informatik/Java-Spiel/EigenerGamer1Schuss.png");
setImage(blub);
}
}
[/code]
kann man eine Patrone abfeuern.
Leider kommt beim Compilen folgender Fehler:
constructor Patrone in class Patrone cannot be applied to given types;
required Counter found: no arguments reason: actual and formal argument lists differ in length
Leider konnten wir uns selber aufgrund unserer erst kürzlich gestarteten Greenfot-Karriere keinen Reim auf das Problem machen noch konnten wir in google oder youtube eine Lösung für unser Problem finden :/
Danke für jede Hilfe
ein Freund und ich haben ein kleines Projekt gestartet indem wir uns an der Programmierung eines Stickman-Shooters versuchen.
Im Moment sind wir daran einen Counter der unsere für den Abschuss eines Gegners bekommende Punkte zählen soll. Haben uns dazu ein kleines Youtube-Tutorial angeguckt ( Link dazu: The Joy of Code #16: Adding a score counter - YouTube )das wir jedoch nicht ganz genau wie dort gezeigt übernehmen können, da unser Spieler den Gegner mit einer Patrone die auf ihn zufliegt tötet und nicht einfach durch die Berührung des Gegners.
Wir entschuldigen uns im voraus für die Fülle an Quelltext sowie die höchstwarscheinlich unprofessionelle Darstellung des Problems. Und bedanken uns bei denen die sich trotzdem die Mühe machen dies zu lesen und uns evtl. zu helfen.
Unser Übertragungsansatz sieht wie folgt aus:
Der Counter [JAVA=42] import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.awt.Color;
/**
* A simple counter with graphical representation as an actor on screen.
*
* @author mik
* @version 1.0
*/
public class Counter extends Actor
{
private static final Color transparent = new Color(0,0,0,0);
private GreenfootImage background;
private int value;
private int target;
/**
* Create a new counter, initialised to 0.
*/
public Counter()
{
background = getImage(); // get image from class
value = 0;
target = 0;
updateImage();
}
/**
* Animate the display to count up (or down) to the current target value.
*/
public void act()
{
if (value < target) {
value++;
updateImage();
}
else if (value > target) {
value--;
updateImage();
}
}
/**
* Add a new score to the current counter value.
*/
public void add(int score)
{
target += score;
}
/**
* Return the current counter value.
*/
public int getValue()
{
return value;
}
/**
* Set a new counter value.
*/
public void setValue(int newValue)
{
target = newValue;
value = newValue;
updateImage();
}
/**
* Update the image on screen to show the current value.
*/
private void updateImage()
{
GreenfootImage image = new GreenfootImage(background);
GreenfootImage text = new GreenfootImage("" + value, 22, Color.BLACK, transparent);
image.drawImage(text, (image.getWidth()-text.getWidth())/2,
(image.getHeight()-text.getHeight())/2);
setImage(image);
}
}
[/Java]
diesen konnten wir komplett übernehmen.
Damit wir Punkte für das töten eines Gegners mit einer Patrone bekommen müssen wir die Patrone und den Counter in Verbindung setzen. Was wir wie folgt getan haben:
Editor unserer Welt:
[JAVA=42] import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Stickman here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Stickman extends World
{
/**
* Constructor for objects of class Stickman.
*
*/
public Stickman(){
super(720, 450, 1);
prepare();
}
public void prepare(){
Counter counter = new Counter();
addObject(counter, 360, 50);
EigenerSpieler eigenerspieler = new EigenerSpieler();
addObject(eigenerspieler, 50, 415);
Patrone patrone = new Patrone (counter);
addObject(patrone, 55, 420);
}
}
[/code]
Die Klasse Patrone sieht so aus :
[JAVA=42]import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Patrone here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Patrone extends Actor
{
private Counter counter;
public Patrone(Counter pointCounter)
{
counter = pointCounter;
}
public void act()
{
if(getX() + 5 > getWorld().getWidth())
{
getWorld().removeObject(this);
}
else
{
setLocation(getX() + 4, getY());
if(getOneIntersectingObject(KleinerGegner.class) != null)
getWorld().removeObject(getOneIntersectingObject(KleinerGegner.class));
counter.add(10);
}
}
}
[/code]
Mit dem Code:
[JAVA=42]public void schiessen(){
if(Greenfoot.isKeyDown("space")){
getWorld().addObject(new Patrone(), getX()+50, getY()+25);
GreenfootImage blub = new GreenfootImage("H:/Eigene Dateien/Informatik/Java-Spiel/EigenerGamer1Schuss.png");
setImage(blub);
}
}
[/code]
kann man eine Patrone abfeuern.
Leider kommt beim Compilen folgender Fehler:
constructor Patrone in class Patrone cannot be applied to given types;
required Counter found: no arguments reason: actual and formal argument lists differ in length
Leider konnten wir uns selber aufgrund unserer erst kürzlich gestarteten Greenfot-Karriere keinen Reim auf das Problem machen noch konnten wir in google oder youtube eine Lösung für unser Problem finden :/
Danke für jede Hilfe