Zufallsereignis

Sogomn

Bekanntes Mitglied
Halli-hallo! Ich habe ein sehr simples Tic-Tac-Toe programm geschrieben. Bis jetzt kann man es nur gegen sich selber spielen, doch ich möchte nun einen Gegenspieler programmieren. Dieser soll nun aber nicht nach System vorgehen, sondern nach zufall ein freies Feld markieren (Also "X" oder "O" setzten).

Ich habe meinen Quellcode wegen der Länge auf Pastebin gestellt (ich hoffe, das ist erlaubt :oops:):
http://pastebin.com/raw.php?i=Xi7JyXCk

Achtung! Warscheinlich sehr unübersichtlich und in schlechtem Stil, bin neu im Umgang mit Java.



Grüße
Sogomn
 
Zuletzt bearbeitet:

Chloroplast

Bekanntes Mitglied
ohne jetzt mir den code angesehen zu haben.
ich nehme mal an, du sortierst deine felder nach x und y koordinate
dann kannst du dir mit Math.random nen zufallswert geben lassen. bei 3x3 felder wäre dass dann sowas wie
int x = (int)(Math.random*3+0.5);
int y = (int)(Math.random*3+0.5);
 

Sogomn

Bekanntes Mitglied
Mit den Koordianten funktioniert das glaub' ich nicht os gut, da ich als Felder JButtons verwende.
Aber die Idee hat mich weitergebracht. Ich glaube, man könnte den Buttons jeweils eine Nummer zuordnen und mithilfe des Zufallsgenerators auslosen und das dazugehörige Feld dann "anklicken lassen".
Vielen Dank für deine Idee, ich werd's gleich mal versuchen!
 

Chloroplast

Bekanntes Mitglied
ansonsten kannste ja die Button in ein Array packen. auch in ein mehrdimensionales :)

[EDIT]
achja, und du musst natürlich prüfen ob das feld schon markiert wurde
[/EDIT]
 
Zuletzt bearbeitet:

Sogomn

Bekanntes Mitglied
Ich hab nun so einen Code geschrieben, der grob das tut, was ich will. Nur leider wird das Ereignis einmalig ausgeführt, da ich es mit if-statements gemacht habe, und wenn die Bedingungen nicht zutreffen, wird das Ganze nicht wiederholt. Kann ich irgendwie if-statements wiederholen? Ich habe das ganze mit einer while-Schleife versucht, da bleibt das Programm aber irgendwie hängen.
Hier mein jetziger Code:

Java:
public void roll() {
		
		if(wer) {
			was = "X";
			wer = false;
		} else {
			was = "O";
			wer = true;
		}
			
			int roll = random.nextInt(9) + 1;
			
			if(roll == 1 && button1.isEnabled()) {
				button1.setText(was);
				button1.setEnabled(false);
			}
			else if(roll == 2 && button2.isEnabled()) {
				button2.setText(was);
				button2.setEnabled(false);
			}
			else if(roll == 3 && button3.isEnabled()) {
				button3.setText(was);
				button3.setEnabled(false);
			}
			else if(roll == 4 && button4.isEnabled()) {
				button4.setText(was);
				button4.setEnabled(false);
			}
			else if(roll == 5 && button5.isEnabled()) {
				button5.setText(was);
				button5.setEnabled(false);
			}
			else if(roll == 6 && button6.isEnabled()) {
				button6.setText(was);
				button6.setEnabled(false);
			}
			else if(roll == 7 && button7.isEnabled()) {
				button7.setText(was);
				button7.setEnabled(false);
			}
			else if(roll == 8 && button8.isEnabled()) {
				button8.setText(was);
				button8.setEnabled(false);
			}
			else if(roll == 9 && button9.isEnabled()) {
				button9.setText(was);
				button9.setEnabled(false);
			}
			
		}
 

Oben