# Kniffel



## Lulatsch1989 (15. Jan 2013)

Halli Hallo,

ich bin neu hier und habe von Java Programmierung nur sehr geringe Grundkenntnisse!
Jetzt müssen wir bis morgen Nacht ein einfaches Kniffel in Java programmieren, aber ohne GUI, nur die Ausgabe in der Konsole in Eclipse und einem Quellcode, sofern das möglich ist.

Kann mir irgendjemand dabei helfen??

Die Aufgabe lautete:

Programmieren Sie ein einfaches Kniffelspiel. Es werden nur die Augen der Zahlen 1-6 gesammelt. Die Anzahl der Würfel beträgt 5., die Anzahl der Würfe bei 3. Nach dem ersten Wurf muss festgelegt werden, welche Zahl gesammelt wird. Nach dem zweiten Wurf einer Runde kann die Zahl, die gesammelt wird, nochmals verworfen werden zugunsten einer anderen. Ein Spiel besteht aus 6 Runden (Sammeln der Zahlen 1-6). Geben Sie pro Runde dessen Zwischenergebnisse nach dreimaligem Würfeln aus. Führen Sie beliebig viele Spiele ihres Programms aus und geben Sie das Gesamtergebnis pro Spiel aus. Bilden Sie den Durchschnittswert der gewürfelten Punkte je Zahl über alle Spiele und geben Sie das Ergebnis aus. 

Es wär so toll, wenn ihr mir helfen könntet!!!


----------



## JCODA (15. Jan 2013)

eigener Code?

oder -> Jobbörse - java-forum.org


----------



## Lulatsch1989 (15. Jan 2013)

Wir bekommen es einfach nicht hin!!!

Habe doch erwähnt, dass wir Anfänger sind... Wir wollen mit dem Code kein Geld verdienen oder sonst was. Brauchen das nur für die Uni...

Aber wie ich sehe, bekomme ich hier sicherlich keine Hilfe. Schade


----------



## ARadauer (15. Jan 2013)

Habt ihr konkrete Fragen?
Ich denke nicht, dass euch jemand kostenlos eure Hausaufgabe schreibt.
ein bisschen arrays, Random, for, if.. ist eignetlich eine nette aufgabe. versucht es mal und bei konkreten Problemen meldet ihr euch wieder


----------



## Lulatsch1989 (15. Jan 2013)

Wir haben ja schon einen Teil des Codes, aber in der Konsole kommen nur die kompletten Zahlen raus und beim Ergebnis immer Null... Wenn du willst schick ich dir mal den Code. Vielleicht findest du den Fehler!

Wir haben einen ganz kleinen Kurs gehabt in Programmierung und nicht wirklich viel gemacht...


----------



## ARadauer (15. Jan 2013)

Poste den Code hier


----------



## Lulatsch1989 (15. Jan 2013)

Hier unser bisheriger Quellcode...

Wir wollten es eigentlich mit dem Java Scanner machen, um die Abfragen zu tätigen welcher Würfel behalten werden will, aber das funktioniert irgendwie nich...



Spoiler: Quellcode





```
public class Würfel {

public static void main(String[] args) {

int[] wurf = new int[5];
int gesamtergebnis = 0;

for (int anzahl = 0; anzahl < 3; anzahl++) {
for (int i = 0; i < 5; i++) {
wurf[i] = (int) Math.ceil(Math.random() * 6);
System.out.print(wurf[i] + " ");
}

System.out.println(" ");

int a = readInt("rausnehmen:");

for (int i = 0; i < 5; i++) {
if (wurf[i] != a) {
wurf[i] = (int) Math.ceil(Math.random() * 6);
System.out.print(wurf[i] + " ");
} else {
System.out.print("e" + wurf[i] + " ");
}
}

System.out.println("");

int b = readInt("Neue Zahl? (Ja=1;Nein=0):");

switch (b){
case 1:
a = readInt("rausnehmen:");break;
case 0:
break;
default:
System.out.print("Falsche Eingabe!");
}



for (int i = 0; i < 5; i++) {
if (wurf[i] != a) {
wurf[i] = (int) Math.ceil(Math.random() * 6);
System.out.print(wurf[i] + " ");
} else {
System.out.print("e" + wurf[i] + " ");
}
}

int ergebnis = 0;

for (int z = 0; z < 5; z++) {
if (wurf[z] == a) {
ergebnis = ergebnis + wurf[z];
}
}

gesamtergebnis = gesamtergebnis + ergebnis;
System.out.print("Ergebnis aktuelle Runde:" + ergebnis + " " +
"Zwischenergebnis:" + gesamtergebnis);
System.out.println("");
System.out.println("NEUE RUNDE!");
}
}

private static int readInt(String string) {
// TODO Auto-generated method stub
return 0;
}
}
```


