# Kartenspiel - Karten austeilen



## Y.Engel (18. Jan 2011)

Hallo,

ich bin dabei ein 1v1 Kartenspiel zu programmieren und hänge gerade aber an der Frage fest wie ich die karten auf die beiden spieler verteile.
Es gibt karten mit werten von 0-5 jeweils 6Stück( 6 0er, 6 1er...).  

```
public State() {
		this.pile = new int[6];
		for (int i = 0; i < 6; i++) this.pile[i] = 6;
	}
```

Hier habe ich schon einen stapel mit den karten von diesem sollen nun jedem spieler zwölf zufällige verteilt werden.
Kein Plan wie das gehen soll. Hab mir auch schon gedanken gemacht und würde es auch gern selbst rauskriegen bräcuhte aber vllt mal einen tipp.

ach ja falls euch des hilft 

```
private int[] pile;
private int[] pile;
```
Hier sind Karten und der Stapel angegeben. Vielleicht irgendwie cards.addCard und des zwölf mal ? tipps wären wichtig ich kenn mich einfach mit befehlen noch nich so gut aus .
Danke schon mal im Voraus!


----------



## Network (18. Jan 2011)

Wenn die Karty"typ"zahl begrenzt sein soll.
Alle verfügbaren Karten in einer For-Schleife in eine ArrayList packen, per "Math.random" eine dieser Karten nehmen (für jeden Spieler in einer for-Schleife mehrmals)  und den Eintrag aus dieser Liste dann auch gleich löschen...

Vieleicht geht das System auch mit einem normalen Array, ich arbeite aber meist mit ArrayLists.


----------



## darekkay (18. Jan 2011)

Ein Array mit deinen Karten füllen, und nun kannst du eine Zufallszahl zwischen 0 und array.length - 1 bestimmen. Das ist dann deine Karte. Jetzt nur noch die Karte entfernen, und so lange das ganze wiederholen, bis dein Stapel/Array leer ist.


----------



## Landei (18. Jan 2011)

Ungetestet:

```
List<Integer> stapel = new ArrayList<Integer>();
for(int wert = 0; wert < 36; wert++) {
   stapel.add(wert / 6);
}
//stapel ist jetzt (0,0,0,0,0,0,1,1,1,1,1,1,...)

java.util.Collections.shuffle(stapel);
//jetzt ist stapel "gemischt"

int[] kartenSpieler1 = new int[12];
for(int i = 0; i < 12; i++) {
   kartenSpieler1[i] = stapel.remove();
}
```


----------



## Y.Engel (18. Jan 2011)

Ok , danke für eure Hilfe schon mal hab das ganze jetzt auch irgendwie zusammengebastelt.
Der Code wirkt jetzt wahrscheinlich unbeholfen müsste aber funktionieren.

```
public State() {
		/*this.pile = new int[6];
		for (int i = 0; i < 6; i++) this.pile[i] = 6;
		Math.random();
		
		int[] cardsP1 = new int[12];
		for(int a =0; a<12; a++){
			Math.random();
		}*/
		
		//Erstellt den "pile" mit je 6 mal 0,1,2,3,4,5 allerdings noch geordnet
		 
		ArrayList<Integer>pile = new ArrayList<Integer>();
		int a = 0;
		while(a<6){
			for (int i = 0; i<6;i++){
				pile.add(a);
			}
			a++;		
		}
		// Mischt den "pile"
		 
		java.util.Collections.shuffle(pile);
		
		//gibt beiden Spielern 12 Karten und entfernt diese gleichzeitig aus dem "Pile" 
		int[] kartenSpieler1 = new int[12];
		for(int i = 0; i < 12; i++) {
		   kartenSpieler1[i] = pile.remove(i);}
		
		int[] kartenSpieler2 = new int[12];
		for(int i = 0; i < 12; i++) {
		   kartenSpieler2[i] = pile.remove(i);}
		
		
	}
```


----------

