[PYTHON] Machen wir eine nervenschwächende App mit Vue.js und Django-Rest-Framework [Teil 3] ~ Implementierung von Nervenschwäche ~

<< Teil 2 | Teil 4 >>

Bereiten Sie ein Bild von Spielkarten vor.

Holen Sie sich ein Bild von Trump von "Irasutoya" durch Schaben

Siehe hier Wenn Sie ein Chaos sind, können Sie entweder 54 von Hand herunterladen oder Code mit vue.

Lassen Sie uns 52 Spielkarten anzeigen. (Ohne Joker)

PlayScreen.vue


<template>
  <div>
    <span v-for="(card, index) in cards" :key="index">
      <img
        v-bind:src="card"
        alt=""
        width="110"
        height="135"
      />
    </span>
  </div>
</template>

<script>
export default {
  name: 'TopPage',
  data: function () {
    return {
      cards: [],
    }
  },
  methods: {
    setCardImage: function(type) {
      for (let i = 1; i < 14; i++) {
        let number = ('00' + i).slice(-2)
        this.cards.push(require('@/assets/images/card_' + type + '_' + number + '.png'))
      }
    }
  },
  mounted () {
    this.setCardImage('club');
    this.setCardImage('diamond');
    this.setCardImage('heart');
    this.setCardImage('spade');
  }
}
</script>

image.png

Spielkarten mischen

PlayScreen.vue


<template>
  ...
  ..
  .
</template>

<script>
export default {
  ...
  ..
  .
  methods: {
    //hinzufügen
    shuffle: function () {
      for (let i = this.cards.length - 1; i > 0; i--){
        let r = Math.floor(Math.random() * (i + 1));
        let tmp = this.cards[i];
        this.cards[i] = this.cards[r];
        this.cards[r] = tmp;
      }
    },
    ...
    ..
    .
  },
  mounted () {
    this.setCardImage('club');
    this.setCardImage('diamond');
    this.setCardImage('heart');
    this.setCardImage('spade');
    this.shuffle(); //hinzufügen
  }
}
</script>

Es wird jetzt gemischt. image.png

Fügen Sie der Karte Optionen für Vorder- und Rückseite hinzu

PlayScreen.vue


<template>
  <div>
    <span v-for="(card, index) in cards" :key="index">
      <!--Legen Sie die URL des Bildes mit Stilbindung fest-->
      <img
        v-bind:src="card.isOpen ? card.cardInfo.front : card.cardInfo.back"
        alt=""
        width="110"
        height="135"
      />
    </span>
  </div>
</template>

<script>
export default {
  ...
  ..
  .
  methods: {
    ...
    ..
    .
    //Bearbeiten Sie diese Methode
    setCardImage: function(type) {
      for (let i = 1; i < 14; i++) {
        let number = ("00" + i).slice(-2);
        let card = {
          isOpen: false, //Der Ausgangszustand sollte auf der Rückseite angezeigt werden.
          cardInfo: {
            number: i,
            front: require(`@/assets/images/card_${type}_${number}.png`), //Tabelle
            back: require("@/assets/images/card_back.png ") //zurück
          }
        };
        this.cards.push(card);
      }
    }
  },
  mounted () {
    ...
    ..
    .
  }
}
</script>

image.png

Machen Sie es möglich, die Karte offen anzuzeigen, indem Sie auf das Bild klicken.

PlayScreen.vue


<template>
  <div>
    <span v-for="(card, index) in cards" :key="index">
      <!--Geben Sie ein Klickereignis ein und legen Sie die hinzugefügte Methode fest-->
      <img
        v-bind:src="card.isOpen ? card.cardInfo.front : card.cardInfo.back"
        alt=""
        width="110"
        height="135"
        @click="open(index)"
      />
    </span>
  </div>
</template>

<script>
export default {
  ...
  ..
  .
  methods: {
    ...
    ..
    .
    //Fügen Sie diese Methode hinzu
    open: function(index) {
      //Drehen Sie die Karte auf
      this.cards[index].isOpen = true;
    }
  },
  mounted () {
    ...
    ..
    .
  }
}
</script>

image.png

Nervenschwäche umsetzen

Stellen Sie sicher, dass alle Karten verdeckt sind, wenn Sie zwei Karten umdrehen

PlayScreen.vue


<template>
  ...
  ..
  .
</template>

<script>
let openCountByPlayer = 0; //Wie viele Karten hat der Spieler umgedreht?

