Jump to content

Gerar jogadores automaticamente


Recommended Posts

Posted

Boas pessoal estou agora a começar em programação orientada a objectos =OOOO enfim...

Segue a minha questão:

É pedido para criar uma classe jogador e depois diz que deve ser criado chamadas aos métodos para gerar jogadores automaticamente (para testar são 4 equipas ou seja mais ou menos 44 JOGADORES)...

Se gerar um a um nunca mais saiu desta parte do programa... Então pensei gerar nomes aleatórios.

Preciso que alguém me diga se estou a pensar bem ou se devo seguir a risca o enunciado :S

Segue-se parte do código:

import java.util.Scanner;
import java.util.Random;

class Jogador {
String name="";
String date;
String position;
public String Nome(){
String letras[] = {"a","b","c","d","e","f","g","i","j","k","l","m","n","o","p","q","r","s","t","u","v"}; /*ta incompleto ainda*/
int numeroaleatoriogeral=1;
System.out.println(numeroaleatoriogeral);
for (int i=0;i<numeroaleatoriogeral;i++){
int numeroaleatorio = (int) (Math.random() * 21);
name+=name+letras[numeroaleatorio];
}
return name;

}

public String Data_nascimento(){
int dia,mes,ano;
System.out.println("Dia");
dia=receber();
System.out.println("Mes");
mes=receber();

switch(mes){
case 1: if( dia>31 || dia<1)
System.out.println("Erro");
 break;

case 3: if( dia>31 || dia<1)
System.out.println("Erro");
break;
case 5: if( dia>31 || dia<1)
System.out.println("Erro");
break;
case 7: if( dia>31 || dia<1)
System.out.println("Erro");
 break;
case 8: if( dia>31 || dia<1)
System.out.println("Erro");
break;
case 10: if( dia>31 || dia<1)
System.out.println("Erro");
break;
case 12: if( dia>31 || dia<1)
System.out.println("Erro");
break;
case 4: if( dia>30 || dia<1)
System.out.println("Erro");
break;
case 6: if( dia>30 || dia<1)
System.out.println("Erro");
break;
case 9: if( dia>30 || dia<1)
System.out.println("Erro");
break;
case 11: if( dia>30 || dia<1)
System.out.println("Erro");
case 2: if( dia>29 || dia<1)
System.out.println("Erro");
 break;
}

System.out.println("Ano");
ano=receber();
date=dia + "/" +mes +"/" +ano ;
return date;
}

public String Posicao(){
position="avancado";
return position;

}
public static int receber(){
int num;
Scanner sc = new Scanner(System.in);
num = sc.nextInt();
return num;
}
Posted

sabes que os nomes irão ficar neste modelo : "iofuyriwe", algo que não é muito interessante

arranja uma lista de nomes e faz a combinação aleatória de dois ou três destes:

String[] nomes;
String nome = nomes[rand1] + " " + nomes[rand2] + " " + nomes[rand3];

no switch de verificação do mês, usa o fallback

switch (mes)
{
 case 1:
 case 3:
 case 5:
 case 7:
 case 8:
 case 10:
 case 12:
   // verificar se é entre 1 e 31 
   break;
 case 4:
 case 6:
 case 9:
 case 11:
   // verificar se é entre 1 e 30 
   break;
 case 2:
   // verificar se é bisexto e se é entre 1 e 29 ou case contrário, se é entre 1 e 28
   break;
}
IRC : sim, é algo que ainda existe >> #p@p
Posted

Happy muito obrigado grande ideia 🙂

Outra coisa para gerar esses nomes é melhor gerar no programa principal ou na classe Jogador?

Porque se quiser gerar só um jogador vai-me gerar sempre mais que um (neste caso para testar a frente do prof)...

Posted (edited)

o melhor é meter o criador de alhos na classe alhos ...

public class Jogador
{
 protected Jogador() // construtor da classe
 {
 }

