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

Dernière fois ici

excuses

J'ai un peu triché. .. .. Nous n'implémenterons pas de deck ou de main cette fois.

Au lieu de cela, j'aimerais créer une classe abstraite qui contient les classes qui maintiennent les cartes ensemble.

Créer une interface avec un tas de cartes

Deck, main, cimetière, etc. contiennent tous plusieurs cartes dans une structure de données. J'ai donc créé un ensemble d'interfaces de cartes.


public interface CardSheaf {
    /**
     *Renvoie où se trouve l'objet carte transmis dans la structure de données.
     *Veuillez vous assurer que la structure de données est une liste ou un tableau.
     * @param card L'objet de la carte dont vous voulez connaître le numéro
     * @return Number dans la structure de l'objet argument
     */
    int indexOf(Card card);

    /**
     *Renvoie le nombre de cartes.
     * @nombre de cartes de retour
     */
    int cardSize();

    /**
     *Ajoutez une carte à la structure de données.
     */
    void addCard(Card card);

    /**
     *Retirez la carte de la structure de données.
     */
    void removeCard(Card card);

    /**
     *Retirez la carte de la structure de données.
     */
    void removeCard(int index);

    /**
     *Renvoie une carte dont le numéro et la marque correspondent.
     */
    Card find(int number, Card.Mark mark);

    /**
     *Renvoie le numéro de la carte dont le numéro et la marque correspondent.
     */
    int indexOf(int number, Card.Mark mark);

    /**
     *Renvoie la carte au numéro spécifié.
     *L'élément n'est pas supprimé.
     * @param index Le numéro de la carte que vous voulez
     */
    Card getCard(int index);

    /**
     *Retirez la carte au numéro spécifié.
     *La carte est supprimée de la structure de données.
     * @param index Le numéro de la carte que vous voulez
     */
    Card takeCard(int index);
}

De plus, je veux que la structure de données soit un tableau ou une liste, j'ai donc créé une interface pour le faire autant que possible.

De plus, puisqu'il est possible que des fonctions telles que l'extraction et la recherche puissent être partagées, préparez-les avec des méthodes statiques. (Je n'en ai pas besoin, mais je ne veux pas écrire le même processus encore et encore plus tard)

De plus, comme il s'agit d'une méthode statique, j'ai pour le moment une liste en argument, et s'il y a un changement, je renvoie la liste.

Les paires et les taples ne sont pas dans la norme java, je les ai donc remplacés par Map.Entry.


import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface CardSheaf {

    //Abréviation

    static int indexOf(List<Card> list, Card card){
        int i;
        for (i = 0; i < list.size(); i++) {
            Card c = list.get(i);
            if(c == null) continue;
            if(c.equals(card)) break;
        }
        if(i == list.size()) return -1;
        return i;
    }

    static List<Card> addCard(List<Card> list, Card card){
        list.add(card);
        return list;
    }

    static List<Card> removeCard(List<Card> list, Card card){
        list.remove(card);
        return list;
    }

    static List<Card> removeCard(List<Card> list, int index){
        list.remove(index);
        return list;
    }

    static Card find(List<Card> list, int number, Card.Mark mark){
        for (Card card: list){
            if(card == null) continue;
            if(card.getMark() == mark && card.getNumber() == number) return card;
        }
        return null;
    }

    static int indexOf(List<Card> list, int number, Card.Mark mark){
        int i;
        for (i = 0; i < list.size(); i++){
            Card card = list.get(i);
            if(card == null) continue;
            if(card.getMark() == mark && card.getNumber() == number) break;
        }
        if(i == list.size()) return -1;
        return i;
    }

    static Card getCard(List<Card> list, int index){
        return list.get(index);
    }

    static Map.Entry<List<Card>, Card> takeCard(List<Card> list, int index){
        Card card = list.get(index);
        list.remove(card);
        return new HashMap.SimpleEntry<List<Card>, Card>(list, card);
    }

La prochaine fois

Recommended Posts

Fait 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éé 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
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 simple fonction de recommandation.
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éé une application de calculatrice sur Android
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
Fait 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 ②
Comment vérifier le contenu de la chaîne de caractères java de longueur fixe
Une liste de rawValues pour UITextContentType.
note de table des matières du document micronaut
Améliorons notre entreprise! Table des matières