[JAVA] J'ai créé le côté serveur du jeu de cartes en ligne ②

Dernière fois ici

politique

À la fin du dernier article, j'ai montré un simple diagramme UML. Dans les prochains articles, j'aimerais l'implémenter du bas vers le haut de la figure.

Créer une classe de cartes

Tout d'abord, faisons une classe de carte minimale. BlackPoker est un jeu qui utilise des cartes à jouer, vous aurez donc besoin de marques et de chiffres. Il existe quatre types de marques: ♠, ♦, ♥ et ♣, mais comme ce jeu utilise un joker, supposons qu'il existe cinq types de marques. Le type de marque peut être int, mais il est souhaitable de ne pas entrer autant que possible des valeurs invalides, nous allons donc définir une énumération.

public class Card {
    
    public int number;
    public Mark mark;
    
    public Card(int number, Mark mark){
        this.number = number;
        this.mark = mark;
    }
    
    public enum Mark {
        SPADE, DIAMOND, HEART, CLOVER, JOKER;
    }
    
}

Ce n'est pas encore fini, non? Dans la classe des cartes, en plus des informations détenues par la carte Trump, il est également nécessaire de conserver les données virtuelles contenues dans le jeu.

Les paramètres requis pour chaque carte, tels que les barrières et les soldats, changeront en fonction de la situation. Cette fois, pour faciliter la mise en œuvre, nous vous demanderons d'avoir des paramètres dans toutes les situations. En effet, la barrière ne nécessite aucun paramètre autre que le numéro de carte, de sorte que la classe Card n'a au mieux que les paramètres pour les soldats.

Cette fois, nous conserverons les données suivantes.

Paramètres Moule Supplément
Puissance offensive int Il est possible que cela change lorsque le sort sera mis en œuvre dans le futur.
Métier Recenseur Plus efficace que de comparer des nombres à chaque fois
Est-il possible d'attaquer boolean
Est-ce chargé boolean Utilisé à la fois par les barrières et les soldats
Orientation de la carte boolean Si c'est le dos, c'est une barrière

import static blackpoker.Card.Job.*;

public class Card {

    public int number;
    public int attack;
    public boolean canAttack;
    public Mark mark;
    public boolean isCharge;
    public boolean isFront;
    public Job job;

    public Card(int number, Mark mark) {
        this.number = number;
        this.attack = this.number;
        this.canAttack = false;
        this.mark = mark;
        this.isCharge = true;
        this.isFront = false;
        this.job = null;
        if (this.number >= 2 && this.number <= 10) {
            this.job = SOLDIER;
        } else if (this.number >= 11 && this.number <= 13) {
            this.job = HERO;
        } else if (this.number == 1) {
            this.job = ACE;
            this.canAttack = true;
        } else if (this.number == 0) {
            this.job = MAGICIAN;
            this.canAttack = true;
        }
    }

    enum Mark {
        SPADE, DIAMOND, HEART, CLOVER, JOKER;
    }

    enum Job {
        SOLDIER, HERO, ACE, MAGICIAN;
    }
}

Postscript

Après que toutes les variables publiques risquent de se fâcher, je vais donc les écrire correctement.

import static blackpoker.Card.Job.*;

public class Card {

    private int number;
    private int attack;
    private boolean canAttack;
    private Mark mark;
    private boolean isCharge;
    private boolean isFront;
    private Job job;

    //Abréviation

    public int getNumber() {
        return number;
    }

    private void setNumber(int number) {
        this.number = number;
    }

    public int getAttack() {
        return attack;
    }

    public void setAttack(int attack) {
        this.attack = attack;
    }

    public boolean isCanAttack() {
        return canAttack;
    }

    public void setCanAttack(boolean canAttack) {
        this.canAttack = canAttack;
    }

    public Mark getMark() {
        return mark;
    }

    private void setMark(Mark mark) {
        this.mark = mark;
    }

    public boolean isCharge() {
        return isCharge;
    }

    public void setCharge(boolean charge) {
        isCharge = charge;
    }

    public boolean isFront() {
        return isFront;
    }

    public void setFront(boolean front) {
        isFront = front;
    }

    public Job getJob() {
        return job;
    }

    private void setJob(Job job) {
        this.job = job;
    }
}

Mettez également en œuvre Clonable.


public class Card implements Cloneable {
    //Abréviation
    @Override
    public Card clone(){
        return new Card(number, attack, canAttack, mark, isCharge, isFront, job);
    }
}

La prochaine fois, je le ferai dans ma main ou ma plate-forme.

La prochaine fois

Recommended Posts

J'ai créé le côté serveur du jeu de cartes en ligne ③
J'ai créé le côté serveur du jeu de cartes en ligne ⑥
J'ai créé le côté serveur du jeu de cartes en ligne ④
J'ai créé le côté serveur du jeu de cartes en ligne ②
J'ai créé le côté serveur du jeu de cartes en ligne ①
J'ai créé un serveur écologique avec scala
J'ai créé un jeu Janken en Java (CLI)
J'ai créé une image Docker pour la version japonaise de SDAPS
J'ai fait un jeu de problèmes de calcul simple en Java
J'ai créé un serveur et un client Restful au printemps.
Une brève explication d'un jeu de labyrinthe fait à Java pour les cousins du primaire
J'ai essayé de faire une version japonaise de la transmission automatique du courrier de Rails / devise
Création du côté serveur d'un jeu de cartes en ligne [Table of Contents]
J'ai créé une application de chat.
J'ai essayé JAX-RS et pris note de la procédure
Une histoire sur la connexion à un serveur CentOS 8 avec un ancien Ansible
J'ai fait un petit bijou pour poster le texte du mode org sur qiita
J'ai créé un outil pour afficher la différence du fichier CSV
J'ai créé une application shopify @java
J'ai créé une interface graphique avec Swing
J'ai fait une annotation en Java.
J'ai créé une application correspondante (application Android)
J'ai créé un outil de génération package.xml.
[Android] J'ai créé une application de podomètre.
[Ruby] J'ai créé un simple client Ping
J'ai fait une mort risquée avec Ruby
J'ai créé un plug-in pour IntelliJ IDEA
J'ai créé une application Janken avec kotlin
J'ai créé un nouvel outil de déploiement Java
J'ai créé une application Janken avec Android
Un exemple simple du modèle MVC
Apprendre Java avec Progate → Je vais vous expliquer parce que j'ai moi-même créé un jeu de base
Rails6 Je veux créer un tableau de valeurs avec une case à cocher
J'ai fait un exemple de la façon d'écrire un délégué dans Swift UI 2.0 à l'aide de MapKit