Commit e5eb7e39 authored by 9731301's avatar 9731301

Add java doc and add some changes about choosing winner

parent 1fad4f87
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="JavadocGenerationManager">
<option name="OUTPUT_DIRECTORY" value="$PROJECT_DIR$/javadoc" />
<option name="OPTION_SCOPE" value="package" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_10" default="true" project-jdk-name="10" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_10" default="true" project-jdk-name="10" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" /> <output url="file://$PROJECT_DIR$/out" />
</component> </component>
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="63729159-695b-4499-ba7f-f31e81a0234c" name="Default Changelist" comment=""> <list default="true" id="63729159-695b-4499-ba7f-f31e81a0234c" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/out/production/MyPentago/Pentago.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/MyPentago/Pentago.class" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
...@@ -63,7 +62,8 @@ ...@@ -63,7 +62,8 @@
<workItem from="1586174700430" duration="9185000" /> <workItem from="1586174700430" duration="9185000" />
<workItem from="1586246845885" duration="2399000" /> <workItem from="1586246845885" duration="2399000" />
<workItem from="1586261785897" duration="27125000" /> <workItem from="1586261785897" duration="27125000" />
<workItem from="1586330745810" duration="2315000" /> <workItem from="1586330745810" duration="2884000" />
<workItem from="1586529900164" duration="20946000" />
</task> </task>
<servers /> <servers />
</component> </component>
...@@ -71,46 +71,54 @@ ...@@ -71,46 +71,54 @@
<option name="version" value="1" /> <option name="version" value="1" />
</component> </component>
<component name="WindowStateProjectService"> <component name="WindowStateProjectService">
<state width="1493" height="50" key="GridCell.Tab.0.bottom" timestamp="1586351258387"> <state x="259" y="75" key="ANALYSIS_DLG_com.intellij.analysis.BaseAnalysisAction$1" timestamp="1586554028945">
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state width="1493" height="50" key="GridCell.Tab.0.bottom/0.0.1536.824@0.0.1536.824" timestamp="1586351258387" /> <state x="259" y="75" key="ANALYSIS_DLG_com.intellij.analysis.BaseAnalysisAction$1/0.0.1536.824@0.0.1536.824" timestamp="1586554028945" />
<state width="1493" height="50" key="GridCell.Tab.0.center" timestamp="1586351258387"> <state x="292" y="97" key="FileChooserDialogImpl" timestamp="1586553985712">
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state width="1493" height="50" key="GridCell.Tab.0.center/0.0.1536.824@0.0.1536.824" timestamp="1586351258387" /> <state x="292" y="97" key="FileChooserDialogImpl/0.0.1536.824@0.0.1536.824" timestamp="1586553985712" />
<state width="1493" height="50" key="GridCell.Tab.0.left" timestamp="1586351258387"> <state width="964" height="37" key="GridCell.Tab.0.bottom" timestamp="1586554029065">
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state width="1493" height="50" key="GridCell.Tab.0.left/0.0.1536.824@0.0.1536.824" timestamp="1586351258387" /> <state width="964" height="37" key="GridCell.Tab.0.bottom/0.0.1536.824@0.0.1536.824" timestamp="1586554029065" />
<state width="1493" height="50" key="GridCell.Tab.0.right" timestamp="1586351258387"> <state width="964" height="37" key="GridCell.Tab.0.center" timestamp="1586554029065">
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state width="1493" height="50" key="GridCell.Tab.0.right/0.0.1536.824@0.0.1536.824" timestamp="1586351258387" /> <state width="964" height="37" key="GridCell.Tab.0.center/0.0.1536.824@0.0.1536.824" timestamp="1586554029065" />
<state width="1493" height="194" key="GridCell.Tab.1.bottom" timestamp="1586290133992"> <state width="964" height="37" key="GridCell.Tab.0.left" timestamp="1586554029064">
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state width="1493" height="194" key="GridCell.Tab.1.bottom/0.0.1536.824@0.0.1536.824" timestamp="1586290133992" /> <state width="964" height="37" key="GridCell.Tab.0.left/0.0.1536.824@0.0.1536.824" timestamp="1586554029064" />
<state width="1493" height="194" key="GridCell.Tab.1.center" timestamp="1586290133992"> <state width="964" height="37" key="GridCell.Tab.0.right" timestamp="1586554029065">
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state width="1493" height="194" key="GridCell.Tab.1.center/0.0.1536.824@0.0.1536.824" timestamp="1586290133992" /> <state width="964" height="37" key="GridCell.Tab.0.right/0.0.1536.824@0.0.1536.824" timestamp="1586554029065" />
<state width="1493" height="194" key="GridCell.Tab.1.left" timestamp="1586290133992"> <state width="1493" height="16" key="GridCell.Tab.1.bottom" timestamp="1586542893581">
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state width="1493" height="194" key="GridCell.Tab.1.left/0.0.1536.824@0.0.1536.824" timestamp="1586290133992" /> <state width="1493" height="16" key="GridCell.Tab.1.bottom/0.0.1536.824@0.0.1536.824" timestamp="1586542893581" />
<state width="1493" height="194" key="GridCell.Tab.1.right" timestamp="1586290133992"> <state width="1493" height="16" key="GridCell.Tab.1.center" timestamp="1586542893581">
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state width="1493" height="194" key="GridCell.Tab.1.right/0.0.1536.824@0.0.1536.824" timestamp="1586290133992" /> <state width="1493" height="16" key="GridCell.Tab.1.center/0.0.1536.824@0.0.1536.824" timestamp="1586542893581" />
<state x="281" y="271" key="com.intellij.ide.util.TipDialog" timestamp="1586330747078"> <state width="1493" height="16" key="GridCell.Tab.1.left" timestamp="1586542893580">
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state x="281" y="271" key="com.intellij.ide.util.TipDialog/0.0.1536.824@0.0.1536.824" timestamp="1586330747078" /> <state width="1493" height="16" key="GridCell.Tab.1.left/0.0.1536.824@0.0.1536.824" timestamp="1586542893580" />
<state x="25" y="67" key="new project wizard" timestamp="1586105483065"> <state width="1493" height="16" key="GridCell.Tab.1.right" timestamp="1586542893581">
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state x="25" y="67" key="new project wizard/0.0.1536.824@0.0.1536.824" timestamp="1586105483065" /> <state width="1493" height="16" key="GridCell.Tab.1.right/0.0.1536.824@0.0.1536.824" timestamp="1586542893581" />
<state x="281" y="271" key="com.intellij.ide.util.TipDialog" timestamp="1586529909931">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state x="281" y="271" key="com.intellij.ide.util.TipDialog/0.0.1536.824@0.0.1536.824" timestamp="1586529909931" />
<state x="25" y="67" key="new project wizard" timestamp="1586352295911">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state x="25" y="67" key="new project wizard/0.0.1536.824@0.0.1536.824" timestamp="1586352295911" />
<state x="425" y="187" key="run.anything.popup" timestamp="1586180125854"> <state x="425" y="187" key="run.anything.popup" timestamp="1586180125854">
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
......
/**
* Block Class represents a block with it cells and number
*
* @author zahra_fatehi
* @version 0.0
*/
import java.util.ArrayList; import java.util.ArrayList;
public class Block { public class Block {
private ArrayList<Cell> allCells; private ArrayList<Cell> allCells;
private int number; private int number;
private String turn;
/**
*create a list of cells for the block
*/
public Block(){ public Block(){
allCells = new ArrayList<>(); allCells = new ArrayList<>();
} }
/**
* @return number of a block
*/
public int getNumber() { public int getNumber() {
return number; return number;
} }
/**
* @param number is the number of block
*/
public void setNumber(int number) { public void setNumber(int number) {
this.number = number; this.number = number;
} }
/**
* create 9 cells for a block
*/
public void createCells(){ public void createCells(){
for (int i = 0 ; i < 9 ; i++ ){ for (int i = 0 ; i < 9 ; i++ ){
Cell cell = new Cell(); Cell cell = new Cell();
cell.setNumber(i);;
cell.setColor('O'); cell.setColor('O');
allCells.add(cell); allCells.add(cell);
} }
} }
/**
* @param turn is the field that shows how to change the position
*/
public void changePositionOfBlock(String turn){ public void changePositionOfBlock(String turn){
Cell transporterCell; Cell transporterCell;
if ( turn.equals("right")){ if ( turn.equals("right")){
...@@ -71,6 +91,9 @@ public class Block { ...@@ -71,6 +91,9 @@ public class Block {
} }
} }
/**
* @return all cells in a block
*/
public ArrayList<Cell> getAllCells() { public ArrayList<Cell> getAllCells() {
return allCells; return allCells;
} }
......
/**
*Cell Class represents a cell that has color
* this class this class has some methods to set color and checks that cell is available to take
*/
public class Cell { public class Cell {
private Character color ; private Character color ;
private int number ;
public Cell(){ public Cell(){
color = 'O'; color = 'O';
} }
public int getNumber() { /**
return number; * get color of a cell
} * @return color field
*/
public void setNumber(int number) {
this.number = number;
}
public Character getColor() { public Character getColor() {
return color; return color;
} }
/**
* @param color is the color of cell
*/
public void setColor(Character color) { public void setColor(Character color) {
this.color = color; this.color = color;
} }
/**
* checks that cell is available to take
* @return true if it is available to take and false if it is not
*/
public boolean cellIsAvailableToTake( ){
if (color.equals('O')){
return true;
}
else {
return false;
}
}
} }
...@@ -66,9 +66,18 @@ public class Pentago { ...@@ -66,9 +66,18 @@ public class Pentago {
System.out.println("***********************************"); System.out.println("***********************************");
blockNumber = bot.setBlock() ; blockNumber = bot.setBlock() ;
cellNumber = bot.setCell(blocks , blockNumber) ; cellNumber = bot.setCell(blocks , blockNumber) ;
if (chosenUser.cellIsAvailableToTake(blocks.get(blockNumber).getAllCells().get(cellNumber))) { if (blocks.get(blockNumber).getAllCells().get(cellNumber).cellIsAvailableToTake()) {
blocks.get(blockNumber).getAllCells().get(cellNumber).setColor(chosenUser.getColor()); blocks.get(blockNumber).getAllCells().get(cellNumber).setColor(chosenUser.getColor());
} }
else {
if (chosenUser.equals(user1)){
chosenUser = user2;
}
else {
chosenUser = user1;
}
continue;
}
printBlocks(blocks); printBlocks(blocks);
if (user1.isWinner(blocks)){ if (user1.isWinner(blocks)){
...@@ -91,9 +100,19 @@ public class Pentago { ...@@ -91,9 +100,19 @@ public class Pentago {
blockNumber = scanner.nextInt() - 1; blockNumber = scanner.nextInt() - 1;
System.out.println("plz enter a cell number"); System.out.println("plz enter a cell number");
cellNumber = scanner.nextInt() - 1; cellNumber = scanner.nextInt() - 1;
if (chosenUser.cellIsAvailableToTake(blocks.get(blockNumber).getAllCells().get(cellNumber))) { if (blocks.get(blockNumber).getAllCells().get(cellNumber).cellIsAvailableToTake()) {
blocks.get(blockNumber).getAllCells().get(cellNumber).setColor(chosenUser.getColor()); blocks.get(blockNumber).getAllCells().get(cellNumber).setColor(chosenUser.getColor());
} }
else {
if (chosenUser.equals(user1)){
chosenUser = user2;
}
else {
chosenUser = user1;
}
System.out.println("u can't take this block");
continue;
}
printBlocks(blocks); printBlocks(blocks);
if (user1.isWinner(blocks)){ if (user1.isWinner(blocks)){
......
/**
* User Class represents a User with its color and there is some methods to choose winner
* @author zahra_fatehi
* @version 0.0
*/
import java.util.ArrayList; import java.util.ArrayList;
public class User { public class User {
private ArrayList<Cell> takenCells; private ArrayList<Cell> takenCells;
private Character color; private Character color;
/**
* create a User with taken cells
*/
public User(){ public User(){
takenCells = new ArrayList<Cell>(); takenCells = new ArrayList<Cell>();
} }
public boolean cellIsAvailableToTake( Cell cellToChoose ){ /**
if (cellToChoose.getColor().equals('O')){ * @return color field
return true; */
}
else {
return false;
}
}
public Character getColor() { public Character getColor() {
return color; return color;
} }
/**
*
* @param color is the color of a user
*/
public void setColor(Character color) { public void setColor(Character color) {
this.color = color; this.color = color;
} }
/**
* this method checks that this user is winner or not
* @param blocks
* @return
*/
public boolean isWinner(ArrayList<Block> blocks){ public boolean isWinner(ArrayList<Block> blocks){
//choose the winner //choose the winner
// checking horizontal
int counter = 0 ; int counter = 0 ;
for( int cellIndex = 0 , blockIndex = 0; counter < 12 ; ){// checking horizental for( int cellIndex = 0 , blockIndex = 0; counter < 6 ; ){
if ( blocks.get(blockIndex).getAllCells().get(cellIndex).getColor().equals(color) if ( blocks.get(blockIndex).getAllCells().get(cellIndex).getColor().equals(color)
&& blocks.get(blockIndex).getAllCells().get(cellIndex + 1).getColor().equals(color) && blocks.get(blockIndex).getAllCells().get(cellIndex + 1).getColor().equals(color)
&& blocks.get(blockIndex).getAllCells().get(cellIndex + 2).getColor().equals(color) && blocks.get(blockIndex).getAllCells().get(cellIndex + 2).getColor().equals(color)
...@@ -36,17 +49,32 @@ public class User { ...@@ -36,17 +49,32 @@ public class User {
&& blocks.get(blockIndex + 1).getAllCells().get(cellIndex + 1).getColor().equals(color)){ && blocks.get(blockIndex + 1).getAllCells().get(cellIndex + 1).getColor().equals(color)){
return true; return true;
} }
cellIndex+=3;
counter ++ ; counter ++ ;
if (counter == 3 || counter == 9){ if (counter == 3 ){
blockIndex = 2; blockIndex = 2;
cellIndex = 0 ;
} }
if ( counter == 6){ }
counter = 0 ;
for( int cellIndex = 1 , blockIndex = 0; counter < 6 ; ){
if ( blocks.get(blockIndex).getAllCells().get(cellIndex).getColor().equals(color)
&& blocks.get(blockIndex).getAllCells().get(cellIndex + 1).getColor().equals(color)
&& blocks.get(blockIndex + 1).getAllCells().get(cellIndex -1).getColor().equals(color)
&& blocks.get(blockIndex + 1).getAllCells().get(cellIndex ).getColor().equals(color)
&& blocks.get(blockIndex + 1).getAllCells().get(cellIndex + 1).getColor().equals(color)){
return true;
}
cellIndex+=3;
counter ++ ;
if (counter == 3 ){
blockIndex = 2;
cellIndex = 1 ; cellIndex = 1 ;
blockIndex = 0 ;
} }
} }
// checking vertical
counter = 0 ; counter = 0 ;
for( int cellIndex = 0 , blockIndex = 0; counter < 12 ; ){// checking vertical for( int cellIndex = 0 , blockIndex = 0; counter < 6 ; ){
if ( blocks.get(blockIndex).getAllCells().get(cellIndex).getColor().equals(color) if ( blocks.get(blockIndex).getAllCells().get(cellIndex).getColor().equals(color)
&& blocks.get(blockIndex).getAllCells().get(cellIndex + 3).getColor().equals(color) && blocks.get(blockIndex).getAllCells().get(cellIndex + 3).getColor().equals(color)
&& blocks.get(blockIndex).getAllCells().get(cellIndex + 6).getColor().equals(color) && blocks.get(blockIndex).getAllCells().get(cellIndex + 6).getColor().equals(color)
...@@ -55,12 +83,29 @@ public class User { ...@@ -55,12 +83,29 @@ public class User {
return true; return true;
} }
counter ++ ; counter ++ ;
if ( counter == 3 || counter == 9){ cellIndex++;
if ( counter == 3){
cellIndex = 0 ;
blockIndex = 1 ; blockIndex = 1 ;
} }
if (counter == 6){ }
blockIndex = 0 ;
cellIndex = 1 ; counter = 0 ;
for( int cellIndex = 3 , blockIndex = 0; counter < 6 ; ){
if ( blocks.get(blockIndex).getAllCells().get(cellIndex).getColor().equals(color)
&& blocks.get(blockIndex).getAllCells().get(cellIndex + 3).getColor().equals(color)
&& blocks.get(blockIndex + 2).getAllCells().get(cellIndex - 3).getColor().equals(color)
&& blocks.get(blockIndex + 2).getAllCells().get(cellIndex ).getColor().equals(color)
&& blocks.get(blockIndex + 2).getAllCells().get(cellIndex + 3).getColor().equals(color)){
return true;
}
counter ++ ;
cellIndex++;
if ( counter == 3){
cellIndex = 3 ;
blockIndex = 1 ;
} }
} }
//check diagonal //check diagonal
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment