Criando um jogo com java

7 respostas
F

Boa tarde a todos estou começando a reescrever um jogo feito em C++ para java este jogo é um simulador automatico de jogos de cartas o ygopro não sei se alguém ja ouviu falar dele. o seu core é em C++ e os scripts dos monstros em LUA, eu não entendo nada das funções do core do jogo por isso quero fazer algo que eu entenda. Resumindo o jogo tem cards eses cards podem ser monstros, magias ou armadilhas essas card elas tem seus atributos e seus efeitos, a minha duvida é a classe carta e a classe efeitos ela vão ser interface ou uma classe de extensão Alguém pode me dar um caminho

Att

Felipe Martins

7 Respostas

wldomiciano

Eu acho que Carta ser uma classe e não uma interface faria mais sentido, porque imaginei algo assim:

enum CardType {
    MONSTER, MAGIC, TRAP
}

class Card {
    protected CardType type;
}

class MonsterCard {
    private int atk;
    private int def;
    private String effect;

    public MonsterCard(int atk, int def, String effect) {
        super(CardType.MONSTER);

        this.atk = atk;
        this.def = def;
        this.effect = effect;
    }
}

class MagicCard {
    private String effect;

    public MagicCard(String effect) {
        super(CardType.MAGIC);

        this.effect = effect;
    }
}

Sei que os efeitos são mais complexos do que simples Strings, mas fiz só pra dar uma noção da minha idéia.

Dependendo de como vc imaginou a forma de implementar os efeitos, pode ser que faça sentido Efeito ser uma interface.

peczenyj

ue depende do que vc quer fazer

se vc quer separa a interface da implementação por algum motivo (tem diversos tipos de cartas, baralhos diferentes, facilitar testes unitarios/mock) ta ai a sua resposta. comece com uma classe e adicione as interfaces SE vc achar necessario

F

obrigado pela ajuda, eu estava pesnado assim mas parece aqu a sua idaia é melhor

Interfece effect{
public Object Draw();

}

public class card implements effect

{

aqui vão os atribtos e elas ganham um efeito se for um monstro sem efeito o construtor pode vir vaziu;

}
public class monster extends card

{

aqui ela vai herdar os metodos e atributos da classe card;

}
wldomiciano

Acho que assim não é bom, pois seria o mesmo que dizer que uma carta É um efeito, quando na verdade ela pode ou não TER um efeito.

F

Hum é verdade por exemplo cartas gemini elas são monstros de efeito que são tratados como normais mas para game o eff vc precisa invocar ele de novo isso é um problemão ahshahshahs

F

E tb seria meio complicado tratar um efeito como objeto ele até poderia ser um Mas sendo um atributo da classe já tá bom kkkkk

peczenyj

A velha discussão Herança versus Composição.

No caso de games, pode existir muita coisa com comportamento polimorfico. Uma arma, um monstro, uma armadilha, um desastre natural todos podem causar dano, não necessariamente vc vai ter um objeto que represente toda essa hierarquia ( ate pode ter, mas esse é um aspecto ). Imagine coisas que se movem pelo jogo e coisas que ficam paradas? vc pode considerar q tudo se move e algumas tem velocidade 0, mas pode ser gambiarra atras de gambiarra.

entretanto. que jogo não é uma coleção de gambiarras?

Criado 13 de setembro de 2018
Ultima resposta 14 de set. de 2018
Respostas 7
Participantes 3