# BlueJ Pacman



## r1d1 (21. Dez 2010)

Morgen,
wir haben in der Schule mit BlueJ angefangen, das Thema interessiert mich sehr, doch ich kenne mich noch nicht so aus (BlueJ basiert auf Java).
Ich habe 2 Klassen erstellt, einen PACMAN(), und eine KREISFORM().
Die KREISFORM() habe ich aus dem Internet runtergeladen und importiert, also an der kann es nicht liegen.
Doch im Quellcode von PACMAN() zeigt es mir folgende Fehlermeldung an: 
(Habe übrigens nach dieser Anleitung gearbeitet: http://www.kruemelundmonster.de/unterrichtskonzept/Kap03.pdf


public class PACMAN
{
     //Attribute
     int positionX;
     int positionY;
     boolean verwundbar;
     char blickrichtung;

     //Referenzattribute
     new KEISFORM()          <--------- An dieser Stelle kommt die Fehlermeldung: "illegal start of type"
     symbol = new KREISFORM();
     symbol.RadiusSetzen(50);
     symbol.StartWinkelSetzen(120);
     symbol.BogenWinkelSetzen(300);
     symbol.BogenArtSetzen(2);
     symbol.FarbeSetzen("gelb");

     //Konstruktor für Objekte der Klasse PACMAN
     PACMAN()
     {
         //Die Position kann mangels Labyrinth noch nicht festgelegt werden
         verwundbar = true;
         blickrichtung = 'N';
         positionX = 0;
         positionY = 0;
        }
     //Methoden
        //...
    }


----------



## bone2 (21. Dez 2010)

ein new zuviel am anfang

sichtbarkeit objekttyp variablenname = new objekttyp()


----------



## hansmueller (21. Dez 2010)

Hallo,

mit "new KEISFORM() " erzeugst du zwar ein neues Objekt der Klasse KEISFORM, aber du weißt es keiner Variablen zu. Lösche einfach diese Zeile, denn in der Nächsten ist es richtig.

MfG
hansmueller


----------



## bone2 (21. Dez 2010)

symbol hat dann aber keinen typ.


----------



## Sonecc (21. Dez 2010)

Schwer zu erkennen, da auch dieser User den ROTEN Text übersehen oder großzügig ignoriert hat...


```
public class PACMAN
{
//Attribute
int positionX;
int positionY;
boolean verwundbar;
char blickrichtung;

//Referenzattribute
new KEISFORM() <--------- An dieser Stelle kommt die Fehlermeldung: "illegal start of type"
symbol = new KREISFORM();
symbol.RadiusSetzen(50);
symbol.StartWinkelSetzen(120);
symbol.BogenWinkelSetzen(300);
symbol.BogenArtSetzen(2);
symbol.FarbeSetzen("gelb");

//Konstruktor für Objekte der Klasse PACMAN
PACMAN()
{
//Die Position kann mangels Labyrinth noch nicht festgelegt werden
verwundbar = true;
blickrichtung = 'N';
positionX = 0;
positionY = 0;
}
//Methoden
//...
}
```


Sooo


```
new KEISFORM() <--------- An dieser Stelle kommt die Fehlermeldung: "illegal start of type"
symbol = new KREISFORM();
symbol.RadiusSetzen(50);
symbol.StartWinkelSetzen(120);
symbol.BogenWinkelSetzen(300);
symbol.BogenArtSetzen(2);
symbol.FarbeSetzen("gelb");
```

Sowas darf nur in einer Methode stehen oder in einem static Block...

Desweiteren hat symbol keine Typdeklaration.

Davon abgesehen solltest du nochmal von vorne angefangen, denn hättest du dich an den Text in deinem Link gehalten, wäre das nicht passiert.


----------



## Empire Phoenix (21. Dez 2010)

Ich empfehle mal schnell wenn du das wirklich lernen möchtest, "Java ist auch eine Insel" (google) die ersten 6 Kapitel lesen und verstehen.


----------



## r1d1 (21. Dez 2010)

Nochmal danke für die schnelle Antworten, hab's jetzt kapiert:

So ist es richtig nicht?

public class PACMAN
{
     //Attribute
     int positionX;
     int positionY;
     boolean verwundbar;
     char blickrichtung;


     //Referenzattribute
     KREISFORM symbol;
     {
     symbol = new KREISFORM();
    }

     //Konstruktor für Objekte der Klasse PACMAN
     PACMAN()
     {
         //Die Position kann mangels Labyrinth noch nicht festgelegt werden
         verwundbar = true;
         blickrichtung = 'N';
         positionX = 0;
         positionY = 0;
         symbol.RadiusSetzen(50);
         symbol.StartWinkelSetzen(120);
         symbol.BogenWinkelSetzen(300);
         symbol.BogenArtSetzen(2);
         symbol.FarbeSetzen("gelb");

        }
     //Methoden
        //...
    }


----------



## Gast2 (21. Dez 2010)

Java-Tags benutzen

Lässt sich dein Code kompilieren? Schaut auf jedenfall schonmal besser aus als der erste.


----------



## Sonecc (21. Dez 2010)

Also das ist schon ignorant...
Dicker roter Text, ein Hinweis darauf und es wird sich immer noch nicht daran gehalten...


----------



## bone2 (21. Dez 2010)

```
{
symbol = new KREISFORM();
}
```
warum sind da klammern?


----------



## tuttle64 (21. Dez 2010)

bone2 hat gesagt.:


> ```
> {
> symbol = new KREISFORM();
> }
> ...



zuerst einmal deine frage: die klammern sind da, weil damit ein methodenaufruf erfolgt, genauer gesagt, wird der konstruktor KREISFORM() aufgerufen.

zur eingangfrage beachte bitte die schreibweise:


```
new KEISFORM() <--------- An dieser Stelle kommt die Fehlermeldung: "illegal start of type"
symbol = new KREISFORM();
```

eine KEISFORM ist eben keine KREISFORM..


----------



## Gast2 (21. Dez 2010)

> zuerst einmal deine frage: die klammern sind da, weil damit ein methodenaufruf erfolgt, genauer gesagt, wird der konstruktor KREISFORM() aufgerufen.


Ich nehme an er meint die geschweiften Klammern des static blocks 

EDIT:
static ist natürlich falsch.
Double Brace Initialization


----------



## tuttle64 (21. Dez 2010)

EikeB hat gesagt.:


> Ich nehme an er meint die geschweiften Klammern des static blocks




dann sag doch bitte gleich, was mit static block gemeint ist.


----------



## Noctarius (21. Dez 2010)

Einfache Klammern sind kein Static-Initializer!


----------



## Gast2 (21. Dez 2010)

Noctarius hat gesagt.:


> Einfache Klammern sind kein Static-Initializer!


Jop, hatte es grad editiert.
Asche über mein Haupt.


----------



## bone2 (21. Dez 2010)

EikeB hat gesagt.:


> static ist natürlich falsch.
> Double Brace Initialization



hm ich finde au fder gelinkten seite nichts das mir:

```
KREISFORM symbol;
{
symbol = new KREISFORM();
}
```
erklärt und ich bezweifel auch ganz stark das der te weiß was er da gemacht hat.

entweder einfach:

```
KREISFORM symbol = new KREISFORM();
```

oder was er zuerst wollte, wenn ich das gelinkte verstanden hab:

```
public static KREISFORM() symbol = new KREISFORM();
static {
symbol.RadiusSetzen(50);
symbol.StartWinkelSetzen(120);
symbol.BogenWinkelSetzen(300);
symbol.BogenArtSetzen(2);
symbol.FarbeSetzen("gelb");
}
```

im tutorial stehts nochmal ganz anders, da wird die variable erst im konstruktor initialisiert und nicht irgnedwie oben mit. du sollest deine tutorials auch ganz lesen und abarbeiten, dann passiert sowas nicht


----------



## dehlen (21. Dez 2010)

ürbigens selbst wenn es so gegangen wäre dann hättest du immer noch einen Tippfehler gehabt weswegen es nie im Leben funktioniert hätte du sagt :
new KEISFORM() nennst aber den Rest KREISFORM..... da fehlt ein R nicht wahr ?! =)


----------



## tuttle64 (21. Dez 2010)

Noctarius hat gesagt.:


> Einfache Klammern sind kein Static-Initializer!




aber initialisierer.


----------

