Tenho duas classes, player e player2, e quero chamar o metodo move da classe player dentro da classe player 2. Mas quero que esse mesmo metodo quando for chamado pelo player 2 receba somente metade do valor de X do player

7 respostas
M

basicamente que fazer com que player 2 se mexa quando o player mexer-se, mas que player 2 mova somente metade do que o player mover, pareceu-me simples de fazer porem sou novo em java e em programação no geral

7 Respostas

D

Que linguagem você está usando?

Seguinte, pra você fazer isso, basta herdar os recursos da classe player.

Se você estiver usando c++ seria algo mais ou menos assim:

class Player{

attributes;

virtual method();

}
class Player2 : public Player{

attributesFromPlayer2;

methodFromPlayer1() override;

}

Se estiver usando java, basta usar a keyworld extends depois da classe Player2.
E antes de chamar os methods do Player, coloque a notation override.

Quando você chama override você pode alterar o escopo do method que você está usando. Dai só fazer as alterações necessárias e está pronto o sorvetinho sr.

=)

M

estou usando programa`/ao orientado a objetos em java

D

Fiz um código exemplo pra você dar uma olhada:

class Player{
    private String name;
    public int pAmount;

    public int move(int amount){
        pAmount = amount;
        // faz a função move
        return pAmount;
    }
}

class Player2 Extends Player{ // O Extends está herdando os atributos/methos
                              // que estiverem publics de Player
    @Override //permite alterar o escopo do methodo chamado
    public int move(int amount){
        pAmount = amount/2;
        return pAmount;
    }
}


class Jogo{
    
    public static void main(String[] args){

    public int walk = 10;

    Player player = new Player();
    player.move(walk); // Aqui o player anda 10 passos

    Player2 player2 = new Player2();
    player2.move(walk); // Aqui o player2 anda 5, já que no
                        // nosso method eu dividi o amount pela metade;
    }
}

Espero ter ajudado, e divirta-se com programação de jogos, é uma jornada bem legal.
Mas particularmente, eu indicaria começar a programar jogos com C++ ou C#, já que existem engines no mercado que são usadas até em jogos AAA e são free para uso não comercial. Ex. Unreal engine (C++), e Unity (C#).

Mas nada te impede de programar com java, minecraft foi programando nele por exemplo.

=)

M

obrigado. faço faculdade de game design, esta parte em java era mesmo para nos introduzirem a P.O.O no próximo ano quando estudarmos engines de jogos começaremos c++

D

Excelente.

Eu aprendi a programar com jogos cara, e sério, o fluxo de aprendizado é bem daora.
Só que quando aprendi eu começei com C++, e é a minha linguagem mãe até hoje.

Se tiver interesse, procura pelos seguintes livros:

Introdução a C++ já com programação em jogos

Depois que terminar o primeiro leia este:

E o engraçado, é que o primeiro livro eu usei quando começei a programar. hehehe

O autor é bem divertido e a metodologia dele é bem simples e você pega os exemplos bem rápidos. Afinal o cara é game developer então você consegue entender o que ele está falando justamente pelos exemplos geeks.

M

o @override est;a com um erro metodo nao implementa ou faz override de um supertype

D

Leia esse capítulo de heranca.
Ele vai te ajudar a entender melhor o uso de override e super.

https://www.caelum.com.br/apostila-java-orientacao-objetos/heranca-reescrita-e-polimorfismo/

Eu esqueci de definir super em alguns pontos.

Criado 18 de junho de 2017
Ultima resposta 18 de jun. de 2017
Respostas 7
Participantes 2