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

Busch2207's Comments

Back to Busch2207's profile

It looks great! But it looks different every time. (I mean the gray points) But it's easy to generate the same colors, like you've got on the website within three steps (only if you want ;) ): first declare a variable like: GreenfootImage gi_original; Then start a new Thread, that will load the image in the constructor. (because it sometimes need a bit to load it from the web. And till it is needed, there is enough time): new Thread() { public void run() { try { gi_original=new GreenfootImage("http://www.greenfoot.org/photo_attachments/0000/9746/Greenfoot.jpg?1393532467"); } catch(Exception e) { gi_original=null; } } }.start(); and the last step: In the RandomRectangle()-method, you write under 'colory=...;' and before the 'while (getBackground().getColorAt(colorx-cellsize, colory).equals(randomcolor)...)' the following three lines: if(gi_original!=null) randomcolor=gi_original.getColorAt(randposx[randvar]*18+9,randposy[randvar]*18+9); else Now the gray and black rectangles will always have exactly the same colors, like on your current Greenfoot-website-image ;)
I'm working on it! It will not take so long any more. Why do you ask? You even haven't played the part, that is already ready! ^^
If you want mario to walk directly on the blocks, you should remove the transparent part of his Image. (The collision are made with the width and height of the current image! ;)
Nice! These graphics and music are much better, than mine! ^^ :D
mh... Ich weiß nicht ob ich die Frage richtig verstanden hab... Aber ich versuchs mal ;) Eine interface-Klasse kann, wie auch eine ganz normale Klasse zu einer anderen oder in einer anderen Klasse geschrieben werden. Die Interface kann aber, wie jede andere Klasse auch, auch alleine stehen. Ich habe sie in diesem Szenario einfach zu der Darkness-Klasse dazugeschrieben, damit die Leute nur eine Klasse kopieren müssen. (Um einen besser Überblick bewahren zu können) :) Letztendlich ist es also egal, ob eine Klasse/Interface/Enum im selben Fenster einer anderen Klasse steht oder ein eigenes Fenster hat. (Solange sie nicht IN die andere Klasse geschrieben wird, denn dann muss sie über die andere Klasse aufgerufen werden) ;)
Sie muss alle Methoden implementieren. Ein Interface kann nur öffentliche (also public) Methoden haben! ;)
Es ist nicht unbedingt ein MUSS, dass du das Bild light.png nimmst. Die Methode 'getGlowImage()' kann jedes x-beliebige Bild zurückgeben. ^^ :) Du kannst das light.png-Bild auch ganz einfach größer oder kleiner skalieren, wie es im Konstruktor der Bulb-Klasse getan wird! ^^ So... Ich hab jetzt die Darkness-Klasse so überarbeitet, dass das Licht nicht sofort verschwindet, sondern ganz langsam verblasst, wenn ein Objekt an einen anderen Ort bewegt, oder komplett gelöscht wurde. Dazu habe ich einen zweiten Konstruktor eingefügt, der eine 'double'-Zahl von 0 bis 3 erwartet. 0->Licht verschwindet garnicht. 3->Licht verschwindet schnell. (Je größer die Zahl, desto mehr kann es sein, dass das Licht leicht pulsiert. (Darum auch die Grenze mit 3). Aber ich denke das reicht vollkommen für dein Projekt. ;) ) Dazu musst du anstatt new Darkness() einfach nur new Darkness( 'irgendeine Zahl' ) schreiben. Eine Interface... Nun... Wie erkläre ich das am besten... Interfaces werden für Schnittstellen verwendet. Wenn ein Objekt mit anderen Objekt arbeiten soll (wie hier die Klasse Darkness mit Glower-Objekten), die Objekte aber nicht schon vorher festgelegt oder in einer besonderen vererb-Hirarchie sein sollen, dann kann man so genannte Interfaces verwendet. JEDE Klasse kann man ein interface implementieren lassen und diese Klasse muss dann die in der Interface vorgeschriebenen Methoden überschreiben, damit mit der Klasse gearbeitet werden kann... Hier: Darkness braucht Glower, die eine x- und y-Postion haben und die ein 'Glow'-Image zurückgeben. Darum arbeitet diese Klasse einfach mit dem Glower-Interface, da durch dieses Interface vorgegeben ist, dass alle Objekte, die dann ein Glower-Objekt sind, diese Methoden überschreiben. (Ich hoffe diese Erklärung hat geholfen. Falls nicht, frag einfach nach! ;) )
So, hab das ganze jetzt nochmal fast komplett überarbeitet. Jetzt dürfte es nicht mehr hacken. Egal, bei welcher Spielgeschwindigkeit. ;) Ist jetzt ein bisschen anders, was die 'Glow'-Interface angeht. Aber wenn du die Darkness-Klasse nochmal aus diesem Szenario kopierst, dann müsstest du nur die alte 'Glow'-klasse löschen. ;)
Hm, komisch... Es ist für das Programm eigentlich komplett egal, ob sich das Objekt bewegt oder nicht. ;) Und bei mir läuft es bisher ohne irgendwelches hacken, aber gut. :)