export default {
  ...
  ..
  .
  methods: {
    ...
    ..
    .
    //Bearbeiten Sie diese Methode
    open: function(index) {
      //Drehen Sie nicht zwei oder mehr um
      if (openCountByPlayer + 1 > 2) return;

      //Drehen Sie die Karte auf
      this.cards[index].isOpen = true;

      openCountByPlayer++;

      if (openCountByPlayer == 2) {
        //Stellen Sie sicher, dass die Karten verdeckt sind, wenn Sie zwei umdrehen
        this.reset();
      }
    },
    //Fügen Sie diese Methode hinzu
    reset: function() {
      setTimeout(() => {
        this.cards.forEach((card, index) => {
          if (card.isOpen) {
            this.cards[index].isOpen = false;
          }
        });
        openCountByPlayer = 0;
      }, 2000);
    },
  },
  ...
  ..
  .
}
</script>

Wenn die beiden umgedrehten Zahlen übereinstimmen, lassen Sie sie offen liegen

PlayScreen.vue


<template>
  <div>
    <span v-for="(card, index) in cards" :key="index">
      <!--Karten bereits erworben(isGet != null)Mach es offen.-->
      <img
        v-bind:src="(card.isOpen || card.isGet != null) ? card.cardInfo.front : card.cardInfo.back"
        alt=""
        width="110"
        height="135"
        @click="open(index)"
      />
    </span>
  </div>
</template>

<script>
let openCountByPlayer = 0; //Wie viele Karten hat der Spieler umgedreht?
const PLAYER = "player";
const COMPUTER = "computer";

export default {
  ...
  ..
  .
  methods: {
    ...
    ..
    .
    //Bearbeiten Sie diese Methode
    setCardImage: function(type) {
      for (let i = 1; i < 14; i++) {
        let number = ("00" + i).slice(-2);
        let card = {
          isOpen: false,
          isGet: null, //IsGet-Eigenschaft hinzugefügt
          cardInfo: {
            number: i,
            front: require(`@/assets/images/card_${type}_${number}.png`),
            back: require("@/assets/images/card_back.png ")
          }
        };
        this.cards.push(card);
      }
    },
    //Bearbeiten Sie diese Methode
    open: function(index) {
      //Drehen Sie nicht zwei oder mehr um
      if (openCountByPlayer + 1 > 2) return;

      //Drehen Sie die Karte auf
      this.cards[index].isOpen = true;

      openCountByPlayer++;

      if (openCountByPlayer == 2) {
        this.isNumbersMatch();

        //Stellen Sie sicher, dass die Karte verdeckt ist, wenn Sie zwei Karten umdrehen
        this.reset();
      }
    },
    //Bearbeiten Sie diese Methode
    reset: function() {
      setTimeout(() => {
        //Drehen Sie alle Karten außer der, die Sie erworben haben, verdeckt um
        this.cards.forEach((card, index) => {
          if (card.isOpen && card.isGet == null) {
            this.cards[index].isOpen = false;
          }
        });
        openCountByPlayer = 0;
      }, 2000);
    },
    isNumbersMatch: function() {
      //Holen Sie sich ein offenes Bild (Karten, die bereits übereinstimmende Nummern haben (isGet)!=null) ist ausgeschlossen)
      let openCards = [];
      this.cards.forEach((card, index) => {
        if (card.isOpen && card.isGet == null) {
          openCards.push({ index, card });
        }
      });

      //Holen Sie sich, ob die Zahlen übereinstimmen
      let firstCard = openCards[0];
      let secondCard = openCards[1];
      if (firstCard.card.cardInfo.number == secondCard.card.cardInfo.number) {
        this.cards[firstCard.index].isGet = PLAYER;
        this.cards[secondCard.index].isGet = PLAYER;
      }
    }
  },
  ...
  ..
  .
}
</script>

Zeigen Sie die Anzahl der erfassten Paare an

PlayScreen.vue


<template>
  <div>
    <v-card>
      <!--Verwenden Sie die hinzugefügte berechnete Eigenschaft-->
      <v-row no-gutters>
        <v-col>Anzahl der Paare, die Sie haben:{{ getPlayerPairs }}einstellen</v-col>
      </v-row>

      <v-divider class="mb-4"></v-divider>

      ...
      ..
      .
    </v-card>
  </div>
</template>

<script>
let openCountByPlayer = 0; //Wie viele Karten hat der Spieler umgedreht?
const PLAYER = "player";
const COMPUTER = "computer";

export default {
  ...
  ..
  .
  //Berechnete Eigenschaft hinzugefügt
  computed: {
    getPlayerPairs: function() {
      if (!this.cards || this.cards.length === 0) return;

      return (
        this.cards.filter(card => { return card.isGet === PLAYER; }).length / 2
      );
    }
  },
  ...
  ..
  .
}
</script>

image.png

<< Teil 2 | Teil 4 >>

Recommended Posts