----------



## SlaterB (15. Jan 2013)

readInt() macht bisher nicht gerade viel, zum Einlesen Kenntnisse? 
in jedem Fall erstmal in separaten Programm testen, nicht mitten im Kniffel

das Hauptprogramm mit 3 Runden sieht ja schon ganz ansehnlich aus,
wobei übrigens Einrücken erlaubt ist! :

```
public class Würfel
{

    public static void main(String[] args)
    {

        int[] wurf = new int[5];
        int gesamtergebnis = 0;

        for (int anzahl = 0; anzahl < 3; anzahl++)
        {
            for (int i = 0; i < 5; i++)
            {
                wurf[i] = (int)Math.ceil(Math.random() * 6);
                System.out.print(wurf[i] + " ");
            }

            System.out.println(" ");

            int a = readInt("rausnehmen:");

            for (int i = 0; i < 5; i++)
            {
                if (wurf[i] != a)
                {
                    wurf[i] = (int)Math.ceil(Math.random() * 6);
                    System.out.print(wurf[i] + " ");
                }
                else
                {
                    System.out.print("e" + wurf[i] + " ");
                }
            }

            System.out.println("");

            int b = readInt("Neue Zahl? (Ja=1;Nein=0):");

            switch (b)
            {
                case 1:
                    a = readInt("rausnehmen:");
                    break;
                case 0:
                    break;
                default:
                    System.out.print("Falsche Eingabe!");
            }

            for (int i = 0; i < 5; i++)
            {
                if (wurf[i] != a)
                {
                    wurf[i] = (int)Math.ceil(Math.random() * 6);
                    System.out.print(wurf[i] + " ");
                }
                else
                {
                    System.out.print("e" + wurf[i] + " ");
                }
            }

            int ergebnis = 0;

            for (int z = 0; z < 5; z++)
            {
                if (wurf[z] == a)
                {
                    ergebnis = ergebnis + wurf[z];
                }
            }

            gesamtergebnis = gesamtergebnis + ergebnis;
            System.out.print("Ergebnis aktuelle Runde:" + ergebnis + " " + "Zwischenergebnis:" + gesamtergebnis);
            System.out.println("");
            System.out.println("NEUE RUNDE!");
        }
    }

    private static int readInt(String string)
    {
        // TODO Auto-generated method stub
        return 0;
    }
}
```
nun in aller Ruhe an den Details feilen,
dass a zweimal eingelesen und ausgewertet wird, Code dazu doppelt dasteht, kann ja nicht gut gehen,
da muss man genau überlegen wie vorzugehen ist,

reicht nicht in der Mitte, nach dem Random, eine Eingabe pro Runde? warum 2x Eingabe? alles muss seine Gründe haben,
in Ruhe analysieren, nicht wild irgendwas zusammenschreiben und nach Hilfe rufen

beim Random darauf achten, dass die gesammelten Zahlen nicht überschrieben werden,
aber das kann dann ja nach und nach folgen,
wie auch die beliebig vielen Spiele, wohl nochmal eine Schleife drumherum, ganz gut dass das bisher nicht dabei ist,
ein Spiel reicht vorerst völlig als Teilaufgabe,
man kann übrigens auch Untermethoden schreiben, hier vielleicht schlecht mit vielen Zwischenzuständen,
später dann aber für die Schleife mit mehreren Spielen

```
while (true) {
  // Abfrage ob Ende, evtl. Abbruch

  oneGame();
}
```


----------

