Pythonista+scene에서 무작위로 트럼프 보이기

이번에는 Pythonista의 장면에서 포커를 표시하는 처리를 만들었습니다.
절차 개요는 아래와 같다.
· 53장 중 무작위로 카드 5장 뽑기
• 스마트폰 화면 터치 후 다시 라카

어떻게 카드 처리를 만듭니까


우선 53장(화패+조커 13장씩)의 포커 세트를 만든다.
표기+숫자 형식으로 문자열을 만들어 카드 목록의 배열에 저장합니다.
태그는 Clubs, Hearts, Spades, Diamonds를 사용하여 Pythonista의 카드 이미지와 일치합니다.

구현 예


※ 2020/01/06 수정
card_list.append () 의 위치가 벗어났기 때문에 수정했습니다.

class TrumpGame:
    def make_card_list(self):
        # マークのリスト
        symbol_list = ['Clubs', 'Hearts', 'Spades', 'Diamonds']
        # カードリスト
        card_list = ['Joker']

    # マークと数字を合体させる
    for symbol in symbol_list:
        for number in range(1, 14):
            # 11以上と1は置き換え
            if number == 1:
                card = symbol + 'A'
            elif number == 11:
                card = symbol + 'J'
            elif number == 12:
                card = symbol + 'Q'
            elif number == 13:
                card = symbol + 'K'
            else:
                # 10以下ならそのまま
                card = symbol + str(number)

            # カードをリストに追加
            card_list.append(card)

    return card_list


그리고 카드를 함수로 카드 세척 처리를 만듭니다.
randam.shuffle () 를 사용하면 간단하게 카드를 세척할 수 있습니다.
◆ 설치 예

    def shuffle(self, card_list):
        # カードをシャッフルする
        random.shuffle(card_list)
        return card_list
관련 기사 >【Python】random.shuffle () 의 활용 예

어떻게 화면에 포커를 표시합니까


카드 종류를 호출하여 카드 목록을 만듭니다.
그리고 5장을 고르세요.

class MyScene (Scene):
    def setup(self):
        # TrumpGame()クラスを呼び出してカードリストを作成 
        self.tg = TrumpGame()
        self.card_list = self.tg.make_card_list()
        self.card_list = self.tg.shuffle(self.card_list)
        self.draw_cards = []

        # 5枚ピックアップ
        for i in range(0, 5):
            self.draw_cards.append(
                self.card_list.pop(0)
            )
다음은 회화 처리의 제작이다.
SpriteNode()에서 카드를 전달하는 문자열,add_child () 를 사용하여 화면에 그립니다.

    
        self.items = []
        for i,card in enumerate(self.draw_cards):
            item = SpriteNode('card:' + card)
            item.anchor_point = (0.5, 0)
            item.position = (80 + i * 50, 350)
            self.add_child(item)
            self.items.append(item)
카드 제작과 씬 처리 코드를 정리하면 다음과 같다.

from scene import *
import random

class MyScene (Scene):
    def setup(self):
        # バックグラウンド設定
        self.background_color = '#004f82'
        ground = Node(parent=self)
        
        self.tg = TrumpGame()
        self.make_draw_cards()

        self.items = []
        for i,card in enumerate(self.draw_cards):
                item = SpriteNode('card:' + card)
                item.anchor_point = (0.5, 0)
                item.position = (80 + i * 50, 350)
                self.add_child(item)
                self.items.append(item)
    
    def touch_began(self, touch):
        self.change_draw_cards()
    
    # 5枚引く処理
    def make_draw_cards(self):
        self.card_list = self.tg.make_card_list()
        self.card_list = self.tg.shuffle(self.card_list)
        self.draw_cards = []

        for i in range(0, 5):
            self.draw_cards.append(
                self.card_list.pop(0)
            )   
            
    # カードを交換する処理        
    def change_draw_cards(self):
        self.make_draw_cards()
        for i,card in enumerate(self.draw_cards):
                self.items[i].texture = Texture('card:' + card)
            
class TrumpGame:
    def make_card_list(self):   
        # マークのリスト
        symbol_list = ['Clubs', 'Hearts', 'Spades', 'Diamonds']
        # カードリスト
        card_list = ['Joker']

        # マークと数字を合体させる
        for symbol in symbol_list:
            for number in range(1, 14):
                # 11以上と1は置き換え
                if number == 1:
                    card = symbol + 'A'
                elif number == 11:
                    card = symbol + 'J'
                elif number == 12:
                    card = symbol + 'Q'
                elif number == 13:
                    card = symbol + 'K'
                else:
                    # 10以下ならそのまま
                    card = symbol + str(number)

                    # カードをリストに追加
                    card_list.append(card)
            
        return card_list
    def shuffle(self, card_list):
        # カードをシャッフルする
        random.shuffle(card_list)
        return card_list

if __name__ == '__main__':
    run(MyScene(), show_fps=False)
◆ 실행 예

지금까지 Pythonista+scene으로 포커를 제작한 처리입니다.
Pythonista에 관해서도 블로그에 정리가 있습니다.
Pythonista의 사용 방법 요약
나는 블로그에서 파이썬스타로 만든 포커 제작 강좌를 했다.
Pythonista+scene 포커 제작 강좌

좋은 웹페이지 즐겨찾기