trying to draw a red line through all winning entries
This commit is contained in:
@@ -1,36 +1,69 @@
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
|
||||
public class Game {
|
||||
|
||||
int[] playfield;
|
||||
private int[] playfield;
|
||||
private boolean turnTaken = false;
|
||||
private int winningX1,winningY1,winningX2,winningY2;
|
||||
|
||||
public Game(){
|
||||
playfield = new int[9];
|
||||
}
|
||||
|
||||
public void place(int player, int position){
|
||||
if (playfield[position] == -1){
|
||||
public void place(int position, int player){
|
||||
if (playfield[position] == 0){
|
||||
playfield[position] = player;
|
||||
if (player == 1) {
|
||||
turnTaken = true;
|
||||
}
|
||||
} else {
|
||||
JOptionPane.showConfirmDialog(null,"Tile is already taken");
|
||||
JOptionPane.showInternalMessageDialog(null,"Tile is already taken");
|
||||
}
|
||||
}
|
||||
|
||||
public void computersTurn(){
|
||||
boolean isPlaced = false;
|
||||
try {
|
||||
Thread.sleep(750);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
while(!isPlaced){
|
||||
int random = (int) (Math.random() * (8 - 0 + 1) + 0);
|
||||
System.out.println(random);
|
||||
// if field is free
|
||||
if (playfield[random] == 0) {
|
||||
place(random, -1);
|
||||
isPlaced = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean checkWin() {
|
||||
//only check if winning is possible
|
||||
if (emptyTiles() < 5) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if ((playfield[i] == playfield[i + 3]) && (playfield[i] == playfield[i + 6])) {
|
||||
System.out.println("vertical");
|
||||
//horizontal
|
||||
if ((playfield[i] == playfield[i + 3] && playfield[i] != 0) && (playfield[i] == playfield[i + 6])) {
|
||||
winningX1 = 0;
|
||||
winningX2 = 3;
|
||||
winningY1 = winningY2 = i;
|
||||
return true;
|
||||
} else if ((playfield[i * 3] == playfield[i * 3 + 1]) && (playfield[i * 3] == playfield[i * 3 + 2])) {
|
||||
System.out.println("horizontal");
|
||||
}
|
||||
//vertical
|
||||
else if ((playfield[i * 3] == playfield[i * 3 + 1] && playfield[i * 3] != 0) && (playfield[i * 3] == playfield[i * 3 + 2])) {
|
||||
winningX1 = winningX2 = i;
|
||||
winningY1 = 0;
|
||||
winningY2 = 3;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return (playfield[2] == playfield[4]) && (playfield[2] == playfield[6]) || (playfield[0] == playfield[4]) && (playfield[0] == playfield[8]);
|
||||
} else {
|
||||
return false;
|
||||
//diagonal
|
||||
return (playfield[2] == playfield[4] && playfield[2] != 0) && (playfield[2] == playfield[6]) ||
|
||||
(playfield[0] == playfield[4] && playfield[0] != 0) && (playfield[0] == playfield[8]);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public int emptyTiles(){
|
||||
@@ -43,6 +76,14 @@ public class Game {
|
||||
return n;
|
||||
}
|
||||
|
||||
public boolean isTurnTaken() {
|
||||
return turnTaken;
|
||||
}
|
||||
|
||||
public void setTurnTaken(boolean turnTaken) {
|
||||
this.turnTaken = turnTaken;
|
||||
}
|
||||
|
||||
public void setPlayfield(int position, int value) {
|
||||
playfield[position] = value;
|
||||
}
|
||||
@@ -50,4 +91,20 @@ public class Game {
|
||||
public int[] getPlayfield() {
|
||||
return playfield;
|
||||
}
|
||||
|
||||
public int getWinningX1() {
|
||||
return winningX1;
|
||||
}
|
||||
|
||||
public int getWinningX2() {
|
||||
return winningX2;
|
||||
}
|
||||
|
||||
public int getWinningY1() {
|
||||
return winningY1;
|
||||
}
|
||||
|
||||
public int getWinningY2() {
|
||||
return winningY2;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user