PlayField.java 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import java.util.Random;
  2. public class PlayField {
  3. private final int[] fields = new int[9];
  4. private final Random move = new Random();
  5. public void setPos(int pos, int player) {
  6. fields[pos] = player;
  7. }
  8. public boolean isDraw() {
  9. for(int i = 0; i < 9; i++) {
  10. if(fields[i] == 0) {
  11. return false;
  12. }
  13. }
  14. return true;
  15. }
  16. public boolean hasWon(int player) {
  17. // Waagrecht
  18. for(int i = 0; i < 9; i += 3) {
  19. if(fields[i] == player && fields[i + 1] == player && fields[i + 2] == player) {
  20. return true;
  21. }
  22. }
  23. // Senkrecht
  24. for(int i = 0; i < 3; i++) {
  25. if(fields[i] == player && fields[i + 3] == player && fields[i + 6] == player) {
  26. return true;
  27. }
  28. }
  29. // Diagonal
  30. if(fields[4] == player) {
  31. if(fields[0] == player && fields[8] == player) {
  32. return true;
  33. }
  34. if(fields[2] == player && fields[6] == player) {
  35. return true;
  36. }
  37. }
  38. return false;
  39. }
  40. public void reset() {
  41. for(int i = 0; i < 9; i++) {
  42. fields[i] = 0;
  43. }
  44. }
  45. // the opponent player moves
  46. // updates the field
  47. public void oppMove() {
  48. while(true) {
  49. int pos = move.nextInt(9);
  50. if(isFree(pos)) {
  51. setPos(pos, 2);
  52. return;
  53. }
  54. }
  55. }
  56. public boolean isFree(int pos) {
  57. return fields[pos] == 0;
  58. }
  59. private void printSlot(String sign) {
  60. System.out.print("[" + sign + "]");
  61. }
  62. public void print() {
  63. for(int y = 0; y < 3; y++) {
  64. for(int x = 0; x < 3; x++) {
  65. int a = fields[x + 3 * y];
  66. if(a == 0) {
  67. printSlot(" ");
  68. } else if(a == 1) {
  69. printSlot("x");
  70. } else {
  71. printSlot("o");
  72. }
  73. }
  74. System.out.println(); // Zeilenumbruch
  75. }
  76. }
  77. }