저는이 간단한 코드를 파이썬으로 작성하여 작은 카드 게임을 만들고 타이프 스크립트를 사용하여 동일하게 만들고 싶습니다. 그러나 은 내 주요 클래스에서 'this'와 큰 문제에 직면합니다. typescript/js에서 'this'를 처리하는 방법은 무엇입니까? 파이썬 코드를 타이프 스크립트로 변환해야합니다
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
그리고 내 주요 게임 파일에
내가 같은 것을 할 : 타이프 이 원래 파이썬 클래스는from classes import deck
deck1= deck()
deck1.build_deck()
my_hand=deck1.pick_hand(3)
compu_hand=deck1.pick_hand(3)
그러나 때 나는 다음과 같은 쓴 형 스크립트에 유사한 클래스를 만들려고 :
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()
}
}
내가 지금처럼 주 '의 TS'파일에서 클래스를 사용하려고 :
import {deck} from './myclasses'
$(document).ready (function(){
let deck1= new deck;
deck1.buildDeck();
});
을 console.log를
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)
어떻게 정의되지 않은 : 호출이 같은 오류를 반환? Typescript 코드를 파이썬 코드처럼 작동 시키려면 어떻게해야합니까?
미리 감사드립니다 ...
는
사과를, 나는 격렬하게 잘못 been_ 한 _may 생각 대답을했다. –
그러나'single_card'를 이상하게 사용하고있는 것처럼 보입니다. 데이터 유형으로 정의하지 않습니까? 그런데 왜 객체 속성처럼 사용됩니까? –
응답 해 주셔서 감사합니다. 작동하지 않는 화살표 기능을 시도했습니다. –