Lotto Spiel

N

Nanny McPhie

Gast
huhu,
ich brauche mal hilfe :) wir haben grad das thema arrays und java in info und das versteh ich gar nicht :D Jetzt sollen wir ein Lottospiel programmieren (- was ich noch hin bekommen hab) aber jetzt sollen wir noch sagen lassen wie viele Richtige der Spieler hatte? Wie mache ich das? Bitte mit möglichst wenigen Fachbegriffen erklären - ich verstehs echt nicht ....
LG
 

eRaaaa

Top Contributor
Auf eine grobe Frage mit wenig Informationen folgt eine genauso grobe Antwort:
Die 6 Zahlen des Users mit den 6 Gezogenen vergleichen, bz.w schauen ob Zahl 1,2,3,..usw. vom User bei den gezogenen dabei ist.

Wie man das jetzt umsetzt kommt eben drauf an. Hast du Arrays? Listen? etc...
 
G

Gast2

Gast
Wo ist das Problem?

Du hast zwei Arrays:
1) Die Lotto Ziehung
2) Spieler Tip

Dann iterierst du über eine von beiden und guckst ob die Zahl im jeweiligen anderen Array vorhanden ist. Wenn ja, erhöhst du einen Counte rum 1. Fertig.
 
N

Nanny McPhie

Gast
hi
also ich stell euch jetzt mal den gesamten JAVA rein und mein Lsg ansatz der aber nicht klappt

Java:
public class insLotto {

  public static void main(String[] args) {
     int[] lotto=new int[50];
     int[] tip=new int[50];
     int y = 0;
     int zufall=1;
     int k=0;
     int zahl = 0 ;
     int r=0;
     Scanner in=new Scanner(System.in);
     System.out.println("Geben Sie ihre 6 Zahlen ein:");
     for(int i=1; i<7; i++) {
       k=1;
       while (!(k==2)) {
             zahl=in.nextInt();
             if (zahl<50) {
             if (tip[zahl]==0 && zahl!=0) {
                k=2;
             }
             else {
                  System.out.println("Nehmen Sie eine andere Zahl!");
             }
             if (zahl>49) {
                System.out.println("Bitte geben Sie eine Zahl unter 50 ein!");
             }
             }
             else {
             System.out.println("zahl<50!");
             }


       }
       tip[zahl]=1;
     }

     System.out.println("Die gezogenen Zahlen sind:");
     for(int i=1; i<7; i++) {
     y=1;
     while (!(y==2)) {
     zufall = (int) (Math.random()*50);
     if (lotto[zufall]==0 && zufall!=0) {
        y=2;
     }
     }
     lotto[zufall]=1;
     System.out.println(zufall);
     }


     
   }
   
   }
 
N

Nanny McPhie

Gast
hier der Lösungsansatz
Java:
System.out.println("Sie haben mit folgenden Zahlen gewonnen:");
          for(int i=0; i<=5; i++)
          {
              for(int j=0; j<=5; j++)
              {
                  if (zufall[i] == zahl[j])
                      System.out.println(zahl[j]);
              }
          }
 
G

Gast2

Gast
Räum erst mal deinen Code auf - dann wird es einfacher

Grundgerüst:
Java:
public class Lotto {

	private static int[] lottozahlenZiehen() {
		//zahlen ziehen
	}

	private static int[] tipEingeben() {
		//tip eingeben
	}

	private static int trefferZaehlen(int[] lottozahlen, int[] tip) {
		//vergleichen
	}

	public static void main(String[] args) {
		int[] lottozahlen = lottozahlenZiehen();
		int[] tip = tipEingeben();
		int treffer = trefferZaehlen(lottozahlen, tip);
		System.out.println("Treffer: " + treffer);
	}

}
 
O

OldBoy

Gast
Hallo Nanny McPhie,
Deine Art in Java zu programmieren ist nicht ganz im Sinne des Erfinders, wie dir fassy deutlich machen will.
Als altem Basic-Programmierer und Java-Anfänger liegt mir aber die lineare Programmierung auch näher.

Ganz gut find ich den Ansatz, dass du Arrays mit 50 Elementen nimmst und dort nur Flags setzt, also quasi den Lottoschein immitierst, auch wenn es da dann ein bool-Array 49 Elementen getan hätte. Das Element im dem Index 0 darf man ja durchaus auch verwenden. Du musst dann halt statt z.B. Tip[Zahl] vielleicht Tip[Zahl-1] schreiben.
Weniger gefällt mir dann der if then Konstrukt (bei der Eingabe). Das ist schon wegen fehlender Einrückungen schwer lesbar.
Dann prüfst du zunächst, ob die eingegeben Zahl < 50 ist und dann, inwieweit diese Zahl bereits eingebene war.
Später dann nochmal, ob die Zahl >49 ist.
Wäre es hier nicht sinnvoller zu prüfen inwieweit Zahl < 1 oder Zahl > 49 und wenn
- Ja, Fehlermeldung
- sonst : Wenn Zahl schon da, dann Fehlermeldung, sonst Zahl eintagen und "while" verlassen..

Nachdem ich ja auch ein JAVA-Anfänger bin, weiss ich auch nicht, inwieweit das Array mit der Deklaration schon Werte enthält.
In Basic hätte ich erwartet dass alle Elemente des Array 0 sind, ohne dass ich dafür irgendwas zu tun hätte.
Wenn das bei Java auch so wäre, kein Problem, anderfalls aber schon.

Am Ende musst du - gemäß deiner Methode - die beiden Felder parallel vergleichen und zwar mit Index von 1 bis 49
Ein Treffer liegt vor, wenn Tipp = 1 und Lotto = 1;
 
O

OldBoy

Gast
Ich hab mal versucht dein Beispiel etwas "Java-gerecht" umzugestalten.
Kannst du dir ja vielleicht mal anschauen und du findest dann sicherlich auch leicht heraus,
wie man das ändern kann, so dass MeinTip durch Zufallszahlen entsteht und die
Gewinnzahlen eingegeben werden müssen.

Unbeachtet bleibt bei der ganzen Geschichte die Zusatzzahl, aber es ist ja auch nur ein Beispiel.

Java:
import java.util.*;

public class CLotto
{
  public static void main (String[] args) 
  {
    Lottozahlen MeinTip = new Lottozahlen();
    Lottozahlen GewinnZahlen = new Lottozahlen();
    MeinTip.eingeben();
    MeinTip.anzeigen("Mein Tip lautet:");
    GewinnZahlen.ziehen();
    GewinnZahlen.anzeigen("Die Gewinnzahlen lauten:");
    GewinnZahlen.vergleichen(MeinTip);
  }
}

class Lottozahlen 
{
  boolean a[];

  Lottozahlen()
  {
     this.a = new boolean[49];
  }

  public void ziehen()
  {
    for (int i=0;i < 49; i++)
      this.a[i] = false;

    for(int i=0; i<6; i++) 
    { 
      int zufall;
      do
        zufall = (int) (Math.random()*48);     
      while ( this.a[zufall] );
      this.a[zufall] = true;
    }
  }
 
  public void eingeben()
  {
     int zahl;
     for (int i=0;i < 49; i++)
       this.a[i]=false;

     Scanner in = new Scanner(System.in);
     System.out.println("Geben Sie ihre 6 Zahlen ein:");
     for(int i=1; i<7; i++) {
       boolean bA = true;
       do
       {
         zahl=in.nextInt();
         if (zahl<1 || zahl>50) {
           System.out.println("Bitte geben Sie eine Zahl zwischen 1 und 49 ein!");
         }
         else
         {
           if (this.a[zahl-1] == true) {
                System.out.println("Zahl war bereits eingegeben !");
           }
           else {
                  bA = false;
           }
         }
       }
       while (bA); 
       this.a[zahl-1] = true;
    }
  }

  public void vergleichen(Lottozahlen lz)
  {
    int z = 0;
    System.out.println("Treffer");
    for (int i=0;i < 49; i++)
    {
     if ( this.a[i] && lz.a[i] ) {
       z ++;
       System.out.println( z + " : " + i+1 );
       }
    } 
    if (z=0) System.out.println( "keine" );
  }

  public void anzeigen(String strTitle)
  {
    System.out.println(strTitle);   
    for (int i=0;i < 49; i++)
    {
     if ( this.a[i] == true ){
       System.out.println( i+1 );
      }
    } 
  }
}
 
O

OldBoy

Gast
Uuups, da hab ich doch glatt schell noch 2 Fehler eingebaut:

Einmal fehlten Klammern, "+i+1" ersetzt durch "+(i+1)"
[JAVA=80] System.out.println( z + " : " + (i+1) );[/code]
und einmal ist der Vergleich kein Vergleich, "z = 0" ersetzt durch "z == 0"
[JAVA=83] if (z == 0) System.out.println( "keine" );[/code]
 
G

Gast2

Gast
So würde ich es machen (10 Minute quickshot, kann man noch wesentlich schöner machen)

Java:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

public class LottoSpiel {

	List<Spieler> lottoSpieler = new ArrayList<Spieler>();
	Set<Integer> lottoZahlen;

	private Spieler spielerEingeben() {
		Spieler spieler = new Spieler();
		Scanner sc = new Scanner(System.in);
		String spielerName = "";
		System.out.println("Bitte Namen für Spieler eingeben:");
		spielerName = sc.next();
		spieler.setName(spielerName);
		System.out.println("Spieler " + spieler.getName()
				+ " bitte Tip eingeben:");
		Set<Integer> spielerTip = new TreeSet<Integer>();

		do {
			boolean illegalNumber = false;
			Integer zahl = 0;
			try {
				zahl = sc.nextInt();
			} catch (InputMismatchException e) {
				illegalNumber = true;
			}
			if (zahl <= 0 || zahl >= 50 || illegalNumber
					|| spielerTip.contains(zahl)) {
				System.err
						.println("Eingabe nicht gültig, bitte wiederholen! Bisher eingegeben: "
								+ Arrays.toString(spielerTip.toArray()));
				continue;
			}
			spielerTip.add(zahl);
		} while (spielerTip.size() < 6);
		spieler.setTip(spielerTip);
		System.out.println("Spieler " + spieler.getName() + " Tip ist "
				+ Arrays.toString(spielerTip.toArray()));

		return spieler;
	}

	private Set<Integer> zieheLottozalen() {
		Set<Integer> zahlen = new TreeSet<Integer>();
		Random rnd = new Random();

		while (zahlen.size() < 6) {
			zahlen.add(rnd.nextInt(48) + 1);
		}
		return zahlen;
	}

	private int auswerten(Spieler spieler) {
		int treffer = 0;
		for (Integer i : spieler.getTip()) {
			if (lottoZahlen.contains(i)) {
				i++;
			}
		}
		return treffer;
	}

	public void start() {
		System.out.println("Spielstart");
		String weitererSpieler = "J";
		Scanner sc = new Scanner(System.in);
		do {
			lottoSpieler.add(spielerEingeben());
			System.out.println("Weiteren Spieler hinzufügen? [J/N]");
			weitererSpieler = sc.next();
		} while (!weitererSpieler.equals("N"));

		System.out.println("Lottozahlen werden gezogen...");
		lottoZahlen = zieheLottozalen();
		System.out.println("Die Lottozahlen sind: "
				+ Arrays.toString(lottoZahlen.toArray()));
		System.out.println("---------------------------------");
		for (Spieler spieler : lottoSpieler) {
			int treffer = auswerten(spieler);
			System.out.println("Spieler " + spieler.getName()
					+ " hat getippt: "
					+ Arrays.toString(spieler.getTip().toArray()) + " und "
					+ treffer + " Treffer");
		}
	}

	public static void main(String[] args) {
		LottoSpiel spiel = new LottoSpiel();
		spiel.start();
	}

}

class Spieler {
	private String name;
	private Set<Integer> tip;

	public void setTip(Set<Integer> tip) {
		this.tip = tip;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public Set<Integer> getTip() {
		return tip;
	}
}
 
O

OldBoy

Gast
Hallo fassy,

ist ja alles schön und gut, aber ob das so hilfreich ist?
Da hatte ich schon Bedenken, mich mit meinem Beispiel zu weit von Nanny's Code zu entfernen.
Man muss, denke ich, Leute dort abholen, wo sie stehen.

Was mich aber noch mehr stört, ich spiele jetzt schon 2 Stunden Lotto und mein bestes Ergebnis war ein 3er.
Andererseits wärs wohl auch frustrierend einen 6er zu erreichen, aber keine Millionen einzufahren...:)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
C Lotto Spiel Java Basics - Anfänger-Themen 23
2 Lotto-Spiel Java Basics - Anfänger-Themen 9
P Lotto Spiel Java Basics - Anfänger-Themen 50
U Lotto-Zahlen App Java Basics - Anfänger-Themen 34
A Lotto Programm Java Basics - Anfänger-Themen 3
J Lotto 6 aus 49 Java Basics - Anfänger-Themen 7
C Lotto 3, 4, 5, 6 Richtige nach x Ziehungen ermittelt.. Java Basics - Anfänger-Themen 7
T Lotto Zahlen in Array speichern Java Basics - Anfänger-Themen 2
Z Lotto-Programm Wieso klappt das? Java Basics - Anfänger-Themen 8
K Methoden Lotto mit sechs richtigen Java Basics - Anfänger-Themen 10
Z Lotto mit Arrays schreiben Java Basics - Anfänger-Themen 4
X Lotto Zahlen Ziehung Java Basics - Anfänger-Themen 26
M Lotto Programm Java Basics - Anfänger-Themen 18
H Methoden Lotto-Programm, Methoden ordnen & umbennen Java Basics - Anfänger-Themen 4
1 Ein weiteres Lotto programm Java Basics - Anfänger-Themen 6
R Lotto Zahlen Java Basics - Anfänger-Themen 4
B Lotto mittels TreeSet Java Basics - Anfänger-Themen 3
L Lotto 6 aus 49 Java Basics - Anfänger-Themen 11
P Zufallszahlen fuer Lotto generieren Java Basics - Anfänger-Themen 28
K Fehler in Lotto Programm Java Basics - Anfänger-Themen 8
G Lotto Zufallszahlen zählen Java Basics - Anfänger-Themen 3
G Zufalls Lotto Zahlen Ausgeben Java Basics - Anfänger-Themen 16
A Lotto Zahlen Ausgeben Java Basics - Anfänger-Themen 2
X Lotto Zufallszahlen mit ArrayList erstellen Java Basics - Anfänger-Themen 3
V Doppelte Zahlen bei Lotto verhindern Java Basics - Anfänger-Themen 11
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
I Threads Spiel gol Java Basics - Anfänger-Themen 6
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
enesss tictactoe spiel Java Basics - Anfänger-Themen 5
Jxhnny.lpz TicTacToe Spiel vs Computer. (Probleme) Java Basics - Anfänger-Themen 7
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
Ekooekoo Hilfe spiel Java Basics - Anfänger-Themen 5
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
Kennewick Basketball Spiel Ergebnisse Java Basics - Anfänger-Themen 11
X Erste Schritte Hilfe bei einem kleinen Spiel. Java Basics - Anfänger-Themen 19
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
R Hangman-Spiel-zufälliges Wort ermitteln Java Basics - Anfänger-Themen 4
JEP1 Java Dialog Fenster schließen Spiel Java Basics - Anfänger-Themen 0
I Simples Risiko-Spiel Java Basics - Anfänger-Themen 5
Hallolu Pong-Spiel: Schläger schneller werden lassen Java Basics - Anfänger-Themen 9
M Java Spiel wie Wer wird Millionär Java Basics - Anfänger-Themen 1
T Startbildschirm für ein Spiel erstellen Java Basics - Anfänger-Themen 0
Z Kein überprüfen des gesamten Arrays möglich.(Viergewinnt Spiel) Java Basics - Anfänger-Themen 6
G Ufo Spiel programmieren Java Basics - Anfänger-Themen 13
C Java Spiel Java Basics - Anfänger-Themen 3
J Spiel programmieren Java Basics - Anfänger-Themen 16
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
B Memory Spiel Java Basics - Anfänger-Themen 29
J Memory-Spiel Aktivierung der Methode mit Timer Java Basics - Anfänger-Themen 44
Kamy Ein einfaches "Vier Gewinnt" Spiel für Anfängerin Java Basics - Anfänger-Themen 51
A Breakout-Spiel , Ball mit Platten abprallen lassen Java Basics - Anfänger-Themen 1
S Spiel programmieren mit Java Java Basics - Anfänger-Themen 11
Olis Erste Schritte Simples Memory Spiel möglich? Java Basics - Anfänger-Themen 1
J Spiel mit Button klick starten Java Basics - Anfänger-Themen 9
C Rekursives Backtracking beim Spiel Peg Java Basics - Anfänger-Themen 22
M Spiel programmieren Java Basics - Anfänger-Themen 16
Spencer Reid Feedback zu kleinem Spiel Java Basics - Anfänger-Themen 4
kokojamboo92 Spiel programmieren Java Basics - Anfänger-Themen 1
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
I Spiel Java Basics - Anfänger-Themen 34
H ein einfaches Tic Tac Toe Spiel Java Basics - Anfänger-Themen 1
I Spiel programmieren. Java Basics - Anfänger-Themen 16
B Hilfe bei Escape - Spiel Java Basics - Anfänger-Themen 6
S Java-Spiel Java Basics - Anfänger-Themen 2
M Nim-Spiel geht in den negativen Bereich Java Basics - Anfänger-Themen 1
K Klassen Registrierungsseite für ein Spiel Java Basics - Anfänger-Themen 6
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 3
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 2
M Brauche Tipps für ein Spiel Java Basics - Anfänger-Themen 4
S Probleme mit GamGrid Spiel-Erstellung => Actor reagiert nicht auf Tastatur Java Basics - Anfänger-Themen 2
Mxxxt Mosaik Spiel - Steuerpanel wird nicht angezeigt Java Basics - Anfänger-Themen 5
M Erste Schritte Zufallszahl Spiel Problem Java Basics - Anfänger-Themen 7
Z Erste Schritte Kleines 2D. Spiel Objekt Bewegung funktioniert nicht Java Basics - Anfänger-Themen 2
H Spiel Kniffel: Gesamtes Array untersuchen. Java Basics - Anfänger-Themen 15
Tacofan Hangman als fertiges Spiel Java Basics - Anfänger-Themen 7
M Array und Objektorientierung? - TicTacToe Spiel Java Basics - Anfänger-Themen 43
C Klassen Sudoku-Spiel Werte werden nicht gesetzt Java Basics - Anfänger-Themen 4
K Kleines Spiel auf Java programmieren Java Basics - Anfänger-Themen 2
W Tic Tac Toe Spiel ohne Arrays Java Basics - Anfänger-Themen 7
S Im objektorientiertem "Spiel" kämpfen Java Basics - Anfänger-Themen 3
I Klassen Umsetzungsfrage zu Spiel "Zuul" Java Basics - Anfänger-Themen 3
F Mastermind Spiel Java Basics - Anfänger-Themen 9
H Liste ausgeben (Spiel Hey Fisch (software-challenge) ändern Anzahl Fische) Java Basics - Anfänger-Themen 1
F Game-Engine für textbasierendes Spiel: Architektur? Java Basics - Anfänger-Themen 9
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
J Java Spiel Zufallsauswahl für Zugbeginn Java Basics - Anfänger-Themen 3
J Frage Antwort Spiel - Wie Zeitcountdown realisieren? Java Basics - Anfänger-Themen 2
L Erste Schritte Spiel: Glückliches Sieben Java Basics - Anfänger-Themen 3
T Hangman spiel Java Basics - Anfänger-Themen 5
J 2 Pc's - Spiel gegeneinander ?! Java Basics - Anfänger-Themen 3
V Spiel Programmieren Java Basics - Anfänger-Themen 9
P 2D-Spiel und Bildschirmgröße Java Basics - Anfänger-Themen 2
O Methoden Fehlermeldung(Illegal start of expression) bei 4-Gewinnt-Spiel Java Basics - Anfänger-Themen 5
T Blöcke für ein Jump and Run Spiel Java Basics - Anfänger-Themen 8
S 2D-Spiel mit Threads... Java Basics - Anfänger-Themen 3
S 2D-Spiel im Vollbild an größe anpassen? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben