-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathOXOModel.java
More file actions
117 lines (96 loc) · 2.76 KB
/
OXOModel.java
File metadata and controls
117 lines (96 loc) · 2.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import java.util.*;
class OXOModel
{
// Could have used a 2D array, but in some situations it might be useful to be dynamic !
// Below variables only accessible in OXOModel //
private ArrayList<ArrayList<OXOPlayer>> rows;
private ArrayList<OXOPlayer> players;
private OXOPlayer currentPlayer;
private OXOPlayer winner;
private boolean gameDrawn;
private OXOView gameView;
private int winThreshold;
public OXOModel(int numberOfRows, int numberOfColumns, int winThresh, OXOView view)
{
winThreshold = winThresh;
gameView = view;
rows = new ArrayList<ArrayList<OXOPlayer>>();
for(int i=0; i<numberOfRows; i++)
{
ArrayList<OXOPlayer> newRow = new ArrayList<OXOPlayer>(numberOfColumns);
for(int j=0; j<numberOfColumns ;j++) newRow.add(null);
rows.add(newRow);
}
players = new ArrayList<OXOPlayer>();
}
public int getNumberOfPlayers()
{
return players.size();
}
public void addPlayer(OXOPlayer player)
{
players.add(player);
}
public OXOPlayer getPlayerByNumber(int number)
{
return players.get(number);
}
public OXOPlayer getWinner()
{
return winner;
}
public void setWinner(OXOPlayer player)
{
winner = player;
if(gameView != null) gameView.drawBoard(this);
}
public OXOPlayer getCurrentPlayer()
{
return currentPlayer;
}
public void setCurrentPlayer(OXOPlayer player)
{
currentPlayer = player;
if(gameView != null) gameView.drawBoard(this);
}
public int getNumberOfRows()
{
return rows.size();
}
public ArrayList<OXOPlayer> getRow(int rowNumber)
{
return rows.get(rowNumber);
}
public int getNumberOfColumns()
{
int maxRowLength = 0;
for(int i=0; i<rows.size() ;i++) {
if(rows.get(i).size() > maxRowLength) maxRowLength = rows.get(i).size();
}
return maxRowLength;
}
public OXOPlayer getCellOwner(int rowNumber, int colNumber)
{
if((rowNumber > this.getNumberOfRows()-1) || (colNumber > rows.get(rowNumber).size()-1)) return null;
else return rows.get(rowNumber).get(colNumber);
}
// Function to add X or O to board
public void setCellOwner(int rowNumber, int colNumber, OXOPlayer player)
{
rows.get(rowNumber).set(colNumber, player);
if(gameView != null) gameView.drawBoard(this);
}
public int getWinThreshold()
{
return winThreshold;
}
public void setGameDrawn()
{
gameDrawn = true;
if(gameView != null) gameView.drawBoard(this);
}
public boolean isGameDrawn()
{
return gameDrawn;
}
}