Plexo
0
Hallo,
wir haben in der Uni ein Java-Primspiel, für das man einen eigenen Spieler programmieren kann.
Kurze Erklärung des Spiels:
- Am Anfang hat man Zahlen von 1 bis n.
- Es spielen immer zwei Spieler gegeneinander.
- Es gibt zwei Runden. In der ersten Runde fängt der erste Spieler an, in der zweiten Runde fängt der zweite Spieler an.
- Jeder Spieler zieht eine Zahl. Der Gegenspieler bekommt daraufhin die vorhandenen Teiler. (Bsp: Spieler 1 zieht 6, der Gegenspieler bekommt 2 + 3)
- Man kann eine Zahl nur einmal ziehen. Eine gezogen bzw. erhaltene Zahl fällt aus der Liste.
- Wenn alle Zahlen gezogen wurden, dann ist das Spiel vorbei.
- Alle erhaltenen Zahlen werden summiert.
- Der Spieler mit der höheren Summe gewinnt.
Das sollte als Erklärung reichen. Das Spielprinzip ist eigentlich ziemlich simpel.
Ich hatte jetzt einen Spieler mit folgender Strategie entwickelt.
Ich ziehe immer die Zahl mit der größten Differenz zwischen der Zahl und den vorhandenen Teilern dieser Zahl.
Diese Strategie scheint auch ganz gut zu sein. Allerdings frage ich mich, ob man daran noch etwas verbessern kann. Falls jemand Verbesserungsvorschläge hatte, dann darf er / sie diese gerne posten.
Hier noch ein kleiner Ausschnitt:
wir haben in der Uni ein Java-Primspiel, für das man einen eigenen Spieler programmieren kann.
Kurze Erklärung des Spiels:
- Am Anfang hat man Zahlen von 1 bis n.
- Es spielen immer zwei Spieler gegeneinander.
- Es gibt zwei Runden. In der ersten Runde fängt der erste Spieler an, in der zweiten Runde fängt der zweite Spieler an.
- Jeder Spieler zieht eine Zahl. Der Gegenspieler bekommt daraufhin die vorhandenen Teiler. (Bsp: Spieler 1 zieht 6, der Gegenspieler bekommt 2 + 3)
- Man kann eine Zahl nur einmal ziehen. Eine gezogen bzw. erhaltene Zahl fällt aus der Liste.
- Wenn alle Zahlen gezogen wurden, dann ist das Spiel vorbei.
- Alle erhaltenen Zahlen werden summiert.
- Der Spieler mit der höheren Summe gewinnt.
Das sollte als Erklärung reichen. Das Spielprinzip ist eigentlich ziemlich simpel.
Ich hatte jetzt einen Spieler mit folgender Strategie entwickelt.
Ich ziehe immer die Zahl mit der größten Differenz zwischen der Zahl und den vorhandenen Teilern dieser Zahl.
Diese Strategie scheint auch ganz gut zu sein. Allerdings frage ich mich, ob man daran noch etwas verbessern kann. Falls jemand Verbesserungsvorschläge hatte, dann darf er / sie diese gerne posten.
Hier noch ein kleiner Ausschnitt:
GrußBoard is set up with numbers up to 200
Player "Joe Public 2" used 4 ms. for the move.
Player "Joe Public 2" made a move and took 199
Player "GreedyPlayer" gets 1
Player "GreedyPlayer" used 1 ms. for the move.
Player "GreedyPlayer" made a move and took 200
Player "Joe Public 2" gets 2, 4, 5, 8, 10, 20, 25, 40, 50, 100
Player "Joe Public 2" used 3 ms. for the move.
Player "Joe Public 2" made a move and took 197
Player "GreedyPlayer" gets nothing.
Player "GreedyPlayer" used 0 ms. for the move.
Player "GreedyPlayer" made a move and took 198
Player "Joe Public 2" gets 3, 6, 9, 11, 18, 22, 33, 66, 99
Player "Joe Public 2" used 3 ms. for the move.
Player "Joe Public 2" made a move and took 193
Player "GreedyPlayer" gets nothing.
Player "GreedyPlayer" used 0 ms. for the move.
Player "GreedyPlayer" made a move and took 196
Player "Joe Public 2" gets 7, 14, 28, 49, 98
Player "Joe Public 2" used 3 ms. for the move.
Player "Joe Public 2" made a move and took 191
Player "GreedyPlayer" gets nothing.
Player "GreedyPlayer" used 1 ms. for the move.
Player "GreedyPlayer" made a move and took 195
Player "Joe Public 2" gets 13, 15, 39, 65