SlideShare uma empresa Scribd logo
1 de 11
Tabuleiro
package restaum;
public class Tabuleiro {
private int aux;
private char[][] tabuleiro = {
{' ',' ','x','x','x',' ',' '},
{' ',' ','x','x','x',' ',' '},
{'x','x','x','x','x','x','x'},
{'x','x','x','o','x','x','x'},
{'x','x','x','x','x','x','x'},
{' ',' ','x','x','x',' ',' '},
{' ',' ','x','x','x',' ',' '}
};
public Tabuleiro(){
aux=32;
}
private void mostraTabuleiro(){
System.out.println("");
System.out.print(" ");
for(int i=0;i<7;i++){
System.out.print(" "+i);
}
System.out.println("");
for(int i = 0;i<7;i++){
System.out.print(i+" ");
for(int j = 0;j<7;j++){
System.out.print(tabuleiro[i][j]+" ");
}
System.out.println("");
}
System.out.println("PEÇAS: "+ aux );
}
private Boolean verificaMov(Movimentar c){
if(c.getE() >6 | c.getE()<0 | c.getT() >6 | c.getT()<0){
return false;
}
if((c.getE()>4 | c.getE()<2)& (c.getT()<2 | c.getT()>4)){
return false;
}
return true;
}
private void jogada(){
System.out.print("PONTO PARA ONDE A PEÇA SERÁ MOVIMENTADA: n");
Movimentar rInicio = new Movimentar(Console.leInt("LINHA:
"),Console.leInt("COLUNA: "));
System.out.print("PONTO PARA ONDE A PEÇA SERÁ MOVIMENTADA: n");
Movimentar rFim = new Movimentar(Console.leInt("LINHA:
"),Console.leInt("COLUNA: "));
if(!verificaMov(rInicio) | !verificaMov(rFim)){
System.out.println("MOVIMENTO INVALIDO PARA UMA DAS
PEÇAS.n");
}
else{
if(!verificaJogo(rInicio,rFim)){
System.out.print("JOGADA INVÁLIDA.n");
}
else{
Movimentar rMeio = new Movimentar(0,0);
if(rInicio.getE()!=rFim.getE()){
rMeio.setE((rInicio.getE()+rFim.getE())/2);
rMeio.setT(rInicio.getT());
}
else{
rMeio.setT((rInicio.getT()+rFim.getT())/2);
rMeio.setE(rInicio.getE());
}
tabuleiro[rFim.getE()][rFim.getT()]='x';
tabuleiro[rInicio.getE()][rInicio.getT()]='o';
tabuleiro[rMeio.getE()][rMeio.getT()]='o';
aux--;
}
}
}
public Boolean partida(){
do{
mostraTabuleiro();
jogada();
}while(temJogadas());
mostraTabuleiro();
if(aux>1){
return false;
}
else{
return true;
}
}
private Boolean verificaJogo(Movimentar r1,Movimentar r2){
if(tabuleiro[r1.getE()][r1.getT()]!='x' | tabuleiro[r2.getE()][r2.getT()]!='o'){
return false;
}
if(r1.getE()==r2.getE() & r1.getT()==r2.getT()){
return false;
}
if(r1.getE()!=r2.getE() & r1.getT()!=r2.getT()){
return false;
}
if(r1.getE()==r2.getE()){
if(Math.abs(r1.getT()-r2.getT())!=2){
return false;
}
if(tabuleiro[r1.getE()][(r1.getT()+r2.getT())/2]!='x'){
return false;
}
}
else{
if(Math.abs(r1.getE()-r2.getE())!=2){
return false;
}
if(tabuleiro[(r1.getE()+r2.getE())/2][r1.getT()]!='x'){
return false;
}
}
return true;
}
private Boolean temJogadas(){
if(aux == 1){
return false;
}
for(int i=0;i<7;i++){
for(int j=0;j<5;j++){
if(tabuleiro[i][j] == 'x' & tabuleiro[i][j+1]=='x' & tabuleiro[i][j+2]
=='o'){
return true;
}
}
for(int j=6;j>1;j--){
if(tabuleiro[i][j] == 'x' & tabuleiro[i][j-1]=='x' & tabuleiro[i][j-2]
=='o'){
return true;
}
}
}
for(int j=0;j<7;j++){
for(int i=0;i<5;i++){
if(tabuleiro[i][j] == 'x' & tabuleiro[i+1][j]=='x' &
tabuleiro[i+2][j]=='o'){
return true;
}
}
for(int i=6;i>1;i--){
if(tabuleiro[i][j] == 'x' & tabuleiro[i-1][j]=='x' & tabuleiro[i-
2][j]=='o'){
return true;
}
}
}
return false;
}
}
Movimentar
package restaum;
public class Movimentar {
private int e;
private int t;
public Movimentar(int e,int t){
setE(e);
setT(t);
}
public void setE(int e){
this.e=e;
}
public int getE(){
return e;
}
public void setT(int t){
this.t = t;
}
public int getT(){
return t;
}
}
Principal
package restaum;
public class Principal {
public static void main(String[] args) {
System.out.println("nn JOGO RESTA 1(UM) DESENVOLVIDO POR THALITA
DE LIMA CHAVES E EDSON DA SILVA PRACZYK ,n" +" ALUNOS DO CURSO ANÁLISE E
DESENVOLVIMENTO DE SISTEMAS,n" +" ORIENTADOS PELA PROFESSORA FERNANDA
- CURITIBA MARÇO DE 2013.nn");
int op=0;
String[] opcoes = {"JOGAR","ENCERRAR PARTIDA"};
do{
op = Console.menu("JOGO RESTA UM", opcoes);
switch(op){
case 1:
Tabuleiro tabuleiro = new Tabuleiro();
if(tabuleiro.partida()){
System.out.println("PARABÉNS VOCÊ VENCEU.");
}
else{
System.out.println("INFELIZMENTE NÃO FOI DESTA
VEZ, TENTE DENOVO .");
}
break;
case 2:
System.out.println("FIM");
break;
}
}while(op!=2);
} }
Console
package restaum;
import java.util.Scanner;
public class Console{
private static Scanner teclado = new Scanner(System.in);
// método que lê uma String do teclado
public static String leString(){
return teclado.nextLine();
}
// método que mostra uma mensagem na tela e lê uma String do teclado.
// caso a String seja nula ou em branco, repete a amostragem e a leitura.
public static String leString (String txt){
String str="";
while (true){
System.out.print(txt);
str=teclado.nextLine();
if (str!=null && !str.trim().equals(""))
return str.trim();
}
}
// método que mostra uma mensagem na tela e lê um int do teclado.
// caso o valor digitado não seja um número inteiro, repete a amostragem e a leitura
public static int leInt(String txt){
while (true){
try{
return Integer.parseInt (leString(txt));
}catch (NumberFormatException e){
System.out.println("Numero Invalido");
}
}
}
// método que mostra uma mensagem e lê um double do teclado
// caso o valor digitado não seja um número double, repete a amostragem e a leitura
public static double leDouble(String txt){
while (true){
try{
return Double.parseDouble(leString(txt));
}catch (NumberFormatException e){
System.out.println("Numero Invalido");
}
}
}
// método que mostra uma mensagem e lê um char do teclado
// caso o valor digitado não seja um caracter, repete a amostragem e a leitura
// caso seja digitado um texto, retorna apenas o 1o. caracter
public static char leChar(String txt){
while (true){
try{
return leString(txt).charAt(0);
}catch (NumberFormatException e){
System.out.println("Numero Invalido");
}
}
}
// método que apresenta um menu na tela e retorna o número da opção
selecionada
public static int menu(String titulo, String[] opcoes){
int op = 0;
while(true){
System.out.println(titulo);
for(int i = 0; i < opcoes.length; i++){
System.out.println((i + 1) + ". " + opcoes[i]);
}
op = leInt("Opção: ");
if (op > 0 && op <= opcoes.length)
return op;
else
System.out.println("Opção inválida");
}
}
}

Mais conteúdo relacionado

Mais procurados

[OKKYCON] 박재성 - 의식적인 연습으로 TDD, 리팩토링 연습하기
[OKKYCON] 박재성 - 의식적인 연습으로 TDD, 리팩토링 연습하기[OKKYCON] 박재성 - 의식적인 연습으로 TDD, 리팩토링 연습하기
[OKKYCON] 박재성 - 의식적인 연습으로 TDD, 리팩토링 연습하기OKKY
 
Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.Alexey Lesovsky
 
JavaScript - Chapter 9 - TypeConversion and Regular Expressions
 JavaScript - Chapter 9 - TypeConversion and Regular Expressions  JavaScript - Chapter 9 - TypeConversion and Regular Expressions
JavaScript - Chapter 9 - TypeConversion and Regular Expressions WebStackAcademy
 
Your code sucks, let's fix it
Your code sucks, let's fix itYour code sucks, let's fix it
Your code sucks, let's fix itRafael Dohms
 
Oracle Database SQL Tuning Concept
Oracle Database SQL Tuning ConceptOracle Database SQL Tuning Concept
Oracle Database SQL Tuning ConceptChien Chung Shen
 
Sql Objects And PL/SQL
Sql Objects And PL/SQLSql Objects And PL/SQL
Sql Objects And PL/SQLGary Myers
 
A Case Study in Attacking KeePass
A Case Study in Attacking KeePassA Case Study in Attacking KeePass
A Case Study in Attacking KeePassWill Schroeder
 
C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기Heo Seungwook
 
UKOUG - 25 years of hints and tips
UKOUG - 25 years of hints and tipsUKOUG - 25 years of hints and tips
UKOUG - 25 years of hints and tipsConnor McDonald
 
Exadata_X10M-Hardware-Overview.pdf
Exadata_X10M-Hardware-Overview.pdfExadata_X10M-Hardware-Overview.pdf
Exadata_X10M-Hardware-Overview.pdfKoko842772
 
Ash masters : advanced ash analytics on Oracle
Ash masters : advanced ash analytics on Oracle Ash masters : advanced ash analytics on Oracle
Ash masters : advanced ash analytics on Oracle Kyle Hailey
 
MySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software TestMySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software TestI Goo Lee
 
구글테스트
구글테스트구글테스트
구글테스트진화 손
 

Mais procurados (20)

Bubble in link list
Bubble in link listBubble in link list
Bubble in link list
 
[OKKYCON] 박재성 - 의식적인 연습으로 TDD, 리팩토링 연습하기
[OKKYCON] 박재성 - 의식적인 연습으로 TDD, 리팩토링 연습하기[OKKYCON] 박재성 - 의식적인 연습으로 TDD, 리팩토링 연습하기
[OKKYCON] 박재성 - 의식적인 연습으로 TDD, 리팩토링 연습하기
 
Oracle Instance 介紹
Oracle Instance 介紹Oracle Instance 介紹
Oracle Instance 介紹
 
Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.
 
Java inheritance
Java inheritanceJava inheritance
Java inheritance
 
JavaScript - Chapter 9 - TypeConversion and Regular Expressions
 JavaScript - Chapter 9 - TypeConversion and Regular Expressions  JavaScript - Chapter 9 - TypeConversion and Regular Expressions
JavaScript - Chapter 9 - TypeConversion and Regular Expressions
 
Your code sucks, let's fix it
Your code sucks, let's fix itYour code sucks, let's fix it
Your code sucks, let's fix it
 
Using Statspack and AWR for Memory Monitoring and Tuning
Using Statspack and AWR for Memory Monitoring and TuningUsing Statspack and AWR for Memory Monitoring and Tuning
Using Statspack and AWR for Memory Monitoring and Tuning
 
Oracle Database SQL Tuning Concept
Oracle Database SQL Tuning ConceptOracle Database SQL Tuning Concept
Oracle Database SQL Tuning Concept
 
Sql Objects And PL/SQL
Sql Objects And PL/SQLSql Objects And PL/SQL
Sql Objects And PL/SQL
 
A Case Study in Attacking KeePass
A Case Study in Attacking KeePassA Case Study in Attacking KeePass
A Case Study in Attacking KeePass
 
C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기
 
UKOUG - 25 years of hints and tips
UKOUG - 25 years of hints and tipsUKOUG - 25 years of hints and tips
UKOUG - 25 years of hints and tips
 
Deep Dive In To Kerberos
Deep Dive In To KerberosDeep Dive In To Kerberos
Deep Dive In To Kerberos
 
Exadata_X10M-Hardware-Overview.pdf
Exadata_X10M-Hardware-Overview.pdfExadata_X10M-Hardware-Overview.pdf
Exadata_X10M-Hardware-Overview.pdf
 
Thread model in java
Thread model in javaThread model in java
Thread model in java
 
Inheritance In Java
Inheritance In JavaInheritance In Java
Inheritance In Java
 
Ash masters : advanced ash analytics on Oracle
Ash masters : advanced ash analytics on Oracle Ash masters : advanced ash analytics on Oracle
Ash masters : advanced ash analytics on Oracle
 
MySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software TestMySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software Test
 
구글테스트
구글테스트구글테스트
구글테스트
 

Último

Libras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS MemoriaLibras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS Memorialgrecchi
 
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamentalAntônia marta Silvestre da Silva
 
A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.silves15
 
Rotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaRotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaronaldojacademico
 
Aula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfAula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfFernandaMota99
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManuais Formação
 
análise de redação completa - Dissertação
análise de redação completa - Dissertaçãoanálise de redação completa - Dissertação
análise de redação completa - DissertaçãoMaiteFerreira4
 
Portfolio_Trilha_Meio_Ambiente_e_Sociedade.pdf
Portfolio_Trilha_Meio_Ambiente_e_Sociedade.pdfPortfolio_Trilha_Meio_Ambiente_e_Sociedade.pdf
Portfolio_Trilha_Meio_Ambiente_e_Sociedade.pdfjanainadfsilva
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
Revista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfRevista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfMárcio Azevedo
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxLuizHenriquedeAlmeid6
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
A poesia - Definições e Característicass
A poesia - Definições e CaracterísticassA poesia - Definições e Característicass
A poesia - Definições e CaracterísticassAugusto Costa
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...Rosalina Simão Nunes
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxBeatrizLittig1
 

Último (20)

Libras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS MemoriaLibras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS Memoria
 
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
 
Bullying, sai pra lá
Bullying,  sai pra láBullying,  sai pra lá
Bullying, sai pra lá
 
A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.
 
Rotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaRotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riqueza
 
Aula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfAula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdf
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envio
 
análise de redação completa - Dissertação
análise de redação completa - Dissertaçãoanálise de redação completa - Dissertação
análise de redação completa - Dissertação
 
Portfolio_Trilha_Meio_Ambiente_e_Sociedade.pdf
Portfolio_Trilha_Meio_Ambiente_e_Sociedade.pdfPortfolio_Trilha_Meio_Ambiente_e_Sociedade.pdf
Portfolio_Trilha_Meio_Ambiente_e_Sociedade.pdf
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
Revista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfRevista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdf
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
A poesia - Definições e Característicass
A poesia - Definições e CaracterísticassA poesia - Definições e Característicass
A poesia - Definições e Característicass
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docx
 

Resta um java

  • 1. Tabuleiro package restaum; public class Tabuleiro { private int aux; private char[][] tabuleiro = { {' ',' ','x','x','x',' ',' '}, {' ',' ','x','x','x',' ',' '}, {'x','x','x','x','x','x','x'}, {'x','x','x','o','x','x','x'}, {'x','x','x','x','x','x','x'}, {' ',' ','x','x','x',' ',' '}, {' ',' ','x','x','x',' ',' '} }; public Tabuleiro(){ aux=32; } private void mostraTabuleiro(){ System.out.println(""); System.out.print(" "); for(int i=0;i<7;i++){ System.out.print(" "+i); } System.out.println("");
  • 2. for(int i = 0;i<7;i++){ System.out.print(i+" "); for(int j = 0;j<7;j++){ System.out.print(tabuleiro[i][j]+" "); } System.out.println(""); } System.out.println("PEÇAS: "+ aux ); } private Boolean verificaMov(Movimentar c){ if(c.getE() >6 | c.getE()<0 | c.getT() >6 | c.getT()<0){ return false; } if((c.getE()>4 | c.getE()<2)& (c.getT()<2 | c.getT()>4)){ return false; } return true; } private void jogada(){ System.out.print("PONTO PARA ONDE A PEÇA SERÁ MOVIMENTADA: n"); Movimentar rInicio = new Movimentar(Console.leInt("LINHA: "),Console.leInt("COLUNA: ")); System.out.print("PONTO PARA ONDE A PEÇA SERÁ MOVIMENTADA: n");
  • 3. Movimentar rFim = new Movimentar(Console.leInt("LINHA: "),Console.leInt("COLUNA: ")); if(!verificaMov(rInicio) | !verificaMov(rFim)){ System.out.println("MOVIMENTO INVALIDO PARA UMA DAS PEÇAS.n"); } else{ if(!verificaJogo(rInicio,rFim)){ System.out.print("JOGADA INVÁLIDA.n"); } else{ Movimentar rMeio = new Movimentar(0,0); if(rInicio.getE()!=rFim.getE()){ rMeio.setE((rInicio.getE()+rFim.getE())/2); rMeio.setT(rInicio.getT()); } else{ rMeio.setT((rInicio.getT()+rFim.getT())/2); rMeio.setE(rInicio.getE()); } tabuleiro[rFim.getE()][rFim.getT()]='x'; tabuleiro[rInicio.getE()][rInicio.getT()]='o'; tabuleiro[rMeio.getE()][rMeio.getT()]='o'; aux--; } }
  • 4. } public Boolean partida(){ do{ mostraTabuleiro(); jogada(); }while(temJogadas()); mostraTabuleiro(); if(aux>1){ return false; } else{ return true; } } private Boolean verificaJogo(Movimentar r1,Movimentar r2){ if(tabuleiro[r1.getE()][r1.getT()]!='x' | tabuleiro[r2.getE()][r2.getT()]!='o'){ return false; } if(r1.getE()==r2.getE() & r1.getT()==r2.getT()){ return false; }
  • 5. if(r1.getE()!=r2.getE() & r1.getT()!=r2.getT()){ return false; } if(r1.getE()==r2.getE()){ if(Math.abs(r1.getT()-r2.getT())!=2){ return false; } if(tabuleiro[r1.getE()][(r1.getT()+r2.getT())/2]!='x'){ return false; } } else{ if(Math.abs(r1.getE()-r2.getE())!=2){ return false; } if(tabuleiro[(r1.getE()+r2.getE())/2][r1.getT()]!='x'){ return false; } } return true; } private Boolean temJogadas(){ if(aux == 1){ return false; } for(int i=0;i<7;i++){ for(int j=0;j<5;j++){ if(tabuleiro[i][j] == 'x' & tabuleiro[i][j+1]=='x' & tabuleiro[i][j+2] =='o'){
  • 6. return true; } } for(int j=6;j>1;j--){ if(tabuleiro[i][j] == 'x' & tabuleiro[i][j-1]=='x' & tabuleiro[i][j-2] =='o'){ return true; } } } for(int j=0;j<7;j++){ for(int i=0;i<5;i++){ if(tabuleiro[i][j] == 'x' & tabuleiro[i+1][j]=='x' & tabuleiro[i+2][j]=='o'){ return true; } } for(int i=6;i>1;i--){ if(tabuleiro[i][j] == 'x' & tabuleiro[i-1][j]=='x' & tabuleiro[i- 2][j]=='o'){ return true; } } } return false; } }
  • 7. Movimentar package restaum; public class Movimentar { private int e; private int t; public Movimentar(int e,int t){ setE(e); setT(t); } public void setE(int e){ this.e=e; } public int getE(){ return e; } public void setT(int t){ this.t = t; } public int getT(){ return t; } }
  • 8. Principal package restaum; public class Principal { public static void main(String[] args) { System.out.println("nn JOGO RESTA 1(UM) DESENVOLVIDO POR THALITA DE LIMA CHAVES E EDSON DA SILVA PRACZYK ,n" +" ALUNOS DO CURSO ANÁLISE E DESENVOLVIMENTO DE SISTEMAS,n" +" ORIENTADOS PELA PROFESSORA FERNANDA - CURITIBA MARÇO DE 2013.nn"); int op=0; String[] opcoes = {"JOGAR","ENCERRAR PARTIDA"}; do{ op = Console.menu("JOGO RESTA UM", opcoes); switch(op){ case 1: Tabuleiro tabuleiro = new Tabuleiro(); if(tabuleiro.partida()){ System.out.println("PARABÉNS VOCÊ VENCEU."); } else{ System.out.println("INFELIZMENTE NÃO FOI DESTA VEZ, TENTE DENOVO ."); } break; case 2: System.out.println("FIM"); break; } }while(op!=2); } }
  • 9. Console package restaum; import java.util.Scanner; public class Console{ private static Scanner teclado = new Scanner(System.in); // método que lê uma String do teclado public static String leString(){ return teclado.nextLine(); } // método que mostra uma mensagem na tela e lê uma String do teclado. // caso a String seja nula ou em branco, repete a amostragem e a leitura. public static String leString (String txt){ String str=""; while (true){ System.out.print(txt); str=teclado.nextLine(); if (str!=null && !str.trim().equals("")) return str.trim(); } } // método que mostra uma mensagem na tela e lê um int do teclado. // caso o valor digitado não seja um número inteiro, repete a amostragem e a leitura public static int leInt(String txt){ while (true){ try{ return Integer.parseInt (leString(txt));
  • 10. }catch (NumberFormatException e){ System.out.println("Numero Invalido"); } } } // método que mostra uma mensagem e lê um double do teclado // caso o valor digitado não seja um número double, repete a amostragem e a leitura public static double leDouble(String txt){ while (true){ try{ return Double.parseDouble(leString(txt)); }catch (NumberFormatException e){ System.out.println("Numero Invalido"); } } } // método que mostra uma mensagem e lê um char do teclado // caso o valor digitado não seja um caracter, repete a amostragem e a leitura // caso seja digitado um texto, retorna apenas o 1o. caracter public static char leChar(String txt){ while (true){ try{ return leString(txt).charAt(0); }catch (NumberFormatException e){ System.out.println("Numero Invalido"); } }
  • 11. } // método que apresenta um menu na tela e retorna o número da opção selecionada public static int menu(String titulo, String[] opcoes){ int op = 0; while(true){ System.out.println(titulo); for(int i = 0; i < opcoes.length; i++){ System.out.println((i + 1) + ". " + opcoes[i]); } op = leInt("Opção: "); if (op > 0 && op <= opcoes.length) return op; else System.out.println("Opção inválida"); } } }