Results 1 to 2 of 2
  1. #1
    nuubik is offline Member
    Join Date
    Nov 2011
    Posts
    1
    Rep Power
    0

    Default 2 player java game

    Hello. I have task in java. I have to find/create ( using google or something like that) game. Game must be for 2 players and it has to log results in text file ( logs ) and it must use at least 3 swing or awt objects. I have found a tic-tac-toe game , but the problem is, that i can't figure out or find information that could help me to create a part, that does logging (writing logs(text files) with results). Mby someone could help me with this problem. I had another idea about finding word scramble game for 2 players with logs, but I failed. If someone could help me out i would be very thankful.

    Code:

    Java Code:
    package tictactoe;
    
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.util.*;
    
    public class TicTacToe implements ActionListener	{
    	final String VERSION = "1.0";
    //Setting up ALL the variables
    	JFrame window = new JFrame("Tic-Tac-Toe " + VERSION);
    	
    	JMenuBar mnuMain = new JMenuBar();
    	JMenuItem 	mnuNewGame = new JMenuItem("New Game"),	
    					mnuInstruction = new JMenuItem("Instructions"),
    					mnuExit = new JMenuItem("Exit"), 
    					mnuAbout = new JMenuItem("About");
    	
    	JButton 	btn1v1 = new JButton("Player vs Player"),
    				btn1vCPU = new JButton("Player vs CPU"),
    				btnBack = new JButton("<--back");
    	JButton btnEmpty[] = new JButton[10];
    	
    	JPanel 	pnlNewGame = new JPanel(),
    				pnlNorth = new JPanel(),
    				pnlSouth = new JPanel(),
    				pnlTop = new JPanel(),
    				pnlBottom = new JPanel(),
    				pnlPlayingField = new JPanel();
    	JLabel lblTitle = new JLabel("Tic-Tac-Toe");
    	JTextArea txtMessage = new JTextArea();
    	
    	final int winCombo[][] = new int[][]	{
    		{1, 2, 3}, 			{1, 4, 7}, 		{1, 5, 9},
    		{4, 5, 6}, 			{2, 5, 8}, 		{3, 5, 7},
    		{7, 8, 9}, 			{3, 6, 9}
    /*Horizontal Wins*/	/*Vertical Wins*/ /*Diagonal Wins*/
    	};
    	final int X = 412, Y = 268, color = 190;
    	boolean inGame = false;
    	boolean win = false;
    	boolean btnEmptyClicked = false;
    	String message;
    	int turn = 1;
    	int wonNumber1 = 1, wonNumber2 = 1, wonNumber3 = 1;
    	
    
    	public TicTacToe()	{	//Setting game properties and layout and sytle...
    	//Setting window properties:
    		window.setSize(X, Y);
    		window.setLocation(450, 260);
    		window.setResizable(false);
    		window.setLayout(new BorderLayout());
    		window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		
    	//Setting Panel layouts and properties
    		pnlNewGame.setLayout(new GridLayout(2, 1, 2, 10));
    		pnlNorth.setLayout(new FlowLayout(FlowLayout.CENTER));
    		pnlSouth.setLayout(new FlowLayout(FlowLayout.CENTER));
    		
    		pnlNorth.setBackground(new Color(color-20, color-20, color-20));
    		pnlSouth.setBackground(new Color(color, color, color));
    		
    		pnlTop.setBackground(new Color(color, color, color));
    		pnlBottom.setBackground(new Color(color, color, color));
    		
    		pnlTop.setLayout(new FlowLayout(FlowLayout.CENTER));
    		pnlBottom.setLayout(new FlowLayout(FlowLayout.CENTER));
    		pnlNewGame.setBackground(Color.blue);
    		
    	//Adding menu items to menu bar
    		mnuMain.add(mnuNewGame);
    		mnuMain.add(mnuInstruction);
    		mnuMain.add(mnuAbout);
    		mnuMain.add(mnuExit);//---->Menu Bar Complete
    		
    	//Adding buttons to NewGame panel
    		pnlNewGame.add(btn1v1);
    		pnlNewGame.add(btn1vCPU);
    		
    	//Adding Action Listener to all the Buttons and Menu Items
    		mnuNewGame.addActionListener(this);
    		mnuExit.addActionListener(this);
    		mnuInstruction.addActionListener(this);
    		mnuAbout.addActionListener(this);
    		btn1v1.addActionListener(this);
    		btn1vCPU.addActionListener(this);
    		btnBack.addActionListener(this);
    	
    	//Setting up the playing field
    		pnlPlayingField.setLayout(new GridLayout(3, 3, 2, 2));
    		pnlPlayingField.setBackground(Color.black);
    		for(int i=1; i<=9; i++)	{
    			btnEmpty[i] = new JButton();
    			btnEmpty[i].setBackground(new Color(220, 220, 220));
    			btnEmpty[i].addActionListener(this);
    			pnlPlayingField.add(btnEmpty[i]);
    		}
    
    	//Adding everything needed to pnlNorth and pnlSouth
    		pnlNorth.add(mnuMain);
    		pnlSouth.add(lblTitle);
    		
    	//Adding to window and Showing window
    		window.add(pnlNorth, BorderLayout.NORTH);
    		window.add(pnlSouth, BorderLayout.CENTER);
    		window.setVisible(true);
    	}
    
    
    //-------------------START OF ACTION PERFORMED CLASS-------------------------//	
    	public void actionPerformed(ActionEvent click)	{
    		Object source = click.getSource();
    		for(int i=1; i<=9; i++)	{
    			if(source == btnEmpty[i] && turn <	10)	{
    				btnEmptyClicked = true;
    				if(!(turn % 2 == 0))
    					btnEmpty[i].setText("X");
    				else
    					btnEmpty[i].setText("O");
    				btnEmpty[i].setEnabled(false);
    				pnlPlayingField.requestFocus();
    				turn++;
    			}
    		}
    		if(btnEmptyClicked)	{
    			checkWin();
    			btnEmptyClicked = false;
    		}
    		if(source == mnuNewGame)	{
    			clearPanelSouth();
    			pnlSouth.setLayout(new GridLayout(2, 1, 2, 5));
    			pnlTop.add(pnlNewGame);
    			pnlBottom.add(btnBack);
    			pnlSouth.add(pnlTop);
    			pnlSouth.add(pnlBottom);
    			
    		}
    		else if(source == btn1v1)	{
    			if(inGame)	{
    				int option = JOptionPane.showConfirmDialog(null, "If you start a new game," +
    				 	"your current game will be lost..." + "\n" +
    					"Are you sure you want to continue?", 
    					"Quit Game?" ,JOptionPane.YES_NO_OPTION);
    				if(option == JOptionPane.YES_OPTION)	{
    					inGame = false;
    				}
    			}
    			if(!inGame)	{
    				btnEmpty[wonNumber1].setBackground(new Color(220, 220, 220));
    				btnEmpty[wonNumber2].setBackground(new Color(220, 220, 220));
    				btnEmpty[wonNumber3].setBackground(new Color(220, 220, 220));
    				turn = 1;
    				for(int i=1; i<10; i++)	{
    					btnEmpty[i].setText("");
    					btnEmpty[i].setEnabled(true);
    				}
    				win = false;
    				showGame();
    				
    			}
    		}
    		else if(source == btn1vCPU)	{
    			JOptionPane.showMessageDialog(null, "Coming Soon!!");
    		}
    		else if(source == mnuExit)	{
    			int option = JOptionPane.showConfirmDialog(null, "Are you sure you want to exit?", 
    			"Exit Game" ,JOptionPane.YES_NO_OPTION);
    			if(option == JOptionPane.YES_OPTION)
    				System.exit(0);
    		}
    		else if(source == mnuInstruction || source == mnuAbout)	{
    			clearPanelSouth();
    			String message = "";
    			txtMessage.setBackground(new Color(color, color, color));
    			if(source == mnuInstruction)	{
    				message = 	"Instructions:\n\n" +
    								"Your goal is to be the first player to get 3 X's or O's in a\n" +
    								"row. (horizontally, diagonally, or vertically)";
    			} else	{
    				message = 	"About:\n\n" +
    								"Title: Tic-Tac-Toe\n" +
    								"Author: Blmaster\n" +
    								"Version: " + VERSION + "\n";
    			}
    			txtMessage.setEditable(false);
    			txtMessage.setText(message);
    			pnlSouth.setLayout(new GridLayout(2, 1, 2, 5));
    			pnlTop.add(txtMessage);
    			pnlBottom.add(btnBack);
    			pnlSouth.add(pnlTop);
    			pnlSouth.add(pnlBottom);
    		}
    		else if(source == btnBack)	{
    			if(inGame)
    				showGame();
    			else	{
    				clearPanelSouth();
    				pnlSouth.setLayout(new FlowLayout(FlowLayout.CENTER));
    				pnlNorth.setVisible(true);
    				pnlSouth.add(lblTitle);
    			}
    		}
    		pnlSouth.setVisible(false);
    		pnlSouth.setVisible(true);
    	}
    //-------------------END OF ACTION PERFORMED CLASS-------------------------//
    
    
    /*
    		----------------------------------
    		Start of all the other methods.	|
    		----------------------------------
    */
    	public void showGame()	{	//	Shows the Playing Field
    										//	*IMPORTANT*- Does not start out brand new (meaning just shows what it had before)
    		clearPanelSouth();
    		inGame = true;
    		pnlSouth.setLayout(new BorderLayout());
    		pnlSouth.add(pnlPlayingField, BorderLayout.CENTER);
    		pnlPlayingField.requestFocus();
    	}
    	
    	public void checkWin()	{	//	checks if there are 3 symbols in a row vertically, diagonally, or horizontally.
    										//	then shows a message and disables buttons.
    		for(int i=0; i<7; i++)	{
    			if(
    					!btnEmpty[winCombo[i][0]].getText().equals("") &&
    					btnEmpty[winCombo[i][0]].getText().equals(btnEmpty[winCombo[i][1]].getText()) &&
    					//								if {1 == 2 && 2 == 3}
    					btnEmpty[winCombo[i][1]].getText().equals(btnEmpty[winCombo[i][2]].getText())
    					/*
    						The way this checks the if someone won is:
    						First: it checks if the btnEmpty[x] is not equal to an empty string-	x being the array number 
    							inside the multi-dementional array winCombo[checks inside each of the 7 sets][the first number]
    						Secong: it checks if btnEmpty[x] is equal to btnEmpty[y]- x being winCombo[each set][the first number]
    							y being winCombo[each set the same as x][the second number] (So basically checks if the first and
    							second number in each set is equal to each other)
    						Third: it checks if btnEmtpy[y] is eual to btnEmpty[z]- y being the same y as last time and z being
    							winCombo[each set as y][the third number]
    						Conclusion:	So basically it checks if it is equal to the btnEmpty is equal to each set of numbers
    					*/
    				)	{
    				win = true;
    				wonNumber1 = winCombo[i][0];
    				wonNumber2 = winCombo[i][1];
    				wonNumber3 = winCombo[i][2];
    				btnEmpty[wonNumber1].setBackground(Color.white);
    				btnEmpty[wonNumber2].setBackground(Color.white);
    				btnEmpty[wonNumber3].setBackground(Color.white);
    				break;
    			}
    		}
    		if(win || (!win && turn>9))	{
    			if(win)	{
    				if(turn % 2 == 0)
    					message = "X has won!";
    				else	
    					message = "O has won!";
    				win = false;
    			}	else if(!win && turn>9)	{
    				message = "Both players have tied!\nBetter luck next time.";
    			}
    				JOptionPane.showMessageDialog(null, message);
    			for(int i=1; i<=9; i++)	{
    				btnEmpty[i].setEnabled(false);
    			}
    		}
    	}
    	
    	public void clearPanelSouth()	{	//Removes all the possible panels 
    												//that pnlSouth, pnlTop, pnlBottom
    												//could have.	
    		pnlSouth.remove(lblTitle);
    		pnlSouth.remove(pnlTop);
    		pnlSouth.remove(pnlBottom);
    		pnlSouth.remove(pnlPlayingField);
    		pnlTop.remove(pnlNewGame);
    		pnlTop.remove(txtMessage);
    		pnlBottom.remove(btnBack);
    	}
    	
    	public static void main(String[] args)	{
    		new TicTacToe();//	Calling the class construtor.
    	}
    }

  2. #2
    KevinWorkman's Avatar
    KevinWorkman is offline Crazy Cat Lady
    Join Date
    Oct 2010
    Location
    Washington, DC
    Posts
    3,691
    Rep Power
    8

    Default Re: 2 player java game

    Instead of copying and pasting random code you find on the internet, do yourself a favor and write it yourself. You're going to save yourself a lot of trouble, and you might actually learn something.
    How to Ask Questions the Smart Way
    Static Void Games - Play indie games, learn from game tutorials and source code, upload your own games!

Similar Threads

  1. Platform Game |Player Not Showing Up|
    By petur170 in forum New To Java
    Replies: 16
    Last Post: 06-28-2011, 05:16 PM
  2. Rpg game player wont move help please
    By askumi in forum New To Java
    Replies: 19
    Last Post: 12-22-2010, 02:21 AM
  3. How to add online two player to a Java game?
    By michealsmith in forum Java Gaming
    Replies: 1
    Last Post: 11-30-2010, 07:43 PM
  4. how to log into a game with my player.java class
    By basketball8533 in forum New To Java
    Replies: 11
    Last Post: 10-13-2010, 12:40 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •