Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Informatik in der Schule » BlueJ » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen BlueJ
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Coolio
unregistriert
BlueJ Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
Wir arbeiten gerade mit BlueJ und sollen das Spiel verflixte 7 programmieren.
Ich habe die Klassen Spiel, SpielerA, SpielerB, Würfel und Geldtopf.
Beim Würfel habe ich jetzt die Methode würfeln, es wir zufällig eine Zahl zwischen 1 und 6 ausgeprintet. Wie greife ich von dem Spieler auf die Würfelzahlen/Zufallszahl vom Würfel zu?
Wie sieht die Methode aus, mit der ich eine Variable a gleichsetze mit dem Gewürfelten?

Meine Ideen:
Keine Ideen.^^
26.03.2011 19:09
3FingerbreitNougat
unregistriert
RE: BlueJ Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Also entweder du erstellst für jeden Spieler einen eigenen Würfel oder du hast einen Würfel für alle.

Du erstellst ihn und würfelst.
27.03.2011 01:18
Ramanujan
Grünschnabel


Dabei seit: 27.03.2011
Beiträge: 3

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

ich habe einen würfel für alle erstellt und dieser würfel besitzt die methode würfeln (zufallszahl von 1 bis 6);
jetzt will ich aber, dass ein spieler mit diesem würfel würfelt; er soll auf den wert des würfeln zurückgreifen oder so
wie mache ich das?
wie sieht es in der programmiersprache aus?
Oder ein anderes Problem:
Spieler A besitzt zu Anfang ein Kapital von 2000 Euro, und setzt am Anfang einer jeden Runde einen Einsatz genau so wie Spieler B.
Er gibt den Einsatz ein, und es wird der Betrag von seinem kapital abgezogen....jetzt will ich, dass dieses gesetzte geld in den spieltopf kommt (auch das gesetzte des spielers B) ; es soll in den topf kommen, und der gewinner der runde, bekommt das geld des topfes. Wie mache ich, dass das gesetzte geld von der Methode void setzeEinsatz(int Einsatz) in den Topf kommt?
Danke
27.03.2011 12:10 Ramanujan ist offline Beiträge von Ramanujan suchen Nehmen Sie Ramanujan in Ihre Freundesliste auf
3FingerbreitNougat
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
Original von Ramanujan
ich habe einen würfel für alle erstellt und dieser würfel besitzt die methode würfeln (zufallszahl von 1 bis 6);
jetzt will ich aber, dass ein spieler mit diesem würfel würfelt; er soll auf den wert des würfeln zurückgreifen oder so
wie mache ich das?
wie sieht es in der programmiersprache aus?

Du erstellst in deiner Klasse Spiel, die alles managed eine Instanz von Würfel. In der Klasse Spiel sind auch noch alle Spieler drin und was du sonst noch brauchst. Nennen wir den Würfel spielWürfel.

Vom Spieler aus greifst du dann auf den spielWürfel zu und würfelst. Die Funktion würfeln sollte die Augenzahl zurückgeben. Weiterhin könntest du dem Würfel ein Attribut geben: letzteAugenzahl. Sie speichert die letzte gewürfelte Augenzahl smile Beim würfeln muss natürlich dieser Wert dann immer geschrieben werden.
So kann man auch nach einem Würfelwurf(angenommen dieser hat keinen Rückgabetyp) noch auf die Augenzahl zürückgreifen.
Wenn die Funktion würfeln allerdings einen Rückgabetyp hat, z.b. byte welche die Augenzahl zurückgibt und du kein Attribut letzteAugenzahl einsetzt, hat nur der Spieler der gewürfelt hat, die Augenzahl vorliegen.

Ich hoffe soweit verständlich.

Poste mal einen Beispielcode, dann kann ich dir evtl. besser weiterhelfen.

Zitat:
Original von Ramanujan
Spieler A besitzt zu Anfang ein Kapital von 2000 Euro, und setzt am Anfang einer jeden Runde einen Einsatz genau so wie Spieler B.
Er gibt den Einsatz ein, und es wird der Betrag von seinem kapital abgezogen....jetzt will ich, dass dieses gesetzte geld in den spieltopf kommt (auch das gesetzte des spielers B) ; es soll in den topf kommen, und der gewinner der runde, bekommt das geld des topfes. Wie mache ich, dass das gesetzte geld von der Methode void setzeEinsatz(int Einsatz) in den Topf kommt?
Danke

Du kannst in der Klasse Spiel ein Attribut topfInhalt machen und es so verwalten. Allerdings ist das nicht sehr schön.
Schöner wäre eine Klasse Topf deren Instanz dann als Attribut in der Klasse Spiel Verwendung findet. Darauf kannst du dann Funktionen definieren wie gebeSpielerTopfInhalt(Spieler s) oder ähnliches. Beim setzen von Beträgen musst du in der Funktion setzeGeld eines Spielers den Betrag von seinem Konto abziehen und den selben Betrag zum Topf mittels topfInhalt.einzahlen(int betrag) hinzufügen.
Wann welcher Spieler welches Geld bekommt, sollte in deiner Hauptschleife passieren wo entschieden wird welcher Spieler die Runde gewinnt.

MfG
3FBN
27.03.2011 18:37
Ramanujan
Grünschnabel


Dabei seit: 27.03.2011
Beiträge: 3

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

siehe unten

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Ramanujan: 27.03.2011 20:00.

27.03.2011 19:57 Ramanujan ist offline Beiträge von Ramanujan suchen Nehmen Sie Ramanujan in Ihre Freundesliste auf
Ramanujan
Grünschnabel


Dabei seit: 27.03.2011
Beiträge: 3

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

public void Würfeln()
{
int würfelsumme = (würfelzahl1.nextInt(6)+1)+(würfelzahl2.nextInt(6)+1); //Zufallsaugenzahl
int wurfsumme1;
int wurfzähler1;
if(würfelsumme!=7)
{
wurfzähler++;
wurfzähler1 = wurfzähler;
wurfsumme = wurfsumme+ würfelsumme;
wurfsumme1 = wurfsumme;
System.out.println(wurfzähler+"-ter Wurf: Sie haben eine "+würfelsumme+" gewürfelt; Summe ist "+wurfsumme);
}
else
{
System.out.println("Sie haben eine 7 gewürfelt, ihr Spielzug ist hiermit beendet.");
wurfsumme = 0;
wurfzähler = 0;
}
}
1.) Wie erstelle ich denn solche Instanzen in der Klasse Spiel?
2.) Wie greife ich vom Spieler aus auf den Würfel zu und würfel dann?
Erklärung des Spiels: SpielerA und SpielerB besitzen am Anfang 2000 Euro Kapital. Nun setzt SpielerA einen Einsatz (mindestens 200) und SpielerB setzt auch was, das Gesetzte kommt jetzt in den Spieltopf, in dem vorher nichts drin war. Jezt befindet sich in dem Topf das Gesetzte beider Spieler (die Summe beider Einsätze). Jetzt würfelt SpielerA mit 2 Würfeln, solange bis die Augenzahlensumme 7 fällt. Angenommen SpielerA würfelt 8, 12, 3, 5 und dann 7, so hat er insgesamt 5-mal gewürfelt und die Summe der Augenzahlen ist 8+12+3+5 (ohne die 7) = 28. Jetzt ist SpielerB dran, weil SpielerA ja eine 7 gewürfelt hat. SpielerB darf höchstens so oft würfeln wie SpielerA, sprich 5mal, wenn jedoch schon vorher die 7 fällt, muss er auch direkt abbrechen. Auch bei dem SpielerB werden die Augenzahlen bis auf die 7, falls er eine 7 gewürfelt hat, summiert. Nun gewinnt derjenige Spieler, dessen Augenzahlensumme dieser Runde höher ist und bekommt das Gesetzte(das Geld, das sich im Geldtopf befindet); bei Gleichstand wird noch eine Runde gespielt. Das wird jetzt solange weitergemacht bis einer kein Geld mehr hat.

Wie sieht beispielsweise so ein Programmcode aus, mit dem der Spieler auf den Würfel zugreift und würfelt, oder das Gesetzte Geld in den Topf kommt, sprich Topf greift auf Spieler zu.....
27.03.2011 19:59 Ramanujan ist offline Beiträge von Ramanujan suchen Nehmen Sie Ramanujan in Ihre Freundesliste auf
3FingerbreitNougat
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Bevor ich hier Code reinschreibe, stell doch bitte sicher dass du das Objektorientierte Modell verstehst.
Hier ein super Buch dazu. (UML kannst du vorerst auslassen)

Das sollte auch Frage 2 beantworten.

Ohne dass du das verstanden hast, sehe ich am Ende kein funktionierendes Programm.
27.03.2011 21:09
Gast Jev
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wenn du die Würfelsumme nicht in der Methode Würfeln() (die als Methode eigentlich klein geschrieben werden müsste smile ) deklarierst (also erstmalig benennst), sondern das schon am Anfang der Klasse tust, kannst du inerhalb dieser Klasse immer auf den Wert deiner letzten Würfelsumme zugreifen und sie an die Spieler(-klassen) weiterleiten.

code:
1:
2:
3:
4:
5:
6:
7:
8:
public class Würfel {
private int würfelsumme;

// Hier kommt dein Konstruktor

// Und die Methode würfeln beginnt jetzt so:
public void würfeln() 
{ int würfelsumme = (würfelzahl1.nextInt(6)+1)+(würfelzahl2.nextInt(6)+1); //Zufallsaugenzahl


Jetzt fehlt dir nur noch eine Methode, die auf die Würfelsumme zugreift.
Diese kann irgendwo innerhalb der Klasse Würfel stehen.

Beste Grüße
Jev
29.03.2011 21:33
Gast Jev
unregistriert
Egänzung Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Kleine Ergänzung:
Die Instanz der Klasse Würfel in der Klasse Spiel brauchst du natürlich weiterhin (vgl. den 2. Beitrag von "3FingerbreitNougat") und auch.

Falls dir "Java ist auch eine Insel" dabei für den Anfang zu trocken ist (so ging es mir damals) gibt es hier eine meiner Meinung nach praxisnähere Erläuterung:
u-helmich.de/inf/BlueJ/kurs11/seiten/seite01.html

Dabei solltest du unbedingt am Ende auch die theoretische Ergänzung lesen.

Ich hoffe du kommst voran:
MfG

Jev
29.03.2011 21:49
gjbljsnlkvn
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

qVFUIHnuoqcfnibü du stinkst
02.06.2017 08:30
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Informatik in der Schule » BlueJ