Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- public class reversi {
- static boolean inv = false;
- static int flipcount = 0;
- static int flips = 0;
- static String pone = "";
- static String ptwo = "";
- static String twogo = "";
- static String onego = "";
- static String f = "";
- static boolean start = true;
- static int turn = 0;
- static String one[] = new String[8];
- static String two[] = new String[8];
- static String three[] = new String[8];
- static String four[] = new String[8];
- static String five[] = new String[8];
- static String six[] = new String[8];
- static String seven[] = new String[8];
- static String eight[] = new String[8];
- static String onet[] = new String[8];
- static String twot[] = new String[8];
- static String threet[] = new String[8];
- static String fourt[] = new String[8];
- static String fivet[] = new String[8];
- static String sixt[] = new String[8];
- static String sevent[] = new String[8];
- static String eightt[] = new String[8];
- static int check[] = new int[100];
- static int xco = 0;
- static int yco = 0;
- static int turnt;
- static int counter = 0;
- static int[] direction = new int[8];
- static int[] boarder = { 10, -10, 1, -1, +11, -11, -9, +9 };
- static String blnk = " ";
- static String blnk2 = "____";
- static String xtop = "\\__/";
- static String xbottom = "/ \\";
- static String o = "OOOO";
- static int tmp;
- static int y;
- static int z;
- static int h = 0;
- public static void main(String[] args) {
- start();
- }
- public static void start() {
- boolean c = true;
- int total = 0;
- int exes = 0;
- int ys = 0;
- for (int x = 0; x < 100; x++){
- if ((check[x] == 1) || (check[x] == 2) || (check[x] == 3)){
- total++;
- }
- if (check[x] == 1){
- exes++;
- }
- if (check[x] == 2){
- ys++;
- }
- }
- if (total == 100){
- System.out.println("Game finished! "+pone+" has "+exes+" crosses on the board!\n"+ptwo+" has "+ys+" circles on the board!");
- if (ys < exes){
- f = readLine("Congradulations "+pone+"! You won!\nWould you like to play again? ");
- } else if (ys > exes){
- f = readLine("Congradulations "+ptwo+"! You won!\nWould you like to play again? ");
- } else if (ys == exes){
- f = readLine("Congradulations both players drew! You won!\nWould you like to play again? ");
- }
- do {
- if (f.equals("yes") || f.equals("y") || f.equals("YES")){
- start = true;
- start();
- } else if (f.equals("no") || f.equals("n") || f.equals("NO")){
- System.out.println("I hope you enjoyed Othello (Reversi) by Greg Cawthorne!");
- System.exit(0);
- } else {
- f = readLine("Sorry I didn't quite get that. Would you like to play again? ");
- c = false;
- }} while (c == false);} else if ((start == false) && (turn != 0) && (inv == false)){
- System.out.print(pone+" has "+exes+" (X) tiles!\n"+ptwo+" has "+ys+" (0) tiles!\n");
- }
- inv = false;
- boolean chin = true;
- if (start == true) {
- pone = readLine("Welcome to Othello (Reversi) by Greg Cawthorne!\nPlease enter player one's name! ");
- while (pone.equals("")) {
- pone = readLine("Please enter a name for player 1 :) ");
- }
- ptwo = readLine("Player 1s name is " + pone
- + ".\nPlease enter player two's name! ");
- while (ptwo.equals("")) {
- ptwo = readLine("Please enter a name for player 2 :) ");
- }
- f = readLine("Player 2s name is "
- + ptwo
- + "\nJust press enter to begin or type something and then press enter change player names: ");
- if (false == f.equals("")) {
- start();
- }
- }
- for (int x = 0; x < 100; x++) {
- check[x] = 3;
- if (x == 9) {
- x = 89;
- }
- }
- for (int x = 0; x < 100; x = x + 10) {
- check[x] = 3;
- if (x == 90) {
- x = 9;
- }
- }
- if (start == true) {
- for (int x = 0; x < 8; x++) {
- one[x] = blnk;
- two[x] = blnk;
- three[x] = blnk;
- five[x] = blnk;
- six[x] = blnk;
- seven[x] = blnk;
- eight[x] = blnk;
- onet[x] = blnk2;
- twot[x] = blnk2;
- threet[x] = blnk2;
- fivet[x] = blnk2;
- sixt[x] = blnk2;
- sevent[x] = blnk2;
- eightt[x] = blnk2;
- check[44] = 2;
- check[45] = 1;
- check[54] = 1;
- check[55] = 2;
- if (x == 3) {
- five[x] = xtop;
- fivet[x] = xbottom;
- four[x] = o;
- fourt[x] = o;
- } else if (x == 4) {
- five[x] = o;
- fivet[x] = o;
- four[x] = xtop;
- fourt[x] = xbottom;
- } else {
- five[x] = blnk;
- fivet[x] = blnk2;
- four[x] = blnk;
- fourt[x] = blnk2;
- }
- }// end for
- } else if (turn % 2 == 0) {
- turnt = 2;
- counter = 1;
- while (chin == true) {
- onego = readLine(pone
- + ", please enter in the coordinates of where you'd like to place an (X) tile (e.g. x,y) ");
- while ((false == onego.equals("1,1"))
- && (false == onego.equals("1,2"))
- && (false == onego.equals("1,3"))
- && (false == onego.equals("1,4"))
- && (false == onego.equals("1,5"))
- && (false == onego.equals("1,6"))
- && (false == onego.equals("1,7"))
- && (false == onego.equals("1,8"))
- && (false == onego.equals("2,1"))
- && (false == onego.equals("2,2"))
- && (false == onego.equals("2,3"))
- && (false == onego.equals("2,4"))
- && (false == onego.equals("2,5"))
- && (false == onego.equals("2,6"))
- && (false == onego.equals("2,7"))
- && (false == onego.equals("2,8"))
- && (false == onego.equals("3,1"))
- && (false == onego.equals("3,2"))
- && (false == onego.equals("3,3"))
- && (false == onego.equals("3,4"))
- && (false == onego.equals("3,5"))
- && (false == onego.equals("3,6"))
- && (false == onego.equals("3,7"))
- && (false == onego.equals("3,8"))
- && (false == onego.equals("4,1"))
- && (false == onego.equals("4,2"))
- && (false == onego.equals("4,3"))
- && (false == onego.equals("4,4"))
- && (false == onego.equals("4,5"))
- && (false == onego.equals("4,6"))
- && (false == onego.equals("4,7"))
- && (false == onego.equals("4,8"))
- && (false == onego.equals("5,1"))
- && (false == onego.equals("5,2"))
- && (false == onego.equals("5,3"))
- && (false == onego.equals("5,4"))
- && (false == onego.equals("5,5"))
- && (false == onego.equals("5,6"))
- && (false == onego.equals("5,7"))
- && (false == onego.equals("5,8"))
- && (false == onego.equals("6,1"))
- && (false == onego.equals("6,2"))
- && (false == onego.equals("6,3"))
- && (false == onego.equals("6,4"))
- && (false == onego.equals("6,5"))
- && (false == onego.equals("6,6"))
- && (false == onego.equals("6,7"))
- && (false == onego.equals("6,8"))
- && (false == onego.equals("7,1"))
- && (false == onego.equals("7,2"))
- && (false == onego.equals("7,3"))
- && (false == onego.equals("7,4"))
- && (false == onego.equals("7,5"))
- && (false == onego.equals("7,6"))
- && (false == onego.equals("7,7"))
- && (false == onego.equals("7,8"))
- && (false == onego.equals("8,1"))
- && (false == onego.equals("8,2"))
- && (false == onego.equals("8,3"))
- && (false == onego.equals("8,4"))
- && (false == onego.equals("8,5"))
- && (false == onego.equals("8,6"))
- && (false == onego.equals("8,7"))
- && (false == onego.equals("8,8"))) {
- onego = readLine("Invalid position. "
- + pone
- + ", please enter in valid coordinates of where you'd like to place an (X) tile (e.g. x,y) ");
- }
- chin = false;
- String x = String.valueOf(onego.charAt(0));
- String y = String.valueOf(onego.charAt(2));
- xco = Integer.parseInt(x);
- yco = Integer.parseInt(y);
- tmp = check[xco + yco * 10];
- if ((yco == 1) && (check[xco + 10] == 0)) {
- one[xco - 1] = xtop;
- onet[xco - 1] = xbottom;
- check[xco + 10] = 1;
- } else if ((yco == 2) && (check[xco + 20] == 0)) {
- two[xco - 1] = xtop;
- twot[xco - 1] = xbottom;
- check[xco + 20] = 1;
- } else if ((yco == 3) && (check[xco + 30] == 0)) {
- three[xco - 1] = xtop;
- threet[xco - 1] = xbottom;
- check[xco + 30] = 1;
- } else if ((yco == 4) && (check[xco + 40] == 0)) {
- four[xco - 1] = xtop;
- fourt[xco - 1] = xbottom;
- check[xco + 40] = 1;
- } else if ((yco == 5) && (check[xco + 50] == 0)) {
- five[xco - 1] = xtop;
- fivet[xco - 1] = xbottom;
- check[xco + 50] = 1;
- } else if ((yco == 6) && (check[xco + 60] == 0)) {
- six[xco - 1] = xtop;
- sixt[xco - 1] = xbottom;
- check[xco + 60] = 1;
- } else if ((yco == 7) && (check[xco + 70] == 0)) {
- seven[xco - 1] = xtop;
- sevent[xco - 1] = xbottom;
- check[xco + 70] = 1;
- } else if ((yco == 8) && (check[xco + 80] == 0)) {
- eight[xco - 1] = xtop;
- eightt[xco - 1] = xbottom;
- check[xco + 80] = 1;
- } else {
- chin = true;
- System.out.print("This coordiante is already filled. ");
- }// end else
- }
- } else {
- while (chin == true) {
- turnt = 1;
- counter = 2;
- twogo = readLine(ptwo
- + ", please enter in the coordinates of where you'd like to place an (O) tile (e.g. x,y) ");
- while ((false == twogo.equals("1,1"))
- && (false == twogo.equals("1,2"))
- && (false == twogo.equals("1,3"))
- && (false == twogo.equals("1,4"))
- && (false == twogo.equals("1,5"))
- && (false == twogo.equals("1,6"))
- && (false == twogo.equals("1,7"))
- && (false == twogo.equals("1,8"))
- && (false == twogo.equals("2,1"))
- && (false == twogo.equals("2,2"))
- && (false == twogo.equals("2,3"))
- && (false == twogo.equals("2,4"))
- && (false == twogo.equals("2,5"))
- && (false == twogo.equals("2,6"))
- && (false == twogo.equals("2,7"))
- && (false == twogo.equals("2,8"))
- && (false == twogo.equals("3,1"))
- && (false == twogo.equals("3,2"))
- && (false == twogo.equals("3,3"))
- && (false == twogo.equals("3,4"))
- && (false == twogo.equals("3,5"))
- && (false == twogo.equals("3,6"))
- && (false == twogo.equals("3,7"))
- && (false == twogo.equals("3,8"))
- && (false == twogo.equals("4,1"))
- && (false == twogo.equals("4,2"))
- && (false == twogo.equals("4,3"))
- && (false == twogo.equals("4,4"))
- && (false == twogo.equals("4,5"))
- && (false == twogo.equals("4,6"))
- && (false == twogo.equals("4,7"))
- && (false == twogo.equals("4,8"))
- && (false == twogo.equals("5,1"))
- && (false == twogo.equals("5,2"))
- && (false == twogo.equals("5,3"))
- && (false == twogo.equals("5,4"))
- && (false == twogo.equals("5,5"))
- && (false == twogo.equals("5,6"))
- && (false == twogo.equals("5,7"))
- && (false == twogo.equals("5,8"))
- && (false == twogo.equals("6,1"))
- && (false == twogo.equals("6,2"))
- && (false == twogo.equals("6,3"))
- && (false == twogo.equals("6,4"))
- && (false == twogo.equals("6,5"))
- && (false == twogo.equals("6,6"))
- && (false == twogo.equals("6,7"))
- && (false == twogo.equals("6,8"))
- && (false == twogo.equals("7,1"))
- && (false == twogo.equals("7,2"))
- && (false == twogo.equals("7,3"))
- && (false == twogo.equals("7,4"))
- && (false == twogo.equals("7,5"))
- && (false == twogo.equals("7,6"))
- && (false == twogo.equals("7,7"))
- && (false == twogo.equals("7,8"))
- && (false == twogo.equals("8,1"))
- && (false == twogo.equals("8,2"))
- && (false == twogo.equals("8,3"))
- && (false == twogo.equals("8,4"))
- && (false == twogo.equals("8,5"))
- && (false == twogo.equals("8,6"))
- && (false == twogo.equals("8,7"))
- && (false == twogo.equals("8,8"))) {
- twogo = readLine("Invalid position. "
- + ptwo
- + ", please enter in valid coordinates of where you'd like to place an (O) tile (e.g. x,y) ");
- }
- chin = false;
- String x = String.valueOf(twogo.charAt(0));
- String y = String.valueOf(twogo.charAt(2));
- xco = Integer.parseInt(x);
- yco = Integer.parseInt(y);
- tmp = check[xco + yco * 10];
- if ((yco == 1) && (check[xco + 10] == 0)) {
- one[xco - 1] = o;
- onet[xco - 1] = o;
- check[xco + 10] = 2;
- } else if ((yco == 2) && (check[xco + 20] == 0)) {
- two[xco - 1] = o;
- twot[xco - 1] = o;
- check[xco + 20] = 2;
- } else if ((yco == 3) && (check[xco + 30] == 0)) {
- three[xco - 1] = o;
- threet[xco - 1] = o;
- check[xco + 30] = 2;
- } else if ((yco == 4) && (check[xco + 40] == 0)) {
- four[xco - 1] = o;
- fourt[xco - 1] = o;
- check[xco + 40] = 2;
- } else if ((yco == 5) && (check[xco + 50] == 0)) {
- five[xco - 1] = o;
- fivet[xco - 1] = o;
- check[xco + 50] = 2;
- } else if ((yco == 6) && (check[xco + 60] == 0)) {
- six[xco - 1] = o;
- sixt[xco - 1] = o;
- check[xco + 60] = 2;
- } else if ((yco == 7) && (check[xco + 70] == 0)) {
- seven[xco - 1] = o;
- sevent[xco - 1] = o;
- check[xco + 70] = 2;
- } else if ((yco == 8) && (check[xco + 80] == 0)) {
- eight[xco - 1] = o;
- eightt[xco - 1] = o;
- check[xco + 80] = 2;
- } else {
- chin = true;
- System.out.print("This coordiante is already filled. ");
- }
- }
- }// end else
- if (start == true) {
- board(one, two, three, four, five, six, seven, eight, onet, twot,
- threet, fourt, fivet, sixt, sevent, eightt);
- start = false;
- start();
- }
- check();
- board(one, two, three, four, five, six, seven, eight, onet, twot,
- threet, fourt, fivet, sixt, sevent, eightt);
- }
- public static void check() {
- for (int x = 0; x < 8 ; x++){
- direction[x] = 0;
- }
- int p = 0;
- if (check[xco + (yco * 10)] == counter) {
- for (int x = 0; x < 8; x++) {
- if (check[xco + (yco * 10) + boarder[x]] == turnt) {
- direction[x] = boarder[x];
- }
- }
- }
- for (int x = 0; x < 8; x++) {
- if (direction[x] == 0) {
- p++;
- }
- }
- if (p == 8) {
- invalidturn();
- } else {
- extra();
- }
- }
- public static void invalidturn() {
- String pic = null;
- String pic2 = null;
- System.out.print("That's not a valid turn ");
- check[xco + yco * 10] = tmp;
- if (tmp == 1){
- pic = xtop;
- pic2 = xbottom;
- } else if (tmp == 2){
- pic = o;
- pic2 = o;
- } else if (tmp == 0){
- pic = blnk;
- pic2 = blnk2;
- }
- if ((yco == 1)) {
- one[xco - 1] = pic;
- onet[xco - 1] = pic2;
- } else if ((yco == 2)) {
- two[xco - 1] = pic;
- twot[xco - 1] = pic2;
- } else if ((yco == 3)) {
- three[xco - 1] = pic;
- threet[xco - 1] = pic2;
- } else if ((yco == 4)) {
- four[xco - 1] = pic;
- fourt[xco - 1] = pic2;
- } else if ((yco == 5)) {
- five[xco - 1] = pic;
- fivet[xco - 1] = pic2;
- } else if ((yco == 6)) {
- six[xco - 1] = pic;
- sixt[xco - 1] = pic2;
- } else if ((yco == 7)) {
- seven[xco - 1] = pic;
- sevent[xco - 1] = pic2;
- } else if ((yco == 8)) {
- eight[xco - 1] = pic;
- eightt[xco - 1] = pic2;
- }
- inv = true;
- start();
- }
- public static void extra() {
- y = 0;
- z = 2;
- boolean end = false;
- for (h = h + 0; h <= 8; h++) {
- if (h == 8) {
- if (flipcount == 0){
- flipcount = 0;
- h = 0;
- invalidturn();
- }
- flipcount = 0;
- h = 0;
- board(one, two, three, four, five, six, seven, eight, onet, twot,
- threet, fourt, fivet, sixt, sevent, eightt);
- }
- if (direction[h] != 0) {
- for (y = 0; y < 8; y++) {
- if (direction[h] == boarder[y]) {
- if ((check[xco + (yco * 10) + boarder[y]] == turnt)) {
- while (end == false) {
- if ((check[xco + (yco * 10) + (boarder[y]) * z] == turnt)) {
- z++;
- } else if ((check[xco + (yco * 10)
- + (boarder[y]) * z] == counter)) {
- flipcount++;
- h++;
- end = true;
- flip(z);
- } else if ((check[xco + (yco * 10)
- + (boarder[y]) * z] == 3)
- || (check[xco + (yco * 10)
- + (boarder[y]) * z] == 0)) {
- h++;
- extra();
- }
- }
- }
- }
- }
- }
- }
- }
- public static void flip(int z) {
- String pic = null;
- String pic2 = null;
- int tmpy = yco;
- int tmpx = xco;
- if (counter == 2) {
- pic = o;
- pic2 = o;
- } else if (counter == 1) {
- pic = xtop;
- pic2 = xbottom;
- }
- for (int x = 0; x < z; x++) {
- check[xco + yco * 10 + boarder[y] * x] = counter;
- if (boarder[y] == 10) {
- tmpy = tmpy + 1;
- } else if (boarder[y] == -10) {
- tmpy = tmpy - 1;
- } else if (boarder[y] == 1) {
- tmpx = tmpx + 1;
- } else if (boarder[y] == -1) {
- tmpx = tmpx - 1;
- } else if (boarder[y] == 11) {
- tmpy = tmpy + 1;
- tmpx = tmpx + 1;
- } else if (boarder[y] == -11) {
- tmpy = tmpy - 1;
- tmpx = tmpx - 1;
- } else if (boarder[y] == 9) {
- tmpy = tmpy + 1;
- tmpx = tmpx - 1;
- } else if (boarder[y] == -9) {
- tmpy = tmpy - 1;
- tmpx = tmpx + 1;
- }
- if ((tmpy == 1)) {
- one[tmpx - 1] = pic;
- onet[tmpx - 1] = pic2;
- } else if ((tmpy == 2)) {
- two[tmpx - 1] = pic;
- twot[tmpx - 1] = pic2;
- } else if ((tmpy == 3)) {
- three[tmpx - 1] = pic;
- threet[tmpx - 1] = pic2;
- } else if ((tmpy == 4)) {
- four[tmpx - 1] = pic;
- fourt[tmpx - 1] = pic2;
- } else if ((tmpy == 5)) {
- five[tmpx - 1] = pic;
- fivet[tmpx - 1] = pic2;
- } else if ((tmpy == 6)) {
- six[tmpx - 1] = pic;
- sixt[tmpx - 1] = pic2;
- } else if ((tmpy == 7)) {
- seven[tmpx - 1] = pic;
- sevent[tmpx - 1] = pic2;
- } else if ((tmpy == 8)) {
- eight[tmpx - 1] = pic;
- eightt[tmpx - 1] = pic2;
- }
- }
- extra();
- }
- public static void board(String[] one, String[] two, String[] three,
- String[] four, String[] five, String[] six, String[] seven,
- String[] eight, String[] onet, String[] twot, String[] threet,
- String[] fourt, String[] fivet, String[] sixt, String[] sevent,
- String[] eightt) {
- System.out.println("._______________________________________");
- System.out.println("|" + eight[0] + "|" + eight[1] + "|" + eight[2]
- + "|" + eight[3] + "|" + eight[4] + "|" + eight[5] + "|"
- + eight[6] + "|" + eight[7] + "|");
- System.out.println("|" + eightt[0] + "|" + eightt[1] + "|" + eightt[2]
- + "|" + eightt[3] + "|" + eightt[4] + "|" + eightt[5] + "|"
- + eightt[6] + "|" + eightt[7] + "|8");
- System.out.println("|" + seven[0] + "|" + seven[1] + "|" + seven[2]
- + "|" + seven[3] + "|" + seven[4] + "|" + seven[5] + "|"
- + seven[6] + "|" + seven[7] + "|");
- System.out.println("|" + sevent[0] + "|" + sevent[1] + "|" + sevent[2]
- + "|" + sevent[3] + "|" + sevent[4] + "|" + sevent[5] + "|"
- + sevent[6] + "|" + sevent[7] + "|7");
- System.out.println("|" + six[0] + "|" + six[1] + "|" + six[2] + "|"
- + six[3] + "|" + six[4] + "|" + six[5] + "|" + six[6] + "|"
- + six[7] + "|");
- System.out.println("|" + sixt[0] + "|" + sixt[1] + "|" + sixt[2] + "|"
- + sixt[3] + "|" + sixt[4] + "|" + sixt[5] + "|" + sixt[6] + "|"
- + sixt[7] + "|6");
- System.out.println("|" + five[0] + "|" + five[1] + "|" + five[2] + "|"
- + five[3] + "|" + five[4] + "|" + five[5] + "|" + five[6] + "|"
- + five[7] + "|");
- System.out.println("|" + fivet[0] + "|" + fivet[1] + "|" + fivet[2]
- + "|" + fivet[3] + "|" + fivet[4] + "|" + fivet[5] + "|"
- + fivet[6] + "|" + fivet[7] + "|5");
- System.out.println("|" + four[0] + "|" + four[1] + "|" + four[2] + "|"
- + four[3] + "|" + four[4] + "|" + four[5] + "|" + four[6] + "|"
- + four[7] + "|");
- System.out.println("|" + fourt[0] + "|" + fourt[1] + "|" + fourt[2]
- + "|" + fourt[3] + "|" + fourt[4] + "|" + fourt[5] + "|"
- + fourt[6] + "|" + fourt[7] + "|4");
- System.out.println("|" + three[0] + "|" + three[1] + "|" + three[2]
- + "|" + three[3] + "|" + three[4] + "|" + three[5] + "|"
- + three[6] + "|" + three[7] + "|");
- System.out.println("|" + threet[0] + "|" + threet[1] + "|" + threet[2]
- + "|" + threet[3] + "|" + threet[4] + "|" + threet[5] + "|"
- + threet[6] + "|" + threet[7] + "|3");
- System.out.println("|" + two[0] + "|" + two[1] + "|" + two[2] + "|"
- + two[3] + "|" + two[4] + "|" + two[5] + "|" + two[6] + "|"
- + two[7] + "|");
- System.out.println("|" + twot[0] + "|" + twot[1] + "|" + twot[2] + "|"
- + twot[3] + "|" + twot[4] + "|" + twot[5] + "|" + twot[6] + "|"
- + twot[7] + "|2");
- System.out.println("|" + one[0] + "|" + one[1] + "|" + one[2] + "|"
- + one[3] + "|" + one[4] + "|" + one[5] + "|" + one[6] + "|"
- + one[7] + "|");
- System.out.println("|" + onet[0] + "|" + onet[1] + "|" + onet[2] + "|"
- + onet[3] + "|" + onet[4] + "|" + onet[5] + "|" + onet[6] + "|"
- + onet[7] + "|1");
- System.out.println(" 1 2 3 4 5 6 7 8");
- if (start == false) {
- turn++;
- start();
- }
- }
- public static String readLine(String prompt) {
- String input = "";
- System.out.print(prompt);
- InputStreamReader isr = new InputStreamReader(System.in);
- BufferedReader br = new BufferedReader(isr);
- try {
- input = br.readLine();
- } catch (IOException ioe) {
- }
- return input;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement