# Gesellschaftsspiele programmieren



## joshly (19. Aug 2007)

huhu 

ich muss für die Uni drei Spiele programmieren und bin inzwischen in den drei Spielen an die Grenze gestoßen, dass ich nicht mehr weiter weiß:-/ Wär lieb, wenn ihr mich helfen könntet. Also ich fang mal mit dem einen an. 

Zahlraten: Hier sagt er mir immer, dass eine non static variable cannot be referenced from a static backgound. Soo ich dachte dass this löst das Problem, aber dem is nicht so:-/


```
public class ZahlRaten{
	int limit;
	int max;
	int pc;
	int zahl;
	int geschaetzteZahl;
	int punkte;

public static void main (String [] args){
ZahlRaten number=new ZahlRaten();
number.einstellungen();
number.spiel();}

public void einstellungen(){ //Schwierigkeitsgrad einstellen
System.out.println ("Geben Sie eine 1 ein, wenn Sie ein leichtes Spiel spielen möchten oder eine 2, wenn es ruhig etwas schwerer sein darf?");
	limit=Tools.intEingabe();
if (limit==1){
	max=100;
	zahl=Tools.random (max);}
else {
	max =1000;
	zahl=Tools.random (max);}
}


public static void Spiel(){
	System.out.println("Geben Sie eine 1 ein, wenn Sie gegen einen anderen Menschen, eine 2, wenn sie gegen den Computer spielen möchten!");
	pc=Tools.intEingabe();

if (pc==1){//Spiel gegen den PC
System.out.println("Geben Sie nun Ihren ersten Zahlenvorschlag ein!");
geschaetzteZahl=Tools.intEingabe();
punkte=100; //Jetzt kommt der erste Versuch
if (geschaetzteZahl<=zahl){System.out.println("Sie haben noch 9 Versuche und die gesuchte Zahl liegt im Intervall 0/" + geschaetzteZahl);	
	punkte=punkte-10;}
if (geschaetzteZahl>=zahl){System.out.println("Sie haben noch 9 Versuche und die gesuchte Zahl liegt im Intervall " + geschaetzteZahl + " / " + max);
	punkte=punkte-10;}
if (geschaetzteZahl==zahl) {System.out.println("Sie haben die gesuchte Zahl gefunden.");
	punkte=punkte+100;
	System.out.println ("Ihr neuer Punktestand ist:" + punkte);}
}//If-Anweisung geschlossen
} 

}//Klasse geschlossen
```

und dann hab ich noch das hier. TicTacToe solls sein. Da meint er immer das was mit meinen Klammern zum Schluss nicht stimmt und die WhileBedingung nicht i.o. sind. Weiß aber nicht was ich ändern soll. Find den Fehler einfach nich.


```
public class LineThem {

public String [][] spielfeld=new String [3] [3];
public String [][]spielfeld1=new String [3][3];

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


public void spiel (){
for (int zeile = 0; zeile < spielfeld.length; zeile++ )
    {System.out.print("Zeile " + zeile + ": ");
      for (int spalte=0; spalte < spielfeld[zeile].length; spalte++ )
        System.out.print( spielfeld[zeile][spalte] + " ");
      System.out.println(); }
do {
System.out.prinln("Spieler 1, bitte geben Sie die x-Koordinate ihres gewünschten Feldes an!");
int x1=Tools.intEingabe();
System.out.println ("Spieler 1, bitte geben Sie die y-Koordinate ihres gewünschten Feldes an!");
int y1=Tools.intEingabe();
spielfeld [x1] [y1] = "X";
System.out.println(" Spieler 2, bitte geben Sie die X-Koordinate ihres gewünschten Feldes an!");
int x2=Tools.intEingabe();
System.out.println(" Spieler 2, bitte geben Sie die Y-Koordinate ihres gewünschten Feldes an!");
spielfeld [x2][y2]= "O";

if (spielfeld[x1][y1]==spielfeld[x2][y2]){
System.out.println ("Bitte wählen Sie nochmals Spieler 2. Geben Sie ihre x-Koordinate an!");
x2 = Tools.intEingabe();
System.out.println ("Bitte geben Sie die y-Koordinate ein!");
y2=Tools.intEingabe();
spielfeld[x2][y2]="O";

for (int zeile=0; zeile <spielfeld.length; zeile++)
	{system.out.println ("Zeile" + zeile + " : " );
	for (int spalte; spalte<spielfeld.length;spalte++)
	{System.out.println (spielfeld [zeile] [spalte ] + "    ");}}}

while (
((spielfeld[0][0]!=spielfeld [0][1])AND (spielfeld[0][0]!=spielfeld [0][2])) OR 
((spielfeld[1][0]!=spielfeld [1][1])AND (spielfeld[1][0]!=spielfeld [1][2])) OR
((spielfeld[2][0]!=spielfeld [2][1])AND (spielfeld[2][0]!=spielfeld [2][2])) OR
((spielfeld[0][0]!=spielfeld [1][0])AND (spielfeld[0][0]!=spielfeld [2][0])) OR
((spielfeld[0][1]!=spielfeld [1][1])AND (spielfeld[0][1]!=spielfeld [2][1])) OR
((spielfeld[0][2]!=spielfeld [1][2])AND (spielfeld[0][2]!=spielfeld [2][2])) OR
((spielfeld[0][0]!=spielfeld [1][1])AND (spielfeld[0][0]!=spielfeld [2][2])) OR
((spielfeld[0][2]!=spielfeld [1][1])AND (spielfeld[0][2]!=spielfeld [2][0])));
System.out.println ("Noch ist das Spiel nicht gewonnen.");
}
}
}
```

Weiß, dass das viel zu lesen ist, aber würde mich freuen, wenn mir einer von euch helfen kann.
LG JDY[/code]


----------



## Leroy42 (19. Aug 2007)

Im ersten Programm

```
public static void Spiel(){
```
ändern in

```
public void spiel(){
```

Im 2. Programm die *AND*s durch *&&* ersetzen.


----------



## merlin2 (19. Aug 2007)

Die *OR*s also demnach durch durch *||*.


----------



## joshly (19. Aug 2007)

supi
dankeschön. Weiß gar nicht warum ich da public static void stehen hatte. Zu dem zweiten. Bei uns in der Uni meinten die dass man das als AND und OR schreiben kann. Geht das gar nicht? Also wirklich nie?? Ich mein warum sagen die uns dann sowas?


----------



## Drake (20. Aug 2007)

Hallo

vielleicht geht es um das Prinzip des selbstständigen Lernens, vielleicht auch ein Schalg mit dem Zaunpfahl zumindestens EINEN Blick in die Insel zu werfen  oder der Unterschied zwischen Pseudocode und dem Programiersprachen spezifischen.

Alternativ soll es auch helfen, Code nicht einfach nur zu ergooglen und zu kopieren, sondern zu verstehen und womöglich sogar selber zu erarbeiten.

Keine Ahnung warum, da musst du schon deinen Prof fragen, wobei es sein kann, dass du dich bis Oktober gedulden musst, bis das neue Semester wieder anfängt.


----------



## joshly (20. Aug 2007)

ich hab den Code ganz allein geschrieben  deshalb funkt er auch noch nicht richtig:-/ . Mach meine HA's immer selbst


----------



## Drake (21. Aug 2007)

Hallo

nimms nicht persönlich, es gibt einige Stichworte die mich dazu bringen, bestimmte Reaktionen zu provozieren und ab und zu reagiere ich vielleicht etwas über.


----------



## Apo (21. Aug 2007)

Du hast aber schon recht, Drake!
Sich mal kurz mit "kleinen" Büchern wie "Java ist auch eine Insel" zu beschäftigen, müsste ausreichen für seine Sachen. Ich habe im Studium auch erst Java "gelernt". Aber wenn ich nur das gemacht hätte, was die Professoren von mir wollten, hätte ich NIE richtig die OOP verstanden. Etwas Eigeninitiative schadet halt nichts. Was jetzt bitte nicht als Kritik zu verstehen ist, aber Sachen wie das "AND" veranlassen mich zu der Aussage. 
So genug nun. 

ps.: Und ich mache meine Übungsaufgaben für die Uni nicht immer selber ... nur so nebenbei


----------



## joshly (21. Aug 2007)

mhhh wenn die uns in der Uni sagen, dass man AND und OR in den Quelltext schreiben kann, mach ich das auch. Warum sollte ich auch dran zweifeln, dass das nich i.O.ist. Na ja is ja auch wurscht. Ich finde ich hab mich mit dem Zeug lang genug beschäftigt und werdes wahrscheinlich auch weiterhin noch tun müssen. 

Ist eben schwierig, wenn das Interesse dafür nicht da ist.


----------