 // o parâmetro será a lista de jogadores para verificar que o jogador é único
 public static Jogador create(ArrayList<Jogador> lista) 
 {
   Jogador j = new Jogador();

   // fazer o que tens a fazer para tornar o jogador diferente

   return j;
 }
}
Edited by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Posted (edited)

O meu código está formado algo deste género (pode estar totalmente errado :S ----> por isso estou aqui xD):

import java.util.Scanner;
import java.util.Random;

class Jogador {

String name;
String date;
String position;

public String Nome(){
String [] nomes={"joao","Tiago","Ruben","enfim"};
String [] nomes_2={"joao","Tiago","Ruben","enfim"};
int aleatorionomes = (int)(Math.random() * 4);
int aleatorionomes2 = (int)(Math.random() * 4);
this.name=nomes[aleatorionomes]+" "+ nomes_2[aleatorionomes2];

return name;
}

public String Data_nascimento(){
int dia,mes,ano;
System.out.println("Dia");
dia=receber();
System.out.println("Mes");
mes=receber();

switch(mes){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if( dia>31 || dia<1)
System.out.println("Erro");
break;
case 4:
case 6:
case 9:
case 11:
if( dia>30 || dia<1)
System.out.println("Erro");
break;
case 2: if( dia>29 || dia<1)
System.out.println("Erro");
 break;
}

System.out.println("Ano");
ano=receber();
date=dia + "/" +mes +"/" +ano ;
return date;
}

public String Posicao(){
position="avancado";
return position;

}
public static int receber(){
int num;
Scanner sc = new Scanner(System.in);
num = sc.nextInt();
return num;
}
public String toString(){
	 String s;
	 s = "\nJogador\n";
	 s += "\n Nome: " + Nome();
	 //s += "\n Data: " + Data_nascimento();

	 return s;
 }

}

este aqui é o "main":

public class Ligaportuguesa {

public static void main(String[] args) {
Jogador [] jogadores = new Jogador[5];
for (int i=0;i<5;i++){
/*criacao de varios jogadores*/
if (jogadores[i]==null){
jogadores[i]=new Jogador();
jogadores[i].Nome();
}
}
System.out.println(jogadores[1].Nome());
System.out.println(jogadores[0].Nome());



//Jogador jogador1 = new Jogador();
//jogador1.Nome(); /*aqui insere os dados relativos ao jogador data nascimento nome posicao*/


}
}

Algo de errado nisto :S?

Edited by Baderous
geshi
Posted (edited)

está completamente diferente do que disse ...

lol estou "lixado" com estes objectos...

Então o objectivo era gerar o jogador dentro da classe jogador... Mas como chamo cá fora no "main"? Isso não estou a entender ...

Edited by Flames
Posted (edited)

ok, ok ... este código não foi testado :

public class Jogador
{
   protected String nome;
   protected Calendar nascimento;

   static protected String[] nomes = {"Zé",
                                      "Francisco",
                                      "Maria",
                                      "Pedro",
                                      "Alberto",
                                      "Tiago",
                                      "Marco",
                                      "Hilário",
                                      "Roberto",
                                      "Luis",
                                      "Vitor",
                                      "Bruno",
                                      "Nuno",
                                      "Silvio",
                                      "Edgar",
                                      "João",
                                      "Xico",
                                     "Paulo",
                                      "Ricardo",
                                      "Leandro"};

   protected Jogador(String nome,
                     Calendar nascimento)
   {
       this.nome = nome;
       this.nascimento = nascimento;
   }

   public String getNome()
   {
       return this.nome;
   }

   public Calendar getNascimento()
   {
       return this.nascimento;
   }

   static public Jogador criar()
   {
       Random rand_gen = new Random(Calendar.getInstance(TimeZone.getTimeZone("GMT")).getTimeInMillis());

       int year  = 1975 + rand_gen.nextInt(20);
       int month = 1 + rand_gen.nextInt(12);
       int max_days = 31;
       switch (month)
       {
           case 4:
           case 6:
           case 9:
           case 11:
               max_days = 30;
               break;
           case 2:
               max_days = 28;
               if (year % 4 == 0) // verificação incompleta de ano bisexto
                   max_days = 29;
               break;
       }
       int day = 1 + rand_gen.nextInt(max_days);

       return new Jogador(nomes[rand_gen.nextInt(nomes.length)] +
                              " " + nomes[rand_gen.nextInt(nomes.length)] +
                              " " + nomes[rand_gen.nextInt(nomes.length)],
                          Calendar.getInstance().set(year, month, day));
   }

   static public int main(String[] args)
   {
       Jogador j = Jogador.criar();
   }
}
Edited by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Posted (edited)

Opa Happy obrigado pelo teu tempo disponibilizado mas epa objectos esquece enfim ...

Estou a tentar não desistir disto (affff):

Eu não tenho que no ficheiro principal "criar o objecto" para depois poder utilizar os métodos da classe Jogador?

é que em tudo o que vi até agora é assim...

Depois dizem que basta fazer um loop e estamos a criar vários objectos...

Edited by Flames
Posted

Acho que sei o trabalho que estás a fazer, e acho que estás a desperdicar tempo com isso . Faz para que o utilizador meta os inputs dos jogadores e guardas, metes cada equipa com 2 jogadores e não dá muito trabalho, porque assim depois se pedirem para fazerem as próprias equipas e afins vais ter mais trabalho penso eu 🙂

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.