[JAVA] Ich habe die Serverseite des Online-Kartenspiels gemacht made

Letztes Mal hier

Politik

Am Ende des letzten Artikels habe ich ein einfaches UML-Diagramm gezeigt. In zukünftigen Artikeln möchte ich es von unten nach oben in der Abbildung implementieren.

Machen Sie eine Kartenklasse

Lassen Sie uns zunächst eine Mindestkartenklasse erstellen. BlackPoker ist ein Spiel, das Spielkarten verwendet, daher benötigen Sie Markierungen und Zahlen. Es gibt vier Arten von Marken: ♠, ♦, ♥ und ♣, aber da dieses Spiel einen Joker verwendet, nehmen wir an, dass es fünf Arten von Marken gibt. Der Markentyp kann int sein, es ist jedoch wünschenswert, nicht so viele ungültige Werte wie möglich einzugeben. Daher definieren wir eine Aufzählung.

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;
    }
    
}

Es ist noch nicht fertig, oder? In der Kartenklasse müssen zusätzlich zu den Informationen auf der Trump-Karte auch die im Spiel enthaltenen virtuellen Daten gespeichert werden.

Die für jede Karte erforderlichen Parameter wie Barrieren und Soldaten ändern sich je nach Situation. Dieses Mal bitten wir Sie zur Vereinfachung der Implementierung, Parameter in allen Situationen anzugeben. Dies liegt daran, dass für die Barriere keine anderen Parameter als die Kartennummer erforderlich sind, sodass die Kartenklasse bestenfalls nur die Parameter für Soldaten enthält.

Dieses Mal werden die folgenden Daten gespeichert.

Parameter Schimmel Ergänzung
Offensivkraft int Es ist möglich, dass es sich ändert, wenn der Zauber in der Zukunft implementiert wird.
Beruf Enumerator Effizienter als jedes Mal Zahlen zu vergleichen
Ist es möglich anzugreifen boolean
Ist es aufgeladen boolean Wird sowohl von Barrieren als auch von Soldaten verwendet
Kartenorientierung boolean Wenn es der Rücken ist, ist es eine Barriere

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;
    }
}

Nachtrag

Nachdem alle öffentlichen Variablen wahrscheinlich wütend werden, werde ich sie richtig schreiben.

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;

    //Abkürzung

    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;
    }
}

Implementieren Sie außerdem Clonable.


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

Nächstes Mal werde ich es in meiner Hand oder meinem Deck schaffen.

Nächstes Mal

Recommended Posts

Ich habe die Serverseite des Online-Kartenspiels gemacht made
Ich habe die Serverseite des Online-Kartenspiels gemacht made
Ich habe die Serverseite des Online-Kartenspiels gemacht made
Ich habe die Serverseite des Online-Kartenspiels gemacht made
Ich habe die Serverseite des Online-Kartenspiels gemacht made
Ich habe einen Öko-Server mit Scala gemacht
Ich habe ein Janken-Spiel in Java (CLI) gemacht.
Ich habe ein Docker-Image für die japanische Version von SDAPS erstellt
Ich habe ein einfaches Berechnungsproblemspiel in Java gemacht
Ich habe im Frühjahr einen Restful-Server und -Client erstellt.
Eine kurze Erklärung eines Labyrinthspiels, das in Java für Cousins der Grundschule erstellt wurde
Ich habe versucht, eine japanische Version der Automatik-Mail von Rails / devise zu erstellen
Erstellt die Serverseite eines Online-Kartenspiels [Inhaltsverzeichnis]
Ich habe eine Chat-App erstellt.
Ich habe JAX-RS ausprobiert und mir das Verfahren notiert
Eine Geschichte über die Verbindung zu einem CentOS 8-Server mit einem alten Ansible
Ich habe ein Juwel gemacht, um den Text des Org-Modus in Qiita zu posten
Ich habe ein Tool erstellt, um den Unterschied zwischen CSV-Dateien auszugeben
Ich habe eine shopify App @java erstellt
Ich habe mit Swing eine GUI erstellt
Ich habe eine Anmerkung in Java gemacht.
Ich habe eine passende App erstellt (Android App)
Ich habe ein Tool zur Generierung von package.xml erstellt.
[Android] Ich habe eine Schrittzähler-App erstellt.
[Ruby] Ich habe einen einfachen Ping-Client erstellt
Ich habe mit Ruby einen riskanten Würfel gemacht
Ich habe ein Plug-In für IntelliJ IDEA erstellt
Ich habe eine Janken App mit Kotlin gemacht
Ich habe ein neues Java-Bereitstellungstool erstellt
Ich habe eine Janken App mit Android gemacht
Ein einfaches Beispiel für das MVC-Modell
Lerne Java mit Progate → Ich werde es erklären, weil ich selbst ein einfaches Spiel gemacht habe
Rails6 Ich möchte ein Array von Werten mit einem Kontrollkästchen erstellen
Ich habe ein Beispiel erstellt, wie ein Delegat in Swift UI 2.0 mit MapKit geschrieben wird