ich habe zum Thema BlueJ eine Aufgabe erhalten, und zwar soll ich ein "Aquarium" programmieren. Dieses soll einen Fisch enthalten, welcher automatisiert schwimmen kann, beim Kontakt mit dem Rand soll er umdrehen.
zudem soll es eine "Pflanze" geben(einfaches langes rechteck), welche der Fisch bei Berührung "auffressen" soll, bzw einen Teil davon.
Leider bin ich aus dem Thema BlueJ fast komplett raus und weiß nicht wie ich die automatisierte Bewegung/bzw die Richtungsänderung hinbekommen soll. Ansätze habe ich (Lösung soll ohne SuM-Bibliothek erfolgen und auch keine Applet sein), jedoch scheint mein bisheriger Ansatz nicht wirklich gut zu sein.
Würde mich über Hilfe freuen! Kann, falls es gewünscht ist auch mal meine Ansätze posten, hoffe aber darauf, dass ihr diese nicht benötigt ^^
Ich schreibe dir hier mal eine Lösungsstrategie, da es eine beschissene Arbeit ist mit SuM zu "programmieren". So lernst du auch wenigstens etwas dabei.
Allgemein:
Du solltest 3 Klassen erstellen, zum einen das Aquarium, den Fisch und die Pflanze.
In der Klasse "Fisch" speicherst du die Position des Fisches, sowie die Funktionen zum zeichnen und Bewegen. Ebenfalls sollte es eine boolean-Funktion geben, die überprüft, ob die Position des Fisches gleich der Position der Pflanze, sowie der Rand erreicht wurde.
In der Pflanze solltest du ebenfalls die Position speichern und eine Funktion, die den Fisch verschluckt
Verschlucken des Fisches:
Du fragst bei jeder Bewegung zusätzlich mit ab, ob sich der Fisch in der Pflanze befindet, sollte es der Fall sein, rufst du die Verschlucken-Funktion der Pflanze auf und die Bewegung wird weiterhin so lange weiterhin ausgeführt, wie du willst.
In der Verschlucken-Funktion setzt du deinen Stift für die Pflanze in den radiere-Modus und zeichnest das Rechteck erneut und erneut bis der Fisch verschluckt wurde.
Bewegung:
Fisch wegradieren, Fisch bspw. 10 pixel in Richtung X-Achse erneut zeichnen.
Das ganze packst du am besten in eine Endlosschleife. sobald die Koordinaten des Fisches ~ Bildschirmbreite (Musst du mal ausprobieren) ist führst du die Bewegung in -10 Pixel aus. Von Vorteil wäre es natürlich, wenn der Fisch auch gespiegelt gezeichnet wird. Sobald die Position des Fisches ~ Bildschirmbreite(0) ist, das ganze Spiel erneut.
Poste doch mal deine Ansätze, dann können wir dir auch besser weiterhelfen. Allerdings kannst du nicht erwarten, dass hier jemand das komplette Programm für dich schreibt.
//lässt den Fisch automatisiert horizontal schwimmen
public void autoSchwimm()
{
int distance=1000;
while(distance>0){
horizontalBewegen(1);
distance=distance-1;
}
}
Ich denke die Spiegelung bekomme ich auch noch hin...muss das alles in die oben genannte Methode autoSchwimm ?
Nächstes Problem, der Fisch soll per Zufall auf und ab schwimmen? also ich habe es schon hinbekommen eine Methode zu schreiben bei der mir eine zufällige Zahl zwischen 0und6 ausgegeben wird...nur wie wende ich diese auf den Fisch an ? bzw..so würde er ja bloß nach oben schwimmen aber nicht nach unten. Zudem müsste man alle, sagen wir mal 50 Pixel eine neue Zahl generieren lassen ? Weiß dazu jemand ne Lösung bzw den Ansatz ?
muss das alles in die oben genannte Methode autoSchwimm ?
Was meinst du?
So würde ich es machen:
Code:
public class Fisch
{
//Variablen zum Speichern der Koordinaten
int posx, posy;
//Startposition wird an x, y übergeben, sobald neue Instanz erzeugt wird
public Fisch(int x, int y)
{
posx = x;
posy = y;
}
public void autoSchwimm()
{
for(int distance = 1000; distance > 0; distance--)
{
int rnd = random();
bewege(1, rnd);
posx++;
posy = posy + rnd;
}
}
//Zufallszahl um wie viel Einheiten gestiegen/gesunken (Ebenfalls Zufall) werden soll.
public int random()
{
int rnd = Math.random()*6+1;
boolean rndBool = Math.random() < 0.5;
if(!rndBool)
rnd = 0 - rnd;
return rnd;
}
public void bewege(int bewegeX, int bewegeY)
{
//... Dein Code zum bewegen z.B.
horizontalBewegen(bewegeX);
vertikalBewegen(bewegeY);
}
}
Ob die Spiegelung des Fisches auch in die schleife von autoSchwimm rein muss ^^
okay an eine for schleife hab ich vorerst nicht gedacht..sieht aber bei dir ganz logisch aus ! Ich probier mal weiter daran rum...ich danke dir auf jedenfall für die Mühe...naja wobei es für dich wahrscheinlich eine sehr einfach Sache ist
Okay klingt logisch ! ^^ zumindest hab ich die automatische Bewegung hinbekommen, mit deiner Hilfe.
Aber mal was anderes, jetzt ist es ja so das der fisch die distance 1000 zurücklegt, wie mach ich es, dass er die distance entsprechend bis zum Rand zurücklegt...
Da muss man ja die xPos abfragen die während der schleife aktualisiert wird. Und wenn die xpos dem Rand entspricht soll er umdrehen...iirgendwie steh ich aufn schlauch und komm damit nicht weiter
Java -> BlueJ Hilfe 03/23/2015 - Java - 4 Replies Wie kann ich beim einem Attribut z.b geburtstag die bereits zuvor deklarierte Klasse als Datentyp angeben ?
Klasse die ich zuvor hatte war Datum die jeweils tag, monat und jahr festlegt.
Könnt mich auch in skype adden und ich zeige euch was ich meine falls ihr nicht versteht was ich wissen will :P
DANKE AN ALLE schon mal.
[BlueJ Java Hilfe] 11/25/2014 - Java - 4 Replies Moin Com,
Ich bin so NetBeans verwöhnt, dass ich per Hand weder Fenster noch Buttons schreiben kann.
So weit bin ich:
import java.awt.*;
import javax.swing.*;
public class Test extends JFrame {
private JButton jbutton1;
Hilfe bei Bluej/Java programmierung 04/28/2013 - General Coding - 7 Replies Moin Leute,
ichbrauche jemanden der sich mit Java/Bluej.
Wer sich halbwegs auskennt soll mich bitte anschreiben.
es geht um einfache Dinge wie z.b. das programmieren eines Würfel etc.
mfg
yohnson :mofo:
Suche Hilfe bei BlueJ(Java) 01/16/2013 - General Coding - 20 Replies Hallo, ich weiß nicht ob ihr BlueJ kennt , aber das haben wir auf jedenfall in der Schule in Informatik und ich muss als Hausaufgabe eine Methode schreiben.
Das soll so eine Liste sein(also sowas ähnliches wie ein Array) und man weiß nicht wie lang die Liste ist, also das muss immer gehen und die soll den Durchschnitt aller Werte nehmen.
ALso das soll ich in etwa machen und abgeben.
Kann mir da jemand helfen?
Würde dafür dann ein bischen Paypal oder sowas überweisen, wir werden uns...
Hilfe beim BlueJ Projekt 09/17/2012 - General Coding - 1 Replies Moin Leute wir haben im moment BlueJ als Thema.
Jetz sollen wir zuerst ein Bild aus Dreiecken/Kreisen/Quadraten und Rechtecken machen. Dann mitschreiben und später bei Zeichnungen eintragen das es sich von selbst zeichnet.
Ich hab mein Bild falsch mitgeschrieben und jetzt passt nichts zusammen.
Hat einer von euch ein Bild + Den Befehlen zu dem Bild erstellen für mich???
Brauche ich echt dringend damit ich fertig werde muss das ganze noch bewegen.