Frage zu einem Projekt "Einarmiger Bandit" 3 Walzen / 9 Zeichnungen BLUEJ

Passi292

Mitglied
Hallo Leute,
Ich bin neu hier und habe direkt mal eine Frage.
Nunja es ist schwer zu erklären. Ich arbeite derzeit an einem Projekt namens "Einarmiger Bandit"
Dort habe ich nun 3 Walzen, die aber auch jeweils darüber und darutner gezeichnet werden, um zu zeigen, dass diese sich auch dreht. Nun hat jede Walze eine Reihenfolge von Zahlen ( 1-4 für Farben ) und diese Reihenfolge hat jeweils 10 Ziffern ( 10 Ziffer wo 4 Farben definiert sind nach häufigkeit )
Nun habe ich es auch geschafft, dass das Feld über der Walze jeweils eine Ziffer darüber ist, und das Feld unter der Walze jeweils die Farbe vor der Ziffer der Walze Zeichnet.
Nun habe ich aber bei Ziffer 10 das Problem, dass die Walze lZiffer + 1 nimmt ( Also hier Ziffer 11 ), nur ich habe keine Ziffer 11 also nimmt er eine beliebige Farbe. Wie schaffe ich es nun, dass ich wenn die Walze Ziffer 10 hat, dass das Feld darüber dann Ziffer 1 bekommt und wenn die Walze Ziffer 1 hat, dass das Feld unter der Walze dann anstatt Ziffer 0 die Ziffer 10 nimmt?

Hier mal ein paar Beispiele zum Verständnis:

Java:
 hatWalze1 = new Walze(150, 250, "1234123121");
hatWalze2 = new Walze(250, 250, "1213214321");
hatWalze3 = new Walze(350, 250, "2131321412");
// Dies sind die Walzen, mit den 10 Ziffer, wo jede Farbe festgelegt ist

Java:
hatBuntstift.setzeFarbe(lZahl+1);

// So sieht es aus, wenn darüber die "Walze" gezeichnet werden soll. lZahl+1 ABER wenn die Walze in der Mitte die lZahl 10 hat, nimmt er für die nächste Walze lZahl 11..

Kennt jemand eine Lösung? Danke im voraus 🙂

Hier ein Beispiel, für die Visuelle Vorstellung ( Was nicht Funktionier ist noch in Arbeit. Stecke halt bei den Walzen fest.. )

SpielAutomat.rar

// Bitte SumAnwendung mit Rechtsklick dann "New SumAnwendung" in BlueJ starten.
 
Zuletzt bearbeitet:
Wie wäre es einfach mit sowas wie:
Java:
neuerWert = Zahl+1;
if(neuerWert > 10) { neuerWert = 0; }
if(neuerWert < 0) { neuerWert = maximalWert; }
hatBuntstift.setzeFarbe(neuerWert);

Das dürfte eine der einfachsten Möglichkeiten sein. Ich hoffe, damit verstanden zu haben, was du meinst.
 
Spielautomat.rar

Ich habe es mal bei der Walze eingefügt..
Doch es geht immernoch nicht :/
Bei dem drehen dürfte die Farbe Grün nicht vorkommen.. Also ist etwas schief gelaufen.
Nur ich weiß nicht was?

Vielleicht fehlt bei der Klasse "Walze" die lZahl?
 
Zuletzt bearbeitet:
So ein Detail wie dass es deiner Beschreibung nach nicht
if(neuerWert < 0) { neuerWert = maximalWert; }
sondern
if(neuerWert < 1) { neuerWert = maximalWert; }
lauten müßte ist es nicht...?
 
Wäre gut wenn du den Fehler eingrenzen könntest, SuM hat nicht jeder so installiert. Beim Überfliegen standen an mehreren Stellen
if (wert < 0) wert = maximalWert;
Alle aktualisiert?
 
Alles versucht. Funktioniert leider nicht. Weiß auch nicht wieso, da ich ein ziemlicher anfänger bin..

Java:
import sum.ereignis.*;
import sum.werkzeuge.*;
/**
 * @author 
 * @version 
 */
public class Walze extends Ereignisbearbeiter
{
    // Bezugsobjekte

    // Attribute
    int zhPos;
    int zvPos;
    int zPosition;
    int zZaehler;
    private int zGuthaben;
    private int zNeuerWert;
    private int zMaximalWert;
    boolean zDrehtsich;
    String zSymbole;
    Buntstift hatBuntstift;
    Textwerkzeug hatTextwerkzeug;
    Rechner hatRechner;



    
    // Konstruktor
    public Walze(int phPos, int pvPos, String pSymbole)
    {
        super();
        hatBuntstift = new Buntstift();
        hatBuntstift.bewegeBis(phPos, pvPos);
        hatBuntstift.setzeFuellmuster(Muster.GEFUELLT);
        zDrehtsich = false;
        zSymbole = pSymbole;
        zPosition = 1;
        zNeuerWert = 1;
        zMaximalWert = 10;
        hatTextwerkzeug = new Textwerkzeug();
        this.zeichne();
        hatRechner = new Rechner();
    }
    
    public void zeichne()
    {
        char lZiffer;
        int lZahl;
        lZiffer = hatTextwerkzeug.zeichenAn(zSymbole, zPosition);
        lZahl = hatTextwerkzeug.alsGanzeZahl(lZiffer);
        hatBuntstift.setzeFarbe(lZahl);
        hatBuntstift.runter();
        hatBuntstift.zeichneRechteck(40, 40);
        hatBuntstift.hoch();
        hatBuntstift.dreheBis(90);
        hatBuntstift.bewegeUm(50);
        hatBuntstift.runter();
        zNeuerWert = lZahl+1;
        if(zNeuerWert > 10) 
        { 
            zNeuerWert = 1; 
        }
        if(zNeuerWert < 1) 
        {
            zNeuerWert = zMaximalWert; 
        }
        hatBuntstift.setzeFarbe(zNeuerWert);
        hatBuntstift.zeichneRechteck(40, 40);
        hatBuntstift.hoch();
        hatBuntstift.bewegeUm(-100);
        hatBuntstift.runter();
        zNeuerWert = lZahl-1;
        if(zNeuerWert > 10) 
        { 
            zNeuerWert = 0; 
        }
        if(zNeuerWert < 0) 
        {
            zNeuerWert = zMaximalWert; 
        }
        hatBuntstift.setzeFarbe(zNeuerWert);
        hatBuntstift.zeichneRechteck(40, 40);
        hatBuntstift.hoch();
        hatBuntstift.bewegeUm(50);
        
    }
    
    public void starte()
    {
        {
            zDrehtsich = true;
            zZaehler = hatRechner.ganzeZufallszahl(50, 100);
        }
    }
    
    public void bremse()
    {
        zDrehtsich = false;
    }
    
    public char symbol()
    {
        return hatTextwerkzeug.zeichenAn(zSymbole, zPosition);
    }
    
    public boolean Drehtsich()
    {
        return zDrehtsich;
    }
    
    public int position()
    {
        return zPosition;
    }
    
    public void gibFrei()
    {
        hatTextwerkzeug.gibFrei();
        hatBuntstift.gibFrei();
    }
    
    public void bearbeiteLeerlauf()
    {
        if (zDrehtsich)
        {
            zPosition++;
            if (zPosition > 10)
            {
                zPosition = 1;
            }
            this.zeichne();
            zZaehler = zZaehler -1;
            if(zZaehler == 0)
            {
                zDrehtsich = false;
            }
        }
    }
    // Dienste

}

So sieht das zurzeit aus.
 
Was ist jetzt daran falsch? Woher glaubst du zu wissen, dass Grün nicht vorkommen soll?

Füg' mal in Walze diese Methode ein
Java:
    private static String stringForFarbe(int farbe)
    {
    	switch (farbe)
    	{
	    	case Farbe.BLAU : return "BLAU";
	    	case Farbe.CYAN : return "CYAN";
	    	case Farbe.DUNKELGRAU : return "DUNKELGRAU";
	    	case Farbe.GELB : return "GELB";
	    	case Farbe.GRAU : return "GRAU";
	    	case Farbe.GRUEN : return "GRUEN";
	    	case Farbe.HELLGRAU : return "HELLGRAU";
	    	case Farbe.MAGENTA : return "MAGENTA";
	    	case Farbe.ORANGE : return "ORANGE";
	    	case Farbe.PINK : return "PINK";
	    	case Farbe.ROT : return "ROT";
	    	case Farbe.SCHWARZ : return "SCHWARZ";
	    	case Farbe.WEISS  : return "WEISS ";
    	}
    	return "---Unbekannte Farbe---";
    }

und dann VOR die Zeilen, wo die Farben gesetzt werden, sowas wie
Java:
        System.out.println("Setze Farbe in "+this+" auf wert "+zNeuerWert+", Farbe "+stringForFarbe(zNeuerWert));
        hatBuntstift.setzeFarbe(zNeuerWert);

Die Ausgabe ist dann z.B.
Setze Farbe in Walze@f38798 auf wert 5, Farbe GRUEN

:bahnhof:
 

Zurück
Oben