konvertieren Ich habe diesen einfachen Code in Python geschrieben, um eine kleine Kartenspiel zu erstellen, und ich möchte das gleiche mit Typoskript machen, aber ich bin mit einem großen Problem mit "das" in meiner Hauptklasse in Typoskript ist dies die ursprüngliche Klasse python:Wie behandelt man das in typescript/js? müssen Python-Code in Typescript
class deck:
card_type=['Hearts ','Diamonds','Spades','Clubs']
card_rank=[2,3,4,5,6,7,8,9,10,'A','J','Q','K']
full_deck=[]
def build_deck(self):
single={}
for card in self.card_type:
for n in self.card_rank:
single={n: card}
self.full_deck.append(single)
shuffle(self.full_deck)
def reshuffle (self):
print('Re-shuffling again!')
shuffle(self.full_deck)
def choose_card(self):
chosen=choice(self.full_deck)
the_index= self.full_deck.index(chosen)
self.full_deck.pop(the_index)
return chosen
def pick_hand(self, number_of_cards):
hand=[]
new_card={}
for i in range(number_of_cards):
new_card = self.choose_card()
hand.append(new_card)
return hand
Und in meiner Haupt-Spiel-Datei kann ich so etwas wie diese:
from classes import deck
deck1= deck()
deck1.build_deck()
my_hand=deck1.pick_hand(3)
compu_hand=deck1.pick_hand(3)
Aber wenn Ich versuche, eine ähnliche Klasse in Art Skript zu erstellen, schrieb ich folgendes:
export class deck {
single_card: {
cType: string;
cNumber: any;
};
fullDeck: any[] = [];
card_type=['Hearts ','Diamonds','Spades','Clubs'];
card_rank=[2,3,4,5,6,7,8,9,10,'A','J','Q','K'];
shuffle() {
let counter = this.fullDeck.length;
// While there are elements in the array
while (counter > 0) {
// Pick a random index
let index = Math.floor(Math.random() * counter);
// Decrease counter by 1
counter--;
// And swap the last element with it
let temp = this.fullDeck[counter];
this.fullDeck[counter] = this.fullDeck[index];
this.fullDeck[index] = temp;
}
// return this.fullDeck;
}
buildDeck(){
for (let t in this.card_type) {
for (let n in this.card_rank) {
this.single_card.cType = this.card_type[t];
this.single_card.cNumber = this.card_rank[n];
this.fullDeck.push(this.single_card);
console.log(this.single_card);
}
}
// this.shuffle()
}
}
Wenn ich versuche, wie so die Klasse aus der Haupt ‚ts‘ Datei zu verwenden:
import {deck} from './myclasses'
$(document).ready (function(){
let deck1= new deck;
deck1.buildDeck();
});
Die console.log Aufruf gibt den gleichen Fehler:
jQuery.Deferred exception: Cannot set property 'cType' of undefined TypeError: Cannot set property 'cType' of undefined at deck.buildDeck (file:///run/media/Work/HTML_Porjects/Game_TS/built/myclasses.js:132:44)
Wie ist es nicht definiert? Was muss ich tun, damit der Typescript-Code wie der Python-Code funktioniert?
Vielen Dank im Voraus ...
Apologies, habe ich eine Antwort, die ich denke, _May been_ haben wild falsch. –
Aber es scheint, als ob du 'single_card' seltsamerweise benutzt. Definieren Sie es nicht als Datentyp? Warum wird dann wie eine Objekteigenschaft verwendet? –
Danke für die Antwort und ich habe versucht, die Pfeilfunktion funktioniert nicht –