Machen wir eine nervenschwächende App mit Vue.js und Django-Rest-Framework [Teil 3] ~ Implementierung von Nervenschwäche ~
Machen wir eine nervenschwächende Anwendung mit Vue.js und Django-Rest-Framework [Teil 6] ~ Benutzerauthentifizierung 2 ~
Lassen Sie uns mit Vue.js und Django-Rest-Framework [Teil 5] ~ Benutzerauthentifizierung ~ eine nervenschwächende Anwendung erstellen
Lassen Sie uns mit Vue.js und Django-Rest-Framework [Teil 2] ~ Vue setup ~ eine nervenschwächende App erstellen
Lassen Sie uns mit Vue.js und Django-Rest-Framework [Teil 1] ~ Django-Setup ~ eine nervenschwächende App erstellen
Lassen Sie uns mit Vue.js und Django-Rest-Framework [Teil 4] eine nervenschwächende Anwendung machen ~ MySQL-Konstruktion und DB-Migration mit Docker ~
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 2 erstellen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 3 erstellen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 4 erstellen
Versuchen Sie, ein einfaches Spiel mit Python 3 und iPhone zu erstellen
Lassen Sie uns eine Mac-App mit Tkinter und py2app erstellen
Lassen Sie uns eine GUI mit Python erstellen.
Machen wir einen Blockbruch mit wxPython
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Machen wir mit xCAT einen Spacon
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 4 sichtbar
Lassen Sie uns mit Python ein Shiritori-Spiel machen
Lassen Sie uns mit Python langsam sprechen
Lassen Sie uns mit PLY 1 eine einfache Sprache erstellen
Erstellen Sie DNN-CRF mit Chainer und erkennen Sie den Akkordfortschritt der Musik
Erstellen Sie ein Webframework mit Python! (1)
Machen wir mit Pylearn 2 eine dreiäugige KI
Implementieren Sie ein Modell mit Status und Verhalten (3) - Beispiel für die Implementierung durch den Dekorateur
Machen wir einen Twitter-Bot mit Python!
Erstellen Sie ein Webframework mit Python! (2)
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 3 sichtbar
Lassen Sie uns mit Flask eine Webanwendung zur Konvertierung von A nach B erstellen! Von Grund auf neu ...
Ich habe eine einfache Mail-Sendeanwendung mit tkinter von Python erstellt
Versuchen Sie, eine Webanwendung mit Vue.js und Django (Mac Edition) zu erstellen - (1) Umgebungskonstruktion, Anwendungserstellung
Führen Sie cbc von "Let's make a normal compiler" mit Java 8 oder höher + 64bit aus
Holen Sie sich mit Python den Aktienkurs eines japanischen Unternehmens und erstellen Sie eine Grafik
TRIE-Baumimplementierung mit Python und LOUDS
Ersetzen wir UWSC durch Python (5) Machen wir einen Roboter
Lassen Sie uns eine App erstellen, die ähnliche Bilder mit Python und Flask Part1 durchsuchen kann
Lassen Sie uns eine App erstellen, die ähnliche Bilder mit Python und Flask Part2 durchsuchen kann
Holen Sie sich mit Python eine große Menge von Starbas Twitter-Daten und probieren Sie die Datenanalyse Teil 1 aus
Lass uns ein Makefile machen und es bauen (super Anfänger)
[Lass uns mit Python spielen] Ein Haushaltsbuch erstellen
Wie man ein Schießspiel mit toio macht (Teil 1)
[# 2] Mach Minecraft mit Python. ~ Modellzeichnung und Player-Implementierung ~
Erstellen Sie einen Stapel von Bildern und blasen Sie sie mit ImageDataGenerator auf
Lassen Sie uns das Abhängigkeitsmanagement mit pip etwas einfacher machen
Versuchen Sie, mit Rhinoceros / Grasshopper / GHPython ein sphärisches Gitter zu erstellen
[Super einfach] Machen wir einen LINE BOT mit Python.
Erstellen Sie mit Raspberry Pi + DHT11 ganz einfach einen TweetBot, der Sie über Temperatur und Luftfeuchtigkeit informiert.
Lassen Sie uns mit Python einen Web-Socket-Client erstellen. (Zugriffstoken-Authentifizierung)
Als Ergebnis der Montage und Abstimmung mit POH! Lite
Erstellen Sie mit QGIS Part 2 ein tky2jgd-Plug-In ohne praktische Anwendbarkeit
Verknüpfen Sie Python Enum mit einer Funktion, um es aufrufbar zu machen
Machen Sie die angegebene Anzahl von Sekunden zu Stunden, Minuten und Sekunden
Lassen Sie uns ein PRML-Diagramm mit Python, Numpy und matplotlib erstellen.
Erstellen eines tky2jgd-Plug-Ins ohne praktische Anwendbarkeit mit QGIS Teil 1
Erkennen Sie mit Python Objekte einer bestimmten Farbe und Größe
Erstelle ein 2D-Rollenspiel mit Ren'Py (3) -Items and Tool Shop
Lassen Sie uns ein Diagramm erstellen, auf das mit IPython geklickt werden kann
Machen Sie ein BLE-Thermometer und ermitteln Sie die Temperatur mit Pythonista3