How do I place 9 pics in tic tac toe style for header of my slide show?
Need help placing 9 pics beside each other shrunk down so it will fit on header of slideshow using premiere elements 11?
Any help will be greatly appreciated.
Thank you,
Marvin Engel
Big M's Fishing Charters LLC
I really appreciate the information you provided. I can do that with the
photoshop elements 11 I have. I am not too good at photoshop since I have
been really been putting most of my learning of Premiere Elements 11. I
will take some time to learn the basics of photoshop by watching some of
the online help through Adobe.
What started all this which got me to thinking how to do this is on
facebook. Facebook started a program which I knew nothing about until
today. They put a slideshow of my life of pics, etc. Anyway check it out on
my facebook page. Just type in my name: Marvin Engel
Go to my timeline and scroll down a short distance and you will see what I
want to do better than they put together. I can use this as a advertising
tool on my FB page. I have several hundred pics and videos of fishing with
clients, etc. This is how is came about. I want to put the header page
together better than what they did. What I really want to do is make the
center pic a video with the other surrounding the center be pics. Then zoom
in the center video and they are in my slideshow with pics and vids.
Check it out at your convenience.
I really appreciate your help on everything.
Contact me anytime. I have to go to Alice, Tx tomorrow and do some work on
our other home and property we are selling on the market.
Hopefully I can start tomorrow evening when I get back.
Thank you for your knowledge and taking time to inform me how to get
started on photoshop.
Marvin Engel
Big M's Fishing Charters LLC (In The Heart of South Texas)
Similar Messages
-
Tic - Tac - Toe Game - Please Help!
Hi everyone, I am attempting to create a tic - tac - toe game (O's & X's).
I would like there to be two playing modes to the game, the first mode will be one player where the user plays against the computer. The second mode is a two - player game, where two users play, one being X's and the other being O's.
Can anyone help me get started with this game, I know there is source code on the internet but I would rather not use this as I would like to learn as I create the game.
Thanks Everyoneits amazing how much code a simple game like tic-tac-toe can require.. well, only if you program the AI of the computer.. i wrote one in c++ last year, for my computer science class, and the whole class had trouble with it, mainly the AI.. a suggestion to you: write it in an object-oriented manner. i ended up writing it procedurally and in the end, it looked very bad, but it worked!
i would prob. setup some objects like: Board (the 3x3 grid), Mark (a user mark, such as an "x" or an "o")..
i dunno.. hope that helps some, if you need help with the AI at all.. i do have the tic-tac-toe program i wrote on my website (http://www.angelfire.com/blues/smb/ ) in the C++ section.. i used a graphics package, but the logic is all there and the code is well commented.
anyway, ill talk to ya later, good luck,
Steven Berardi -
Tic-Tac-Toe checkWinner method problem
there seems to be a problem with the check winner method that I have, and the game isnt exactly playing out the way its supposed to. Any idea? By the way the game is a grid so the top left spot is 0,0, and the bottom spot is 2,2. It will as you to input a row and a column so you can put 1,0. Thanks for the help.
import javax.swing.*;
import java.text.*;
import java.applet.*;
import java.io.*;
import java.awt.*;
import java.lang.*;
import java.util.*;
import java.math.*;
import java.sql.*;
import java.security.*;
import java.beans.*;
import javax.crypto.*;
import javax.net.*;
import org.omg.CORBA.*;
import java.awt.color.*;
import java.util.jar.*;
public class TwoDArray
String [] [] board=new String [3] [3];
int x;
public TwoDArray()
for(int x=0;x<3;x++)
for(int y=0;y<3;y++)
board[x][y]="";
public void getMove(int row, int col, String letter)
if(board[row][col].equalsIgnoreCase(""));
board[row][col]=letter;
x++;
public void printBoard()
for(int x=0;x<3;x++)
System.out.print("|");
for(int y=0;y<3;y++)
System.out.print(board[x][y]);
System.out.println("|");
public boolean checkWinner()
boolean win=false;
if(board[0][0].equalsIgnoreCase(board[0][1])&&board[0][0].equalsIgnoreCase(board[0][2]))
win=true;
return win;
if(board[0][0].equalsIgnoreCase(board[1][0])&&board[0][0].equalsIgnoreCase(board[2][0]))
win=true;
return win;
if(board[0][1].equalsIgnoreCase(board[1][1])&&board[0][1].equalsIgnoreCase(board[2][1]))
win=true;
return win;
if(board[0][2].equalsIgnoreCase(board[1][2])&&board[0][2].equalsIgnoreCase(board[2][2]))
win=true;
return win;
if(board[1][0].equalsIgnoreCase(board[1][1])&&board[1][0].equalsIgnoreCase(board[1][2]))
win=true;
return win;
if(board[2][0].equalsIgnoreCase(board[2][1])&&board[2][0].equalsIgnoreCase(board[2][2]))
win=true;
return win;
if(board[0][0].equals(board[1][1])&&board[0][0].equalsIgnoreCase(board[2][2]))
win=true;
return win;
if(board[2][0].equals(board[1][1])&&board[2][0].equalsIgnoreCase(board[0][2]))
win=true;
return win;
return win;
public static void main(String[] args)
boolean winner=false;
String player1="X";
String player2="O";
String instructions="Welcome to Tic-Tac-Toe.";
for (int i = 0;i<instructions.length() ;i++ )
System.out.print(instructions.charAt(i));
try
Thread.sleep(99);
}catch(InterruptedException e) {e.printStackTrace();}
System.out.println();
TwoDArray board=new TwoDArray();
String input1=JOptionPane.showInputDialog("Enter the row you wish to move in.");
int rowmove=Integer.parseInt(input1);
String input2=JOptionPane.showInputDialog("Enter the column you wish to move in.");
int colmove=Integer.parseInt(input2);
board.getMove(rowmove,colmove,player1);
board.printBoard();
while(winner==board.checkWinner())
String input3=JOptionPane.showInputDialog("Enter the row you wish to move in.");
int rowmove2=Integer.parseInt(input3);
String input4=JOptionPane.showInputDialog("Enter the column you wish to move in.");
int colmove2=Integer.parseInt(input4);
board.getMove(rowmove2,colmove2,player2);
board.printBoard();
String input5=JOptionPane.showInputDialog("Enter the row you wish to move in.");
int rowmove3=Integer.parseInt(input5);
String input6=JOptionPane.showInputDialog("Enter the column you wish to move in.");
int colmove3=Integer.parseInt(input6);
board.getMove(rowmove3,colmove3,player1);
board.printBoard();
System.out.println("YOU WON!!");
}Take a look at this code:
import javax.swing.JOptionPane;
public class TicTacToe
static final String PLAYER1 = "X";
static final String PLAYER2 = "O";
static final String EMPTY = "-";
static String[][] board = new String[3][3];
static public void init() {
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 3; y++) {
board[x][y] = new String(EMPTY);
static public void getMove(int row, int col, String letter) {
if (board[row][col].equals(EMPTY)) {
board[row][col] = letter;
static public void printBoard() {
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 3; y++) {
System.out.print(board[x][y]);
System.out.println();
System.out.println();
static public String winner() {
for (int i = 0; i < board.length; i++) {
/** check horizontally */
if (board[0].equals(board[i][1]) &&
board[i][0].equals(board[i][2])) {
if (!board[i][0].equals(EMPTY)) {
return board[i][0];
/** check vertically */
if (board[0][i].equals(board[1][i]) &&
board[0][i].equals(board[2][i])) {
if (!board[0][i].equals(EMPTY)) {
return board[0][i];
/** check diagonally */
if (board[0][0].equals(board[1][1]) &&
board[0][0].equals(board[2][2])) {
if (!board[0][0].equals(EMPTY)) {
return board[0][0];
if (board[0][2].equals(board[1][1]) &&
board[0][2].equals(board[2][0])) {
if (!board[0][0].equals(EMPTY)) {
return board[0][2];
return EMPTY;
static public void drawOutString(String str) {
for (int i = 0; i < str.length(); i++) {
System.out.print(str.charAt(i));
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
static public void main(String[] args) {
init();
drawOutString("Welcome to Tic-Tac-Toe.");
System.out.println();
do {
int row = Integer.parseInt(JOptionPane.showInputDialog(
"Enter the row you wish to move in."));
int column = Integer.parseInt(JOptionPane.showInputDialog(
"Enter the column you wish to move in."));
getMove(row, column, PLAYER1);
printBoard();
} while(winner().equals(EMPTY));
System.out.println("YOU WON!!"); -
How can I use a pic from iPhoto as a background for a page, How can I use a pic as a background for a page
cd,
Insert the picture and position it as you desire
Make sure the picture is set to Floating in the Wrap Inspector
Arrange > Send Objects to Background
Regards, -
How do I place an image and insert a different photo for the "mouse down" state?
I have placed an image within an accordian widget and when I select the "mouse down" area in the states dialog box, i click "fill" in the toolbar and insert the photo i want to display when the image is clicked but this image is "covered up" by the originally placed image and is not seen in my states dialog box.
I have done this before when i made rectangles and placed images in rectangles. But i soon realized that you cannot add alternative text to images in rectangles for some frustrating reason.
How do I place and image and have a different image for the mouse down state?Hello,
This effect can only be achieved when you use the images as a Rectangle Fill. And as you mentioned it above, you cannot add alternative text to images because it is added as a fill and not as a image.
I would suggest you to post this as a feature request on our "Ideas for features in Adobe Muse" section of the forums : http://forums.adobe.com/community/muse/ideas
Regards,
Sachin -
hey all,
i am having problems creating a tic tac toe program. the program should create a board with NxN spaces, where N is obtained through user input.
I created a fully working program that does a 3x3 board, checks for diagonal, vertical, horizontal wins and also allows 1 vs computer or 2 players play, but i am struggling with the NxN board.
here is the code of what i have, can anyone point me in the right direction? all help is appreciated! please keep it simple as possible as i am just learning java!!
import java.util.Scanner;
import java.util.Random;
public class NoughtsCrosses
static final String PLAYER1 = "X";
static final String PLAYER2 = "O";
static final String EMPTY = "�";
static String[][] board = new String[][];
static int turn = 0;
static public void makeBoard(int boardSize)
for (int x = 0; x < boardSize; x++)
for (int y = 0; y < boardSize; y++)
board[x][y] = new String(EMPTY);
static public void playComputer()
Scanner scan = new Scanner(System.in);
Random generator = new Random();
int move;
printBoard();
System.out.println();
do {
if(turn%2 == 0)
System.out.println("Player 1, place your X");
System.out.print("Make a Move: ");
move = scan.nextInt();
else
System.out.print("Computer, place your O: ");
move = generator.nextInt(10);
System.out.println(move);
getMove(move);
System.out.println();
printBoard();
System.out.println();
} while(winner().equals(EMPTY) && turn < 9);
if (winner().equals(EMPTY))
System.out.println("The Game s a DRAW!");
else
System.out.println("PLAYER " + ((turn - 1) % 2 + 1) + " WINS!!");
static public void playHuman()
Scanner scan = new Scanner(System.in);
printBoard();
System.out.println();
do {
if(turn%2 == 0)
System.out.println("Player 1, place your X");
else
System.out.println("Player 2, place your O");
System.out.print("Make a Move: ");
int move = scan.nextInt();
getMove(move);
System.out.println();
printBoard();
System.out.println();
} while(winner().equals(EMPTY) && turn < 9);
if (winner().equals(EMPTY))
System.out.println("The Game s a DRAW!");
else
System.out.println("PLAYER " + ((turn - 1) % 2 + 1) + " WINS!!");
static public void getMove(int move)
int row = move/3;
int col = move%3;
if (board[row][col].equals(EMPTY))
board[row][col] = (turn % 2 == 0 ? PLAYER1 : PLAYER2);
turn++;
else
System.out.println("OCCUPIED FIELD! TRY AGAIN!");
static public void printBoard()
for (int x = 0; x < 3; x++)
for (int y = 0; y < 3; y++)
if(y == 0)
System.out.print(" ");
System.out.print(board[x][y]);
if(y < 2)
System.out.print(" | ");
System.out.println();
if(x < 2)
System.out.println(" ---|---|---");
static public String winner()
for (int i = 0; i < board.length; i++)
/** check horizontally */
if (board[0].equals(board[i][1]) && board[i][0].equals(board[i][2]))
if (!board[i][0].equals(EMPTY))
return board[i][0];
/** check vertically */
if (board[0][i].equals(board[1][i]) && board[0][i].equals(board[2][i]))
if (!board[0][i].equals(EMPTY))
return board[0][i];
/** check diagonally */
if (board[0][0].equals(board[1][1]) && board[0][0].equals(board[2][2]))
if (!board[0][0].equals(EMPTY))
return board[0][0];
if (board[0][2].equals(board[1][1]) && board[0][2].equals(board[2][0]))
if (!board[0][2].equals(EMPTY))
return board[0][2];
return EMPTY;
static public void main(String[] args)
Scanner scan = new Scanner(System.in);
int boardSize;
System.out.println();
System.out.println("Welcome to Tic Tac Toe!");
System.out.println("�����������������������");
System.out.println("How big should the board be?");
boardSize = scan.nextInt();
makeBoard(boardSize);
int players = 0;
do{
System.out.println("How many players?");
System.out.println("1 (vs. Computer) or 2 (vs. another player)?");
players = scan.nextInt();
System.out.println();
}while(players < 1 || players > 2);
if (players == 1)
playComputer();
else
playHuman();well, i figured out how to do it all, thanks to the TREMENDOUS amount of help here...lol...
i just have one more (minor problem)...
i can't get an algorithm working to see if the two diagonals are occupied by x's or o's (see if someone won diagonally)
to check horizontally & vertically on an NxN board, i use following code:
int count = 0;
/** check horizontally */
for (int i = 0; i < myBoard.length; i++)
for (int j = 0; j < myBoard.length-1; j++)
if (myBoard[0].equals(myBoard[i][j+1]) && !myBoard[i][0].equals(EMPTY))
count++;
if (count >= myBoard.length-1)
return myBoard[i][0];
count = 0;
count = 0;
/** check vertically */
for (int i = 0; i < myBoard.length; i++)
for (int j = 0; j < myBoard.length-1; j++)
if (myBoard[j][0].equals(myBoard[j+1][i]) && !myBoard[0][i].equals(EMPTY))
count++;
if (count >= myBoard.length-1)
return myBoard[0][i];
count = 0;
now i was messing around ALOT and couldn't figure out how to get the diagonals showing! this is what i came up with:
count =0;
for (int j = 1; j < myBoard.length; j++)
if (myBoard[0][0].equals(myBoard[j][j]) && !myBoard[0][0].equals(EMPTY))
count++;
System.out.println(count);
if (count >= myBoard.length)
return myBoard[0][0];
count = 0;
for (int j = myBoard.length-1; j >= 0; j--)
if (myBoard[0][myBoard.length-1].equals(myBoard[j][j]) && !myBoard[0][myBoard.length-1].equals(EMPTY))
count++;
System.out.println(count);
if (count >= myBoard.length)
return myBoard[0][myBoard.length-1];
count = 0; -
I want to write a tic tac toe applet that draws a game board and then accepts mouseclicks into the squares. It automatically changes players after each turn and declares a winner at the end.
I figured out how I might do this by using a JFrame with a grid layout of buttons in a panel (i.e. click buttons and their labels change?).
But how would I go about doing it without using buttons. I need to create a grid of squares that accept mouse clicks. I also need to be able to proclaim a winner based upon a winning pattern.
Any ideas? Could you just point me in the right direction?
How would the grid be generated? (A series of rectangle objects? Lines?)
How would I actually place a letter (x or o) in a square. ( some calculating of bounding coordinates for each box?)
Thanks!!each square could be a jpanel. write a class called Square, that extends jpanel.
implement MouseListener... and that's about it. It will just be a state machine.
In your main class, make a 2d array of Squares...
not really difficult. -
Help with printing a tic tac toe board (using a loop to print)
hey im making the smiple game tic tac toe and im tryin to print out the board after each turn. I have a 2d array called char which is a 3 by 3 array and i dont know how i would make a for loop to print out the x's and o's in their right spot and still have the board look like a normal tic tac toe board. When the board is printing the x's and o's are already in the 2d char array board.So basically what i want to happen is after player 1's turn is up wherever he put the x replace the number on the board with an x and keep the rest the same and whenever player 2's turn is up wherever he put the o replace the number on the board with an o and keep the rest the same. Any help would be awesome thanks alot.
Here is the code to the program (i know i use if statements to much its a bad habit of mine)
import java.util.*;
public class Tictactoe
private char board [] [] = new board [3] [3];
private int X;
private int O;
private Scanner p1choice;
private Scanner p2choice;
Scanner input = new Scanner(System.in);
public Tictactoe()
p1choice = new Scanner(System.in);
p2choice = new Scanner(System.in);
play();
public void play()
printoriginalboard();
public void printoriginalboard()
System.out.println(" | | ");
System.out.println(" 3 | 2 | 1 ");
System.out.println("____|____|____");
System.out.println(" | | ");
System.out.println(" 6 | 5 | 4 ");
System.out.println(" | | ");
System.out.println("____|____|____");
System.out.println(" | | ");
System.out.println(" 9 | 8 | 7 ");
System.out.println(" | | ");
System.out.println("This is the classic game of tictactoe simply pick a number 1 through 9 to place an x or an o in that area.");
player1turn();
public void player1turn()
System.out.println("Player 1 pick an area to place an X");
int p1choice= p1choice.nextInt();
if(p1choice == 1 && p2choice == 1 || p1choice == 1){
System.out.println("This spot has already been taken");
else
board[0][2] = 'x';
pintboard();
if(p1choice == 2 && p2choice == 2 || p1choice == 2){
System.out.println("This spot has already been taken");
else
board[1][2] = 'x';
pintboard();
if(p1choice == 3 && p2choice == 3 || p1choice == 3){
System.out.println("This spot has already been taken");
else
board[2][2] = 'x';
pintboard();
if(p1choice == 4 && p2choice == 4 || p1choice == 4){
System.out.println("This spot has already been taken");
board[0][1] = 'x';
pintboard();
if(p1choice == 5 && p2choice == 5 || p1choice == 5){
System.out.println("This spot has already been taken");
else
board[1][1] = 'x';
pintboard();
if(p1choice == 6 && p2choice == 6 || p1choice == 6){
System.out.println("This spot has already been taken");
else
board[2][1] = 'x';
pintboard();
if(p1choice == 7 && p2choice == 7 || p1choice == 7){
System.out.println("This spot has already been taken");
else
board[0][0] = 'x';
pintboard();
if(p1choice ==8 && p2choice == 8 || p1choice == 8){
System.out.println("This spot has already been taken");
else
board[1][0] = 'x';
pintboard();
if(p1choice == 9 && p2choice == 9 || p1choice == 9){
System.out.println("This spot has already been taken");
else
board[2][0] = 'x';
pintboard();
public void p2turn()
System.out.println("Pick an area to place an O");
int p2choice = p2choice.nextInt();
if(p2choice == 1 && p1choice == 1 || p2choice == 1){
System.out.println("This spot has already been taken");
else
board[0][2] = 'o';
pintboard();
if(p2choice == 2 && p1choice == 2 || p2choice == 2){
System.out.println("This spot has already been taken");
else
board[1][2] = 'o';
pintboard();
if(p2choice == 3 && p1choice == 3 || p2choice == 3){
System.out.println("This spot has already been taken");
else
board[2][2] = 'o';
pintboard();
if(p2choice == 4 && p1choice == 4 || p2choice == 4){
System.out.println("This spot has already been taken");
else
board[0][1] = 'o';
pintboard();
if(p2choice == 5 && p1choice == 5 || p2choice == 5){
System.out.println("This spot has already been taken");
else
board[1][1] = 'o';
pintboard();
if(p2choice == 6 && p1choice == 6 || p2choice == 6){
System.out.println("This spot has already been taken");
else
board[2][1] = 'o';
pintboard();
if(p2choice == 7 && p1choice == 7 || p2choice == 7){
System.out.println("This spot has already been taken");
else
board[0][0] = 'o';
pintboard();
if(p2choice == 8 && p1choice == 8 || p2choice == 8){
System.out.println("This spot has already been taken");
else
board[1][0] = 'o';
pintboard();
if(p2choice == 9 && p1choice == 9 || p2choice == 9){
System.out.println("This spot has already been taken");
else
board[2][0] = 'o';
pintboard();
public void pintboard()
{Anyway the answer is that you are trying to create an array of char as there is no such thing as a board[3][3].
One of the best tools a programmer can do is learn how to break a big problem into little problems and work on each little problem in isolation, and then when finished combining the solutions together into the final program. You big mistake that I see here is trying to bite off more than you can chew: trying to create a whole functioning interactive program from just one class. Why give yourself a task that would be difficult even for an experienced java programmer? I suggest that you break this down into logical parts and try to solve the smaller problems before worrying about the whole. For instance, if I were doing something like this, I'd create a class called TTTBoard that encapsulated the tic tac toe board and nothing but the board. I'd think of it as an entity. When I wanted the current state of the board, I'd query the board via a method such as getCurrentState. I'd have methods for checking if position is free, for placing an x/o in a spot, for checking for win, etc... Then I'd create a user interface class where I'd give the users a choice and get their responses. I'd probably create a Game class to control it all. While this all seems daunting, you are trying to do essentially the same thing, but all in one huge class. My recommendation: study OOPs and learn to do it the smart way. Good luck. -
Help in swing app. tic tac toe
Trying to make this tic tac toe game. Need a little help. I want the newGameBUT to start the game over, and I would like turnTF to display if a tie occurs. (I tried using *if button.enabled(false) {* but it didn't work. If anyone could help me out, that'd be great. Oh, also, the new game button currently add's 1 to whoever won so far, which is really weird =x. Thanks beforehand.
import java.awt.*; //import
import javax.swing.*; //import
import java.awt.event.*; //import
import java.awt.Rectangle; //import
import java.awt.Font; //import
import javax.swing.BorderFactory; //import
import javax.swing.border.TitledBorder; //import
import java.awt.Color; //import
public class TicTacToeFrame extends JFrame implements ActionListener {
public TicTacToeFrame() {
try { //try the following
jbInit();
} catch (Exception ex) { // exit on [X]
ex.printStackTrace(); //exit and print errors
int xWon = 0; //counting how many times O has won
int oWon = 0; //counting how many times X has one
double i = 0; // loop variable to determine turn
public void actionPerformed(ActionEvent e) {
String turn = "null"; //current turn
String notTurn = "null"; //not current turn
newGameBUT.setEnabled(false); //disable new game button
if (i % 2 == 0) { // for determining who's turn it is
turn = "X"; // X's turn when counter is even
notTurn = "O"; //notTurn used to show who's turn it is in turnTF
if (i % 2 != 0) { // for determining who's turn it is
turn = "O"; // O's turn when counter is odd
notTurn = "X"; //notTurn used to show who's turn it is in turnTF
turnTF.setText("Currently " + notTurn + "'s turn"); // displays turn
if (e.getSource() == sqOneBUT) { //disable and print X or O to button
sqOneBUT.setText(turn); //printing players symbol
sqOneBUT.setEnabled(false); //disabling button
if (e.getSource() == sqTwoBUT) { //disable and print X or O to button
sqTwoBUT.setText(turn); //printing players symbol
sqTwoBUT.setEnabled(false); //disabling button
if (e.getSource() == sqThreeBUT) { //disable and print X or O to button
sqThreeBUT.setText(turn); //printing players symbol
sqThreeBUT.setEnabled(false); //disabling button
if (e.getSource() == sqFourBUT) { //disable and print X or O to button
sqFourBUT.setText(turn); //printing players symbol
sqFourBUT.setEnabled(false); //disabling button
if (e.getSource() == sqFiveBUT) { //disable and print X or O to button
sqFiveBUT.setText(turn); //printing players symbol
sqFiveBUT.setEnabled(false); //disabling button
if (e.getSource() == sqSixBUT) { //disable and print X or O to button
sqSixBUT.setText(turn); //printing players symbol
sqSixBUT.setEnabled(false); //disabling button
if (e.getSource() == sqSevenBUT) { //disable and print X or O to button
sqSevenBUT.setText(turn); //printing players symbol
sqSevenBUT.setEnabled(false); //disabling button
if (e.getSource() == sqEightBUT) { //disable and print X or O to button
sqEightBUT.setText(turn); //printing players symbol
sqEightBUT.setEnabled(false); //disabling button
if (e.getSource() == sqNineBUT) { //disable and print X or O to button
sqNineBUT.setText(turn); //printing players symbol
sqNineBUT.setEnabled(false); //disabling button
String sqOne = sqOneBUT.getText(); // Strings to read to find winner
String sqTwo = sqTwoBUT.getText(); // Strings to read to find winner
String sqThree = sqThreeBUT.getText(); // Strings to read to find winner
String sqFour = sqFourBUT.getText(); // Strings to read to find winner
String sqFive = sqFiveBUT.getText(); // Strings to read to find winner
String sqSix = sqSixBUT.getText(); // Strings to read to find winner
String sqSeven = sqSevenBUT.getText(); // Strings to read to find winner
String sqEight = sqEightBUT.getText(); // Strings to read to find winner
String sqNine = sqNineBUT.getText(); // Strings to read to find winner
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~O WINS~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
//horizontal, top, o wins
if (sqOne == "O") { //checking too see if player O has won
if (sqFour == "O") {
if (sqSeven == "O") {
turnTF.setText("O wins!"); //O wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
//vertical, left, o wins
if (sqOne == "O") { //checking too see if player O has won
if (sqTwo == "O") {
if (sqThree == "O") {
turnTF.setText("O wins!"); //O wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
// diagonal, top left to bottom right, o wins
if (sqOne == "O") {
if (sqFive == "O") { //checking too see if player O has won
if (sqNine == "O") {
turnTF.setText("O wins!"); //O wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
// horizontal, mid, o wins
if (sqTwo == "O") { //checking too see if player O has won
if (sqFive == "O") {
if (sqEight == "O") {
turnTF.setText("O wins!"); //O wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
// horizontal, bottom, o wins
if (sqThree == "O") { //checking too see if player O has won
if (sqSix == "O") {
if (sqNine == "O") {
turnTF.setText("O wins!"); //O wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
// diagonal, top right to bottom left, o wins
if (sqThree == "O") { //checking too see if player O has won
if (sqFive == "O") {
if (sqSeven == "O") {
turnTF.setText("O wins!"); //O wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~X WINS~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
//horizontal, top, x wins
if (sqOne == "X") { //checking too see if player X has won
if (sqFour == "X") {
if (sqSeven == "X") {
turnTF.setText("X wins!"); //X wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
//vertical, left, x wins
if (sqOne == "X") { //checking too see if player X has won
if (sqTwo == "X") {
if (sqThree == "X") {
turnTF.setText("X wins!"); //X wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
// diagonal, top left to bottom right, x wins
if (sqOne == "X") { //checking too see if player X has won
if (sqFive == "X") {
if (sqNine == "X") {
turnTF.setText("X wins!"); //X wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
// horizontal, mid, x wins
if (sqTwo == "X") { //checking too see if player X has won
if (sqFive == "X") {
if (sqEight == "X") {
turnTF.setText("X wins!"); //X wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
// horizontal, bottom, x wins
if (sqThree == "X") { //checking too see if player X has won
if (sqSix == "X") {
if (sqNine == "X") {
turnTF.setText("X wins!"); //X wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
// diagonal, top right to bottom left, x wins
if (sqThree == "X") { //checking too see if player X has won
if (sqFive == "X") {
if (sqSeven == "X") {
turnTF.setText("X wins!"); //X wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
String wins = turnTF.getText(); //Reading who won to print win winTF
if (wins.equals("X wins!")) { //if X wins
xWon++; //adding 1 to X's amount of wins
String xWonString = Integer.toString(xWon); //converting to String
xWinsTF.setText(xWonString); //displaying # of wins
newGameBUT.setEnabled(true); //enable new game button
if (wins.equals("O wins!")) { //if O wins
oWon++; //adding 1 to O's amount of wins
String oWonString = Integer.toString(oWon); //converting to String
oWinsTF.setText(oWonString); //displaying # of wins
newGameBUT.setEnabled(true); //enable new game button
if (e.getSource() == newGameBUT) {
i++; // turn switch
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
private void jbInit() throws Exception {
this.getContentPane().setLayout(null);
this.getContentPane().setBackground(Color.darkGray);
sqTwoBUT.setBounds(new Rectangle(2, 116, 115, 115));
sqTwoBUT.setFont(new java.awt.Font(
"Tw Cen MT Condensed Extra Bold",
Font.BOLD, 20));
sqFourBUT.setBounds(new Rectangle(118, 1, 115, 115));
sqFourBUT.setFont(new java.awt.Font(
"Tw Cen MT Condensed Extra Bold",
Font.BOLD, 20));
sqFiveBUT.setBounds(new Rectangle(118, 116, 115, 115));
sqFiveBUT.setFont(new java.awt.Font(
"Tw Cen MT Condensed Extra Bold",
Font.BOLD, 20));
sqSixBUT.setBounds(new Rectangle(118, 232, 115, 115));
sqSixBUT.setFont(new java.awt.Font(
"Tw Cen MT Condensed Extra Bold",
Font.BOLD, 20));
sqOneBUT.setBounds(new Rectangle(2, 1, 115, 115));
sqOneBUT.setFont(new java.awt.Font(
"Tw Cen MT Condensed Extra Bold",
Font.BOLD, 20));
sqEightBUT.setBounds(new Rectangle(233, 116, 115, 115));
sqEightBUT.setFont(new java.awt.Font(
"Tw Cen MT Condensed Extra Bold",
Font.BOLD, 20));
sqNineBUT.setBounds(new Rectangle(233, 232, 115, 115));
sqNineBUT.setFont(new java.awt.Font(
"Tw Cen MT Condensed Extra Bold",
Font.BOLD, 20));
sqSevenBUT.setBounds(new Rectangle(233, 1, 115, 115));
sqSevenBUT.setFont(new java.awt.Font(
"Tw Cen MT Condensed Extra Bold",
Font.BOLD, 20));
sqOneBUT.addActionListener(this);
sqTwoBUT.addActionListener(this);
sqThreeBUT.addActionListener(this);
sqFourBUT.addActionListener(this);
sqFiveBUT.addActionListener(this);
sqSixBUT.addActionListener(this);
sqSevenBUT.addActionListener(this);
sqEightBUT.addActionListener(this);
sqNineBUT.addActionListener(this);
newGameBUT.addActionListener(this);
sqThreeBUT.setFont(new java.awt.Font(
"Tw Cen MT Condensed Extra Bold",
Font.BOLD, 20));
turnTF.setFont(new java.awt.Font(
"Tw Cen MT Condensed Extra Bold",
Font.BOLD, 20));
turnTF.setEditable(false);
turnTF.setText("X goes first");
turnTF.setHorizontalAlignment(SwingConstants.CENTER);
turnTF.setBounds(new Rectangle(2, 346, 346, 35));
oWinsTF.setFont(new java.awt.Font("Tw Cen MT Condensed Extra Bold",
Font.BOLD, 18));
oWinsTF.setEditable(false);
oWinsTF.setHorizontalAlignment(SwingConstants.CENTER);
oWinsTF.setBounds(new Rectangle(256, 419, 79, 59));
xWinsTF.setFont(new java.awt.Font("Tw Cen MT Condensed Extra Bold",
Font.BOLD, 18));
xWinsTF.setEditable(false);
xWinsTF.setHorizontalAlignment(SwingConstants.CENTER);
xWinsTF.setBounds(new Rectangle(12, 419, 79, 59));
oWinsLBL.setFont(new java.awt.Font("Tw Cen MT Condensed Extra Bold",
Font.PLAIN, 16));
oWinsLBL.setForeground(Color.white);
oWinsLBL.setHorizontalAlignment(SwingConstants.CENTER);
oWinsLBL.setText("O wins:");
oWinsLBL.setBounds(new Rectangle(256, 399, 78, 21));
xWinsLBL.setFont(new java.awt.Font("Tw Cen MT Condensed Extra Bold",
Font.PLAIN, 16));
xWinsLBL.setForeground(Color.white);
xWinsLBL.setDisplayedMnemonic('0');
xWinsLBL.setHorizontalAlignment(SwingConstants.CENTER);
xWinsLBL.setText("X wins:");
xWinsLBL.setBounds(new Rectangle(12, 393, 78, 21));
newGameBUT.setBounds(new Rectangle(101, 455, 146, 23));
newGameBUT.setFont(new java.awt.Font("Tw Cen MT Condensed Extra Bold",
Font.BOLD, 14));
newGameBUT.setText("New Game");
this.getContentPane().add(sqFourBUT);
this.getContentPane().add(sqThreeBUT);
this.getContentPane().add(sqTwoBUT);
this.getContentPane().add(sqOneBUT);
this.getContentPane().add(sqFiveBUT);
this.getContentPane().add(sqSixBUT);
this.getContentPane().add(sqNineBUT);
this.getContentPane().add(sqEightBUT);
this.getContentPane().add(sqSevenBUT);
this.getContentPane().add(turnTF);
this.getContentPane().add(xWinsLBL);
this.getContentPane().add(xWinsTF);
this.getContentPane().add(oWinsLBL);
this.getContentPane().add(oWinsTF);
this.getContentPane().add(newGameBUT);
sqThreeBUT.setBounds(new Rectangle(2, 232, 115, 115));
JButton sqTwoBUT = new JButton();
JButton sqThreeBUT = new JButton();
JButton sqFourBUT = new JButton();
JButton sqFiveBUT = new JButton();
JButton sqSixBUT = new JButton();
JButton sqOneBUT = new JButton();
JButton sqEightBUT = new JButton();
JButton sqNineBUT = new JButton();
JButton sqSevenBUT = new JButton();
JTextField turnTF = new JTextField();
JTextField oWinsTF = new JTextField();
JTextField xWinsTF = new JTextField();
JLabel oWinsLBL = new JLabel();
JLabel xWinsLBL = new JLabel();
JButton newGameBUT = new JButton();
}This code should be the poster-child for every time we tell someone that repeated code can usually be replaced with collections or method calls.
if (e.getSource() == sqOneBUT) { //disable and print X or O to button
sqOneBUT.setText(turn); //printing players symbol
sqOneBUT.setEnabled(false); //disabling button
if (e.getSource() == sqTwoBUT) { //disable and print X or O to button
sqTwoBUT.setText(turn); //printing players symbol
sqTwoBUT.setEnabled(false); //disabling button
if (e.getSource() == sqThreeBUT) { //disable and print X or O to button
sqThreeBUT.setText(turn); //printing players symbol
sqThreeBUT.setEnabled(false); //disabling button
if (e.getSource() == sqFourBUT) { //disable and print X or O to button
sqFourBUT.setText(turn); //printing players symbol
sqFourBUT.setEnabled(false); //disabling button
if (e.getSource() == sqFiveBUT) { //disable and print X or O to button
sqFiveBUT.setText(turn); //printing players symbol
sqFiveBUT.setEnabled(false); //disabling button
if (e.getSource() == sqSixBUT) { //disable and print X or O to button
sqSixBUT.setText(turn); //printing players symbol
sqSixBUT.setEnabled(false); //disabling button
if (e.getSource() == sqSevenBUT) { //disable and print X or O to button
sqSevenBUT.setText(turn); //printing players symbol
sqSevenBUT.setEnabled(false); //disabling button
if (e.getSource() == sqEightBUT) { //disable and print X or O to button
sqEightBUT.setText(turn); //printing players symbol
sqEightBUT.setEnabled(false); //disabling button
if (e.getSource() == sqNineBUT) { //disable and print X or O to button
sqNineBUT.setText(turn); //printing players symbol
sqNineBUT.setEnabled(false); //disabling button
String sqOne = sqOneBUT.getText(); // Strings to read to find winner
String sqTwo = sqTwoBUT.getText(); // Strings to read to find winner
String sqThree = sqThreeBUT.getText(); // Strings to read to find winner
String sqFour = sqFourBUT.getText(); // Strings to read to find winner
String sqFive = sqFiveBUT.getText(); // Strings to read to find winner
String sqSix = sqSixBUT.getText(); // Strings to read to find winner
String sqSeven = sqSevenBUT.getText(); // Strings to read to find winner
String sqEight = sqEightBUT.getText(); // Strings to read to find winner
String sqNine = sqNineBUT.getText(); // Strings to read to find winner -
I need help on a Tic Tac Toe game I am making for a class. I had finished a "2 Player" version and my instructor wants me to simulate a computer "AI" now. I cannot figure out what I'm doing wrong. The order of precedence is this:
1. X moves first (the player)
2. Computer moves to win.
3. If it can't win, it moves to block a win
4. If it can't block a win, it moves to the best possible spot to set up a win.
I think my problems are with several methods, but I cannot figure out what I'm doing wrong. Every time I look at my code, it just makes "sense". I think my problems could probably be found in 4 methods, setButtonText(), findOpen(), findBestOpen() and tempCheck(). I would like hints or maybe if I could get a second look at it for me.
public class VangTicTacToe extends javax.swing.JFrame {
private boolean isX;
private int turnCount;
private boolean gameWon;
private boolean isTemp;
/** Creates new form VangTicTacToe */
public VangTicTacToe() {
initComponents();
resetGame();
isX = true;
turnCount = 0;
private void checkWinner(String pressedButton){
//an multi-dimensional array of winning combinations
JButton[][] winningCombos = {{oneJButton, twoJButton,
threeJButton}, {oneJButton, fourJButton,
sevenJButton}, {oneJButton, fiveJButton, nineJButton},
{twoJButton, fiveJButton, eightJButton}, {threeJButton, sixJButton,
nineJButton}, {fourJButton, fiveJButton, sixJButton}, {sevenJButton,
eightJButton, nineJButton}, {sevenJButton, fiveJButton, threeJButton}};
String buttonPressed = pressedButton;
//loops and determines if any of the possible winning combinations have been
//met for X and displays output accordingly
for(JButton[] row : winningCombos){
for(JButton button : row){
if(button.getText().equals(buttonPressed)){
gameWon = true;
else{
gameWon = false;
break;
}//end inner for
if(gameWon == true && isTemp == false){
for(JButton button : row){
button.setBackground(Color.green);
}//end inner for
if(pressedButton.equals("X"))
outputJLabel.setText("Congratulations! Player 1 (\"X\") Wins!");
else
outputJLabel.setText("Sorry, computer wins.");
disableButtons();
break;
}//end if
else{
continue;//go to next outer loop and keep searching
}//end outer for
}//end method checkWinner
private void setButtonText(JButton buttonPressed){
if(isX == true){
buttonPressed.setText("X");
isX = false;
checkWinner("X");
outputJLabel.setText("Computer's turn");
isTemp = true; //sets isTemp to true so that the test is temporary
findOpen();//calls findOpen to start computer move
//disable the button so it cannot be pressed again
buttonPressed.setEnabled(false);
//increment the turn count number
turnCount++;
if(turnCount == 9)
outputJLabel.setText("Cats Game! You both are losers!");
}//end method setText
//the following 3 methods are for a computer move
//find next open space
private void findOpen(){
//array of buttons
JButton[] buttons = {oneJButton, twoJButton, threeJButton, fourJButton,
fiveJButton, sixJButton, sevenJButton, eightJButton, nineJButton};
//moves through array of buttons and looks for empty. If empty,
//it calls temporary select method.
for (int count = 0; count < buttons.length; count++){
if(buttons[count].getText().isEmpty())
tempCheck(buttons[count]);
}//end for loop
//if gameWon is false, call findBestButton to find the best open spot
if(gameWon == false){
findBestButton();
}//end method findOpen
private void findBestButton(){
//an multi-dimensional array of winning combinations
JButton[][] winningCombos = {{oneJButton, twoJButton,
threeJButton}, {oneJButton, fourJButton,
sevenJButton}, {oneJButton, fiveJButton, nineJButton},
{twoJButton, fiveJButton, eightJButton}, {threeJButton, sixJButton,
nineJButton}, {fourJButton, fiveJButton, sixJButton}, {sevenJButton,
eightJButton, nineJButton}, {sevenJButton, fiveJButton, threeJButton}};
boolean placeO = false;
int buttonCount = 0;
for(JButton[] row : winningCombos){
for(JButton button : row){
if(button.getText().equals("O") || button.getText().equals("")){
placeO = true;
else{
placeO = false;
buttonCount = 0;
if(placeO == true){
++buttonCount;
else{
break;
if(buttonCount == 3 && placeO == true){
button.setText("O");
}//end inner for
if(placeO == true){
isX = true;
break;
else{
continue;
}//end outer for
}//end method findBestButton
//checks if temp move would win
private void tempCheck(JButton tempButton){
//temporarily assigns "O" to a square and checks if it wins
tempButton.setText("O");
checkWinner("O");
if(gameWon == true){//if it wins then set temp to false and call
isTemp = false;//checkWinner();
checkWinner("0");
else{
tempButton.setText("");//else, set buttonText to empty
}//end if
if(gameWon == false){//if gameWon is false, check if "X" would win
tempButton.setText("X");
isTemp = true;
checkWinner("X");
if(gameWon == true){//if x is going to win,
tempButton.setText("O");//block the player from winning
else{
tempButton.setText("X");
}//end method tempCheck()
}touandcim wrote:
I click to make "X"'s (the player's move). X appears but O never does, although a button is highlighted. If I keep pressing the buttons, all X's appear until the last move, when an "O" appears.I don't know if it's the problem, but
checkWinner("0");looks suspicious. (2nd invocation in your tempCheck() method).
Your program seems awfully brittle. How would you do it if you had a 4 x 4 board? Or 5 x 5?
Also, your 'winningCombos' array is repeated everywhere it's used. There's no need for that; just make it an instance variable/constant.
Winston -
Help with Tic Tac Toe program....
I am writing a tic tac toe program, and I have already put the 9 boxes onto the screen so that it looks like the Tic Tac Toe board.
My first box looks something like this:
Rectangle2D.Double box1 = new Rectangle2D.Double(0, 0, 100, 100);
g2.draw(box1);
I want assign a number to the 9 boxes so it looks like this:
123
456
789
And I want to know how am I suppose to assign a number to a box, so that when the number is pressed it will put an "X" or "O"(depending on whose turn it is).
P.S. If you already made a Tic Tac Toe progaram can you post it so I will have an idea of what you did. thx.I'd hate to post the whole thing, but if you don't have access to it, here it goes:
* @(#)TicTacToe.java 1.6 01/12/03
* Copyright 2002 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.net.*;
import java.applet.*;
* A TicTacToe applet. A very simple, and mostly brain-dead
* implementation of your favorite game! <p>
* In this game a position is represented by a white and black
* bitmask. A bit is set if a position is ocupied. There are
* 9 squares so there are 1<<9 possible positions for each
* side. An array of 1<<9 booleans is created, it marks
* all the winning positions.
* @version 1.2, 13 Oct 1995
* @author Arthur van Hoff
* @modified 04/23/96 Jim Hagen : winning sounds
* @modified 02/10/98 Mike McCloskey : added destroy()
public
class TicTacToe extends Applet implements MouseListener {
* White's current position. The computer is white.
int white;
* Black's current position. The user is black.
int black;
* The squares in order of importance...
final static int moves[] = {4, 0, 2, 6, 8, 1, 3, 5, 7};
* The winning positions.
static boolean won[] = new boolean[1 << 9];
static final int DONE = (1 << 9) - 1;
static final int OK = 0;
static final int WIN = 1;
static final int LOSE = 2;
static final int STALEMATE = 3;
* Mark all positions with these bits set as winning.
static void isWon(int pos) {
for (int i = 0 ; i < DONE ; i++) {
if ((i & pos) == pos) {
won[i] = true;
* Initialize all winning positions.
static {
isWon((1 << 0) | (1 << 1) | (1 << 2));
isWon((1 << 3) | (1 << 4) | (1 << 5));
isWon((1 << 6) | (1 << 7) | (1 << 8));
isWon((1 << 0) | (1 << 3) | (1 << 6));
isWon((1 << 1) | (1 << 4) | (1 << 7));
isWon((1 << 2) | (1 << 5) | (1 << 8));
isWon((1 << 0) | (1 << 4) | (1 << 8));
isWon((1 << 2) | (1 << 4) | (1 << 6));
* Compute the best move for white.
* @return the square to take
int bestMove(int white, int black) {
int bestmove = -1;
loop:
for (int i = 0 ; i < 9 ; i++) {
int mw = moves;
if (((white & (1 << mw)) == 0) && ((black & (1 << mw)) == 0)) {
int pw = white | (1 << mw);
if (won[pw]) {
// white wins, take it!
return mw;
for (int mb = 0 ; mb < 9 ; mb++) {
if (((pw & (1 << mb)) == 0) && ((black & (1 << mb)) == 0)) {
int pb = black | (1 << mb);
if (won[pb]) {
// black wins, take another
continue loop;
// Neither white nor black can win in one move, this will do.
if (bestmove == -1) {
bestmove = mw;
if (bestmove != -1) {
return bestmove;
// No move is totally satisfactory, try the first one that is open
for (int i = 0 ; i < 9 ; i++) {
int mw = moves[i];
if (((white & (1 << mw)) == 0) && ((black & (1 << mw)) == 0)) {
return mw;
// No more moves
return -1;
* User move.
* @return true if legal
boolean yourMove(int m) {
if ((m < 0) || (m > 8)) {
return false;
if (((black | white) & (1 << m)) != 0) {
return false;
black |= 1 << m;
return true;
* Computer move.
* @return true if legal
boolean myMove() {
if ((black | white) == DONE) {
return false;
int best = bestMove(white, black);
white |= 1 << best;
return true;
* Figure what the status of the game is.
int status() {
if (won[white]) {
return WIN;
if (won[black]) {
return LOSE;
if ((black | white) == DONE) {
return STALEMATE;
return OK;
* Who goes first in the next game?
boolean first = true;
* The image for white.
Image notImage;
* The image for black.
Image crossImage;
* Initialize the applet. Resize and load images.
public void init() {
notImage = getImage(getCodeBase(), "images/not.gif");
crossImage = getImage(getCodeBase(), "images/cross.gif");
addMouseListener(this);
public void destroy() {
removeMouseListener(this);
* Paint it.
public void paint(Graphics g) {
Dimension d = getSize();
g.setColor(Color.black);
int xoff = d.width / 3;
int yoff = d.height / 3;
g.drawLine(xoff, 0, xoff, d.height);
g.drawLine(2*xoff, 0, 2*xoff, d.height);
g.drawLine(0, yoff, d.width, yoff);
g.drawLine(0, 2*yoff, d.width, 2*yoff);
int i = 0;
for (int r = 0 ; r < 3 ; r++) {
for (int c = 0 ; c < 3 ; c++, i++) {
if ((white & (1 << i)) != 0) {
g.drawImage(notImage, c*xoff + 1, r*yoff + 1, this);
} else if ((black & (1 << i)) != 0) {
g.drawImage(crossImage, c*xoff + 1, r*yoff + 1, this);
* The user has clicked in the applet. Figure out where
* and see if a legal move is possible. If it is a legal
* move, respond with a legal move (if possible).
public void mouseReleased(MouseEvent e) {
int x = e.getX();
int y = e.getY();
switch (status()) {
case WIN:
case LOSE:
case STALEMATE:
play(getCodeBase(), "audio/return.au");
white = black = 0;
if (first) {
white |= 1 << (int)(Math.random() * 9);
first = !first;
repaint();
return;
// Figure out the row/column
Dimension d = getSize();
int c = (x * 3) / d.width;
int r = (y * 3) / d.height;
if (yourMove(c + r * 3)) {
repaint();
switch (status()) {
case WIN:
play(getCodeBase(), "audio/yahoo1.au");
break;
case LOSE:
play(getCodeBase(), "audio/yahoo2.au");
break;
case STALEMATE:
break;
default:
if (myMove()) {
repaint();
switch (status()) {
case WIN:
play(getCodeBase(), "audio/yahoo1.au");
break;
case LOSE:
play(getCodeBase(), "audio/yahoo2.au");
break;
case STALEMATE:
break;
default:
play(getCodeBase(), "audio/ding.au");
} else {
play(getCodeBase(), "audio/beep.au");
} else {
play(getCodeBase(), "audio/beep.au");
public void mousePressed(MouseEvent e) {
public void mouseClicked(MouseEvent e) {
public void mouseEntered(MouseEvent e) {
public void mouseExited(MouseEvent e) {
public String getAppletInfo() {
return "TicTacToe by Arthur van Hoff"; -
I have this code so far and it won't compile, and I don't know how to fix it, can anyone help me?
import java.awt.*;
import javax.swing.*;
public class TicTacToe extends JFrame{
public void main (String [] args){
TicTacToe t3 = new TicTacToe();
t3.setSize(400, 400);
t3.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
t3.setLayout(new GridLayout(3,3));
JButton NW = new JButton("");
JButton N = new JButton("");
JButton NE = new JButton("");
JButton W = new JButton("");
JButton C = new JButton("");
JButton E = new JButton("");
JButton SW = new JButton("");
JButton S = new JButton("");
JButton SE = new JButton("");
t3.add(NW);
NW.addActionListener(new PressedButton());
t3.add(N);
N.addActionListener(new PressedButton());
t3.add(NE);
NE.addActionListener(new PressedButton());
t3.add(W);
W.addActionListener(new PressedButton());
t3.add(C);
C.addActionListener(new PressedButton());
t3.add(E);
E.addActionListener(new PressedButton());
t3.add(SW);
SW.addActionListener(new PressedButton());
t3.add(S);
SW.addActionListener(new PressedButton());
t3.add(SE);
SE.addActionListener(new PressedButton());
t3.setVisible(true);
public class PressedButton implements ActionListener{
public void actionPerformed(ActionEvent e){
JButton button = (JButton)e.getSource();
if (O turn){
button.setText("O");
}else{
button.setText("X");
private class checkEndgame{
private void checkEndgame(){
for (final int[] winChance : TicTacToe.winChances) {
if (this.checkVictory(winChance)) {
final String winner = this.turn.equals("X") ? "O" : "X";
JOptionPane.showMessageDialog(this.frame, winner + " won the game!",
"Game Over", JOptionPane.INFORMATION_MESSAGE);
this.reset();
return;
Does anyone notice any errors that i might have over looked?
thanksOk scratch out that entire code, i started over and it still won't compile.
import java.awt.*;
import javax.swing.*;
import java.awt.event;
public class TicTacToe implements ActionListener{
private int[][] winCombinations = new int[][]{
{1, 2, 3}, {4, 5, 6}, {7, 8, 9},
{1, 4, 7}, {2, 5, 8}, {3, 6, 9},
{1, 5, 9}, {3, 5, 7}
private JFrame window = new JFrame("Tic-Tac-Toe");
private JButton buttons[] = new JButton[10];
private int count = 0;
private String letter = "";
private boolean win = false;
public class PressedButton{
public void actionPerformed(ActionEvent a) {
count++;
if(count % 2 == 0){
letter = "O";
} else {
letter = "X";
for(int t=1; t<=9; t++){
if(a.getSource() == buttons[t]){
buttons[t].setText(letter);
buttons[t].setEnabled(false);
for(int i=0; i<=7; i++){
if( buttons[winCombinations[t][0]].getText() == buttons[winCombinations[t][1]].getText() &&
buttons[winCombinations[t][1]].getText() == buttons[winCombinations[t][2]].getText() &&
buttons[winCombinations[t][0]].getText() != ""){
win = true;
if(win == true){
JOptionPane.showMessageDialog(null, letter + " wins the game!");
System.exit(0);
} else if(count == 9 && win == false){
JOptionPane.showMessageDialog(null, "The game was a tie!");
System.exit(0);
the error message says that I still need a "}" on line 49 which is the line after the last bracket that I have, I put one there and it still shows up an error message, what do I do? -
Need some help with Tic Tac Toe game
hey. hope u guys can help me out...
having a problem with my tic tac toe program...
i have 2 problems.
1) got the "X" and "O" to appear using a flag(teacher didn't explain)
using code like this
if (jb == button[0]){
if (flag==0)
button[0].setText("X");
else
button[0].setText("O");
//toggle
flag = (flag==0)?1:0;
my problem is how do i get it to stop.(For example button[1] is selected as "X"..how do i stop it from albe to switch to "O")
2) found this code in javascript online and i want to do what it does in java code
if(button[0] == " X " && button[1] == " X " && button[2] == " X ")
alert("You Win!");
reset();
how would i do that?
thanks for the help.ok here's my code:
//TTT.java
import javax.swing.*;
import java.awt.*;
import java .awt.event.*;
public class TTT extends JFrame
implements WindowListener, ActionListener
private JFrame frFirst;
private Container cnFirst,cnSecond;
private JButton button[]=new JButton[9];
private JButton btnNewGame,btnExit;
private FlowLayout southLayout;
private JPanel southPanel;
private int flag;
public TTT()
frFirst=new JFrame ("Michael's Tic Tac Toe Game!");
cnFirst=frFirst.getContentPane();
cnFirst.setLayout (new GridLayout (4,4));
cnFirst.setBackground(Color.green);
for(int i=0;i<button.length;i++)
button[i] = new JButton();
cnFirst.add(button);
flag=0;
southPanel = new JPanel ();
btnNewGame = new JButton ("New Game");
southPanel.add (btnNewGame);
btnExit = new JButton ("EXIT");
southPanel.add (btnExit);
frFirst.add (southPanel,BorderLayout.SOUTH);
frFirst.setLocation(200, 200);
frFirst.setSize(400,400);
frFirst.setResizable(false);
frFirst.setVisible(true);
this.frFirst.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// listeners
frFirst.addWindowListener(this);
button[0].addActionListener(this);
button[1].addActionListener(this);
button[2].addActionListener(this);
button[3].addActionListener(this);
button[4].addActionListener(this);
button[5].addActionListener(this);
button[6].addActionListener(this);
button[7].addActionListener(this);
button[8].addActionListener(this);
btnNewGame.addActionListener (this);
btnExit.addActionListener (this);
//define methods of WindowListener
public void windowOpened(WindowEvent we)
public void windowClosing(WindowEvent we)
System.exit(0);
public void windowClosed(WindowEvent we)
public void windowIconified(WindowEvent we)
public void windowDeiconified(WindowEvent we)
public void windowActivated(WindowEvent we)
public void windowDeactivated(WindowEvent we)
public void actionPerformed(ActionEvent ae)
//making the X and O to appear on JButtons
Object obj = ae.getSource();
if (obj instanceof JButton){
JButton jb = (JButton)obj;
if (jb == button[0])
if (flag==0)
button[0].setText("X");
else
button[0].setText("O");
//toggle
flag = (flag==0)?1:0;
if(jb==button[1])
if (flag==0)
button[1].setText("X");
else
button[1].setText("O");
//toggle
flag = (flag==0)?1:0;
if(jb==button[2])
if (flag==0)
button[2].setText("X");
else
button[2].setText("O");
//toggle
flag = (flag==0)?1:0;
if(jb==button[3])
if (flag==0)
button[3].setText("X");
else
button[3].setText("O");
//toggle
flag = (flag==0)?1:0;
if(jb==button[4])
if (flag==0)
button[4].setText("X");
else
button[4].setText("O");
//toggle
flag = (flag==0)?1:0;
if(jb==button[5])
if (flag==0)
button[5].setText("X");
else
button[5].setText("O");
//toggle
flag = (flag==0)?1:0;
if(jb==button[6])
if (flag==0)
button[6].setText("X");
else
button[6].setText("O");
//toggle
flag = (flag==0)?1:0;
if(jb==button[7])
if (flag==0)
button[7].setText("X");
else
button[7].setText("O");
//toggle
flag = (flag==0)?1:0;
if(jb==button[8])
if (flag==0)
button[8].setText("X");
else
button[8].setText("O");
//toggle
flag = (flag==0)?1:0;
//New Game To Reset
if (ae.getSource () == btnNewGame)
/* String text = JOptionPane.showInputDialog(null,"Do You Want To Start A New Game?","Michael's Tic Tac Toe Game!",JOptionPane.WARNING_MESSAGE);
String YES;
if (text == YES)
JOptionPane.showMessageDialog(null,"Do You","Michael's Tic Tac Toe Game!",JOptionPane.WARNING_MESSAGE);
else{
add code to reset game
//Exit Button to Exit
if (ae.getSource () == btnExit)
JOptionPane.showMessageDialog(null,"Thanks For Playing!","Michael's Tic Tac Toe Game!",JOptionPane.INFORMATION_MESSAGE);
this.setVisible(false);
System.exit(0);
} //end of if instanceof
public static void main(String[]args)
//instantiate GUI
new TTT(); -
hi, I've created my code and for the tic tac toe grid but I dont know how to make it look like a grid (i.e
1 2 3
4 5 6
7 8 9)
it has came out as "123X56789" "X" meaning a number has taken up a cross.
can anyone help??
heres the code of the grid........
// GAMEINTERFACE
public class GameInterface extends MyPrint
private String theGrid;
final static char NOUGHT='O', CROSS='X';
public GameInterface()
theGrid = "?123456789";
public void pictureBoard(String theGrid)
for(int i = 1; i<theGrid.length(); i++)
int hit = i%3;
if(hit!=0)
myPrint(Character.toString((theGrid.charAt(i))));
else
myPrint(Character.toString((theGrid.charAt(i))));
public void play(char cell, boolean playTurn)
char noughtCross = ' ';
if(playTurn = true)
noughtCross = CROSS;
else if(playTurn = false)
noughtCross = NOUGHT;
if('1'<=cell || cell<='9')
theGrid=theGrid.substring(0,theGrid.indexOf(cell)) + Character.toString(CROSS) + theGrid.substring(theGrid.indexOf(cell)+1);
else if('1'<=cell || cell<='9')
theGrid=theGrid.substring(0,theGrid.indexOf(cell)) + Character.toString(NOUGHT) + theGrid.substring(theGrid.indexOf(cell)+1);
public String display()
return theGrid;
Plus how do i create a 'O' in the output as 'X' appears for the 2 players playing.
this will be very appreciated.
many thanks
Davejust tried that warnerja, it doesnt work either.
it has to be linked to this other class(program below)
//GAME
public class Game extends MyPrint
GameInterface gameInterface;
String s = "?123456789";
Player player1;
Player player2;
public Game() // Constructor
public void makeMove()
gameInterface = new GameInterface ();
player1 = new Player ();
player2 = new Player ();
myPrintln("Enter name of player");
String FP = c.input.readString();
myPrintln(FP, SYSTEM);
myPrintln("Enter name of other player");
String SP = c.input.readString();
myPrintln(SP, SYSTEM);
gameInterface.pictureBoard(s);
myPrintln("");
//boolean whoWon=false;
int loop = 0;
while(loop<=6)
player1.setName(FP);
myPrintln(player1.getName() + " (X) to play");
myPrintln("Enter move by selecting number from grid");
myPrintln("or 0 to draw");
char name1 = c.input.readChar();
name1 = c.input.readChar();
boolean playTurn = true;
gameInterface.play(name1, true);
gameInterface.pictureBoard(gameInterface.display());
myPrintln("");
//if(checkWin(gameInt.display()))
// whoWon=true;
// break;
player2.setName(SP);
myPrintln(player2.getName() + " (O) to play");
myPrintln("Enter move by selecting number from grid");
myPrintln("or 0 to draw");
char name2 = c.input.readChar();
name2 = c.input.readChar();
playTurn = false;
gameInterface.play(name2, false);
gameInterface.pictureBoard(gameInterface.display());
myPrintln("");
//if(checkWin(gameInt.display()))
// whoWon=true;
// break;
loop++;
} -
Gui tris (tic tac toe)
Hi,
i am trying to create the tris game in java (maybe you know this game as tic tac toe). I created windows and the alghoritm to play. But now i have the problem to create the board. My idea is to create a board with nine clickable cells, the player clicks on the cell he wants (if it's free), then the computer plays and so on...but i don't have the knowledges of making complex graphic things in java. How can I do?ok, and how can i manage the player's click?MouseListener on the JLabel.
remember
also that when the player clicks, the program must
draw a symbol (x or o depending from the choice of
player). how can i do all this things? For a noob
like me this is very difficultRead the tutorials. I'm not going to explain to you how to create your app if you can read it up yourself.
Maybe you are looking for
-
How to change the margins in a new section?
Is this possible? How?
-
Is there any way to directly convert and object Array to a Collection object. Basically i need to create a ArrayList from Object Array. The ArrayList has a constructor and also provides a method addAll() that accept Collection as parameter. So the pr
-
Airplay not displaying on iphone since getting new Netgear router
Hello, I had no problems running airplay through my phone through my apple tv onto my TV when I used AT&T internet and router. Since I changed to Charter internet and their Netgear WNDR3800 router I can't get the airplay to display on any of our pho
-
Cisco NCS admin password recovery.
Hi All In Cisco NCS shell I have incorrectly entered the following command in order to chang ethe admin password and saved it username admin password hash <password> role admin and hence lost the access to shell (ssh). Is there a way to retrieve or r
-
Profitability segment in Entry Data Profile CATS
Hello. I would like to know how to enter the field "profitability segment" as a default value in the Data Entry Profile CATS. I have intended via customizing but I am not able to find the field profitability segment. Thank you very much for your help