Jogo da velha modificado

Preciso de ajuda para criar um jogo da velha modificado, com apenas três jogadas para cada jogador e depois começar a mover as pedras com as seguintes regras;
file:///C:/Users/Edy/Desktop/image%20(1).png

Posta imagem não (até porque essa sequer foi anexada). Transcreva aqui as regras e as suas dificuldades.

Regras do Jogo

Cada jogador tem três pedras. Quem joga primeiro será chamado de X, e o outro jogador é O. O objetivo de cada jogador é posicionar suas três pedras em linha reta (vertical, horizontal ou diagonal). O tabuleiro começa vazio, e alternadamente os jogadores fazem suas jogadas, começando pelo jogador X. Enquanto não estiverem as seis pedras no tabuleiro, uma jogada consiste em colocar uma pedra em uma casa vazia. Quando as três pedras de cada jogador já estiverem no tabuleiro, uma jogada passa a ser a movimentação de uma pedra para uma posição vizinha não ocupada. Define-se como casa vizinha aquela à qual se pode chegar movendo-se uma posição no sentido vertical, horizontal, ou diagonal.

Cada jogador só pode mexer em suas próprias pedras. Não é permitido “passar” a vez.

Interessantes essas regras. Você resolve isso fácil com um array bidimensional, com cada posição com 3 valores (casa vazia, casa ocupada por peça do jogador X e casa ocupada por peça do jogador O).

Posta aí qual sua dúvida específica.

Estou com dificuldade em mover as pedras.

Posta aí teu código completo, pra vermos como podemos ajudar.

package lp;

import java.util.Scanner;

/**
 *
 * @author Edy
 */
public class jogo {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner ler = new Scanner(System.in);
        
       char[][] jogo= new char[3][3];
        System.out.println("jogador 1= X");
        System.out.println("jogador 2= O");
        boolean ganhou =false;
        int jogada=1;
        char sinal;
        int linha=0, coluna=0;
        while(!ganhou){
            if(jogada%2==1){// jooagdor um
                System.out.println("jogador 1");
                sinal= 'X';
            }else{
                System.out.println("jogador 2");
                sinal= 'O';
            }
            boolean linhavalida= false;
            while(!linhavalida){
                System.out.println("linha ");
                linha= ler.nextInt();
                if(linha>=1 && linha<=3){
                    linhavalida= true;
                }else{
                    System.out.println("jogada invalida , tente novamente");
                }
            }
            
            boolean colunavalida=false;
            while(!colunavalida){
                System.out.println("coluna");
                coluna=ler.nextInt();
                
                 if(coluna>=1&& coluna<=3){
                     colunavalida= true;
                     
                 }else{
                     System.out.println("jogada invalida , tente novamente");
                 }
            }
            linha--;
            coluna--;
            if(jogo[linha][coluna]== 'X' || jogo[linha][coluna]=='O'){
                System.out.println("Posicao ocupada");
            }else{// jogada valida
                jogo[linha][coluna]=sinal; 
                jogada++;
            }
            for(int i=0; i<jogo.length; i++){
                System.out.println("__ __ __ ");
                for(int j=0; j<jogo[i].length; j++){
                    System.out.print(jogo[i][j]  + " | ");
                    
                }
                System.out.println(); 
        }
         if((jogo[0][0]=='X' && jogo[0][1]=='X'&& jogo[0][2]=='X')||// linha1
                (jogo[1][0]=='X' && jogo[1][1]=='X'&& jogo[1][2]=='X')|| // linha2
                 (jogo[2][0]=='X' && jogo[2][1]=='X'&& jogo[2][2]=='X')||// linha3
                 
                 (jogo[0][0]=='X' && jogo[1][0]=='X'&& jogo[2][0]=='X')|//coluna1
                (jogo[0][1]=='X' && jogo[1][1]=='X'&& jogo[2][1]=='X')||// coluna2
                 (jogo[0][2]=='X' && jogo[1][2]=='X'&& jogo[2][2]=='X')||// coluna 3
                  (jogo[0][0]=='X' && jogo[1][1]=='X'&& jogo[2][2]=='X'))//Diagonal
         {
               ganhou =true;
            System.out.println("Parabens jogador 1 Ganhou");
             
         }else if((jogo[0][0]=='O' && jogo[0][1]=='O'&& jogo[0][2]=='O')||
                (jogo[1][0]=='O' && jogo[1][1]=='O'&& jogo[1][2]=='O')|| 
                 (jogo[2][0]=='O' && jogo[2][1]=='O'&& jogo[2][2]=='O')||
                 
                 (jogo[0][0]=='O' && jogo[1][0]=='O'&& jogo[2][0]=='O')|
                (jogo[0][1]=='O' && jogo[1][1]=='O'&& jogo[2][1]=='O')||
                 (jogo[0][2]=='O' && jogo[1][2]=='O'&& jogo[2][2]=='O')||
                  (jogo[0][0]=='O' && jogo[1][1]=='O'&& jogo[2][2]=='O')){//Diagonal
                             ganhou =true;
                             System.out.println("Jogador 2 ganhou");
             
         }else if (jogada>6){
             System.out.println("Limite de jogadas atingido , comecar a mover as pedras");
             
            
             
         }
            
                    
                 {
                         
                     
            
        }
         
         
         
         
        }
    }
            
        
}