Würfelspiel

Status
Nicht offen für weitere Antworten.

Ocean-Driver

Bekanntes Mitglied
Hallo,

Ich hab bereits ein Programm geschrieben, welches die größsten von drei Zahlen auswertet und ob zwei Zahlen gleichgroß sind, oder alle drei gleichgroß sind.

jetzt würde ich gern ein Würfelspiel schreiben.
Nur, welche möglichkeit gibt es?

Ich hab mir das ganze so vorgestellt:

Es wird die Anzahl von Nutzern eingeben ( 1-3 erstmal nur)

Das ganze will ich inner Console schreiben.
Nur wie kann ich eine zufällige Zahl erzeugen?

Vieleicht ist es ja als Struktogramm besser zu verstehen:

- Eingabe von Mitspielern
- Wenn 3 dann generiere drei Zufallszahlen und weiß diese zahl1, zahl2, zahl3 zu
- Wenn 2 dann zahl = 0 und generie zwei zufallszahlen für zahl1 & zahl2


Danke schonmal


P.S.
Ich hab einmal die Überprüfung in einer Classe und das Würfelprogramm in einer anderen, wie kann ich von der einen auf die andere verweisen?
 

Ocean-Driver

Bekanntes Mitglied
Hi,

und wie sieht das in etwa aus?Danke

Edit:

So hier mal mein IF & Else Konstrukot mit der Überprüfung:

(Class: Zahlenberechnung)
Code:
		if (zahl1 > zahl2)
		   {
		 
			if (zahl1 == zahl3)
		      {

		      System.out.println("Zahl1 und Zahl3 sind gleichgroß und größer als zahl2");

		      }
		   else
		      {
		       
		      if (zahl1 > zahl3)
		         {
		      System.out.println("zahl1 ist am größsten");

		         }
		      else
		         {

		           System.out.println("Zahl3 ist am größsten");

		         }
		      }
		   }
		else
		   {
		     
		   if (zahl1 == zahl2)
		      {
		        
			      if (zahl1 == zahl3) {System.out.println("Alle Zahlen sind gleichgroß");}
			      else
		      if (zahl1 > zahl3)
		         {
		           System.out.println("zahl1 und zahl2 sind gleichgroß und größer als Zahl3");

		         }
		      else
		         {
		         System.out.println("Zahl3 ist am größsten");
		 
		         }
		      }
		   else
		      {
		        

		      if (zahl2 == zahl3)
		         {
		           
		         System.out.println("zahl2 und Zahl3 sind gleichgroß und größer als zahl1");

		         }
		      else
		         {
		           

		         if (zahl2 > zahl3)
		            {
		              System.out.println("zahl2 ist am größsten");

		            }
		         else
		            {
		              System.out.println("Zahl3 ist am größsten");

		            }
		         }
		      }
		   }

(Class: Wuerfelprogramm)
Code:
package dreizahlen;
import java.util.*;

public class Wuerfelprogramm {


	public static void main(String[] args) throws Exception{
		
		Scanner s = new Scanner(System.in);
	    Random r = new Random(); 

		int zufall = r.nextInt();
		
		int mitspieler, zahl1, zahl2, zahl3;
		
		System.out.println("Bitte Geben Sie die Zahl von Mitspielern ein");
		mitspieler = s.nextInt();
		

		while (mitspieler == 1)
		{
			System.out.println("Bitte Eingabe wiederholen, das Spiel ist nur zu 2 oder zu 3 spielbar.:");
			mitspieler = s.nextInt();
		}

		
		
		switch (mitspieler)
		{
		case 2: // Hier sollte zahl1 der Wert 0 zugewiesen werden und für zahl2  und zahl3 random werte generiert werden.
		case 3: // Hier sollte allen drei Zahlen ein Random-Wert zugewiesen werden.
		default:System.out.println("Ihre eingabe ist ungültig - Das Spiel ist zu 2 oder zu 3 nutzbar.");
		
		}
		
		
		
		
	
	
	
	}

}
 
S

SlaterB

Gast
hmm, tut mir leid,
wenn du Jave lernen willst, dann bitte alleine und nicht mit der Zeit anderer,
wenn es nur eine Hausaufgabe ist, dann mache ich sie auch nicht,

lese Lehrbücher und schaue in die API
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Random.html
bzw. warte auf Antworten freundlicherer Forum-Teilnehmer ;)
(-> bitte nicht von mir auf alle schließen)
 

Ocean-Driver

Bekanntes Mitglied
Hi,

Das sind keine Hausaufgaben, die drei Zahlen Überprüfung haben wir in der Schule gemacht, nun wollte ich mir selbst daraus nen Würfelprogramm schreiben.Wobei das dreizahlen Programm in der Schule nur die größste ausgegeben hat, bei zwei großen gabs dann Error.. :roll:
 
S

SlaterB

Gast
wenn jemand '1' eintippt, dann fängst du das als Fehler ab,
aber die anderen Millionen möglichen Eingaben sind alle ok?

mache lieber 'while not (2 or 3): Wiederholung'

dein switch läßt sich einfacher machen:
Zahl2 und 3 bekommen in jedem Fall Zufallswerte, das kann davor oder danach passieren,
im switch musst du nur entscheiden, was mit Zahl1 passiert,

am besten ganz ohne case:
Zahl1 vorher 0 zuweisen und dann mit einem einfachen if prüfen, ob 3 Spieler da sind,
dann Zahl1 eine Zufallszahl zuweisen,

was ist die Schwierigkeit bei der Zuweisung?
zahl2 = r.nextInt();
 

Ocean-Driver

Bekanntes Mitglied
Hi,

Code:
package dreizahlen;
import java.util.*;

public class Wuerfelprogramm {


	public static void main(String[] args) throws Exception{
		
		Scanner s = new Scanner(System.in);
	    Random r = new Random(); 

		int zufall = r.nextInt();
		
		int mitspieler, zahl1, zahl2, zahl3;
		int user1, user2, user3;
		
		System.out.println("Bitte Geben Sie die Zahl von Mitspielern ein");
		mitspieler = s.nextInt();
		

		while (!(mitspieler ==2) && !(mitspieler ==3))
		{
			System.out.println("Bitte Eingabe wiederholen, das Spiel ist nur zu 2 oder zu 3 spielbar:");
			mitspieler = s.nextInt();
		}
		

		
		
		switch (mitspieler)
		{
		case 2: 
		System.out.println("Bitte den ersten Mitspieler eingeben(vorerst nur Zahlen)");
		user1 = s.nextInt();
		System.out.println("Bitte den zweiten Mitspieler eingeben(vorerst nur Zahlen)");
		user2 = s.nextInt();
			
		zahl1 = r.nextInt(); zahl2 = r.nextInt(); zahl3 = 0; System.out.println(""+user1+" hat folgenden Wert gewürfelt: "+zahl1+"");
		System.out.println(""+user2+" hat folgenden Wert: "+zahl2+" ");
		
		case 3: zahl1 = r.nextInt(); zahl2 = r.nextInt(); zahl3 = r.nextInt();break;
		default:System.out.println("Ihre eingabe ist ungültig - Das Spiel ist zu 2 oder zu 3 nutzbar.");
		
		}
		
		
		
		
	
	
	
	}

}



nun möchte ich diese Werte mit dem Script aus der Klasse Zahlenberechnung überprüfen, wie mache ich dass?
Wie verknüpfe ich zwei Klassen unter einander?
Muss ich in der Zahlenberechnungsklasse das IF & ELSE Konstrukt noch irgendwie definieren?
Danke

mfg

P.S. Kennt einer ein gutes Tutorials wo String erklärt werden?
Danke
 
S

SlaterB

Gast
der Code zur 'Zahlenberechnung' (Zahlenvergleich?) muss in irgendeiner Operation stehen,
z.B.
public void vergleiche(int zahl1, ..){
..
}

dann lautet der Aufruf
object.vergleiche(zahl1, zahl2, zahl3);

wobei object ein Objekt der anderen Klasse ist
 

Ocean-Driver

Bekanntes Mitglied
Hi,

Ich hab die IF & ELSE Verzweigung jetzt einfach in den case-bereich eingegliediert.
Nur, jetzt muss ich noch die Strings einfügen..
Hat da einer ein Tutorial?
 

Ocean-Driver

Bekanntes Mitglied
hi,

Ich sags mal so:
Hab noch nie mit Strings gearbeitet, will aber usernamen einlesen.
Und wenn ich nen User mit Double einles, gibts folgenden Fehler:

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at dreizahlen.Wuerfelprogramm.main(Wuerfelprogramm.java:53)
 

Leroy42

Top Contributor
@OceanDriver

Deine Vorgehensweise kann Wochen dauern bevor sich
ein Ergebnis einstellt, da dir die Grundlagen absolut fehlen
und du dich bereits an mittelschwere Spielimplementationen
heranzuwagen versuchst.

Empfehlung: Arbeite dich erstmal mit einem Online-Tutorial
in die Grundlagen von Java (OO-Programmierung) anhand
der dort vorhandenen Beispielsaufgaben ein, bevor du
versuchst, solche (doch komplizierteren) eigene Aufgabenstellungen zu lösen.
 

Ocean-Driver

Bekanntes Mitglied
hi,

Hm.. In der Schule programmieren wir im Moment auf Consolen-Ebene, dort soll wohl alles nacheinander kommen.
Also es hat jetzt schon soweit funktioniert, das jeder User eine Zahl erhält und der Gewinnen ausgegeben wird + wieviel Punkte er mehr hat als die anderen.
Nur z.z. sieht id eAusgabe noch so aus:

Bitte Geben Sie die Zahl von Mitspielern ein
3
Bitte den ersten Mitspieler eingeben(vorerst nur Zahlen)
1
Bitte den zweiten Mitspieler eingeben(vorerst nur Zahlen)
1
Bitte den dritten Mitspieler eingeben(vorerst nur Zahlen)
2
1.0 hat folgenden Wert gewürfelt: -1078150876
1.0 hat folgenden Wert gewürfelt: -2032444014
2.0 hat folgenden Wert gewürfelt: 1050267504
2.0 hat gewonnen.
2.0 hat 2128418380 mehr Punkte als 1.0 und -1212255778 mehr Punkte als 1.0.

Ist das denn nur über String realisierbar?
Falls ich nämlich einen Namen (Z.B. "Daniel") eingebe, gibts folgenden Error:

Bitte Geben Sie die Zahl von Mitspielern ein
3
Bitte den ersten Mitspieler eingeben(vorerst nur Zahlen)
Daniel
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at dreizahlen.Wuerfelprogramm.main(Wuerfelprogramm.java:53)


Ich denke das liegt daran das die variable (ist ein double) damit nicht klar kommt.Deswegen würde ich shc on das ganze versuchen so zu realisieren.

P.S. Jetzt wollte ich nur ein While-Konstrukt realisieren, das einen Fehler ausgibt, wenn ein Name doppelt eingegeben wurde.

das ganze habe ich einfach hinter die Benutzereingabe gesetzt:
Code:
			while ((user1 == user2) & (user1 == user3) & (user2 == user3))
			{
				System.out.println("Bitte geben sie für jeden Mitspieler einen Individuellen Namen ein.");
				
			}


nur leider bringt das ganze garkein Resultat.Wodran könnte das liegen?
 
S

SlaterB

Gast
statt
s.nextInt();
oder
s.nextDouble()
must du offensichtlich
s.nextString()
oder
s.next()
verwenden und das Ergebnis in einen String speichern..

durch Fragen kriegt man sowas aber nicht raus,
vielleicht einmal, was stundenlang dauert,

aber solche Fragen stellen sich beim Programmieren alle 5 Min...,
also: probieren probieren probieren und vorher in der API lesen was Scanner kann
und noch vorher in einem Lehrbuch lesen was die wichtigsten Operation sind,

hier wurden sogar schon im Thread schon einige Links gepostet,
musst du nur draufklicken und lesen!..,

ohne Arbeit geht Programmieren aber nicht..

----------

> while ((user1 == user2) & (user1 == user3) & (user2 == user3))

wenn schon dann lautet die korrekte Syntax

while ((user1 == user2) && (user1 == user3) && (user2 == user3))


vielleicht aber besser oder statt und?

while ((user1 == user2) || (user1 == user3) || (user2 == user3))
 

Ocean-Driver

Bekanntes Mitglied
Hm, komisch damit geht das auch nicht.

Code:
			System.out.println("Bitte den ersten Mitspieler eingeben.");
			user1 = s.next();
			System.out.println("Bitte den zweiten Mitspieler eingeben.");
			user2 = s.next();
			System.out.println("Bitte den dritten Mitspieler eingeben.");
			user3 = s.next();
			
			while ((user1 == user2) || (user1 == user3) || (user2 == user3))
			{
				System.out.println("Bitte geben sie für jeden Mitspieler einen Individuellen Namen ein.");
				
			}


Wodrin könnte das Problem liegen?

Noch eine Frage:
Kann ich die Random Zahl auf einen Bereich einklemmen?Z.B. das nur pos. Zahlen rauskommen können?Oder nur von 1-6?
 
S

SlaterB

Gast
Strings sind Objekte, 2 Benutzereingaben sind immer verschiedene Objekte, nie ==,
der Inhalt kann gleich sein, benutze user1.equals(user2)


--------

schaue dir die Random-Klasse an, den Link habe ich bereits gepostet, soviele Operationen gibts da nicht zur Auswahl,
da wirst du schon was finden ;)

um einen Zufallsbereich weiter zu verändern kann man die Zufallszahl z.B. mit +10 verschieben,
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben