#!/usr/bin/env python # -*- coding: utf-8 -*- #雪風,遊園地 #基本的にコピペの貰い物 """ オリジナル ボード型カード遊び 試験型 (陣取り) 必要な物 トランプ 1組(52枚+2枚) サイコロ 1つ(1から6) ボード 一直線*2 20マス*2 (合計40マス) (マスを越したら、最初のマスから移動) プレイヤーは進行場所 1直線 ユニット 保留場所 1直線 プレイヤーシンボル 2つ 勝敗 面積の多いユーザーの勝ち 手順 1, トランプからカードを2枚引く 2, サイコロを振る 3,手札からトランプを4種類選びユニットを作る(ステータス上限有り) 手札から選べないならパス 4,ユニットを地形に置く トランプのカードマーク 効果 HP = ハート 体力 AP = スペード 攻撃 DP= クローバー 防御 PP= ダイヤ 価値 4種類で1つのユニットが1ターンに2体まで、 作れる。 ユニットの属性 3種類 ユニットの属性はステータスの最大数値が高い 物で分類 AP=A属性 DP=B属性 PP=C属性 (同じ値が複数の場合は、AP,DP,PPの昇順で自動振分けされる) トランプの強さ 弱い← → 強い 2, 3 , 4 , 5 , 6, 7, 8, 9, 10, J, Q, K, A ジョーカー 手持ちに有る場合は、ユニット作成時に好きなステータス項目+X Xはサイコロの数 トランプ_デッキ詳細 トランプデッキから引いたカードはデッキから削除される。デッキが0枚になったら、デッキをリッセット(54枚に)して引く 地形 4属性 3竦み A,B,C + D=止まっても何もないマス 地形とユニット効果 ユニット 地形 効果 A B AP+2 B C DP+2 C A PP+2 ユニットの戦闘 計算式(足し算と引き算) 攻め vs 守り 各ユニットステータス+属性(AP) vs 各ユニットステータス地形効果+(属性,B) [hp,10 AP,K DP,6 PP,5]+[AP+2] vs [HP,6 AP,7, DP,Q PP,j] +0 攻め側から、自分APー敵DP=ダメージ 相手側の敵HPが残ってたら、同様 13+2 - 12=4ダメージ 7-6=1ダメージ 結果 hp,9 ap,k dp,6 pp,5 vs hp,2 , ap7 dp,q pp,j ユニット戦闘 土地に残った場合 PP値分だけ、敵のステータスを引く 攻め側のユニットのhpが残ってたなら、その場のユニット 保留場所へ移動 ユニット戦闘 土地に残らなかった場合(どちらかが、倒されたら) あなたは3枚、デッキから引く 勝敗判定 グラフ中央が0 HP AP DP PP お互いのプレイヤーマスに居るユニットの特徴を上記のグラフ上に点で表す ユニット保留場所に居るユニットの特徴/2を上記のグラフ上に点で表す お互いに線を引き グラフ上の割合が多いプレイヤーの勝ち 線の引き方はXXX ユニットステータスの最小が点 最終的にユニット数が多く、ユニットのステータスが低い方が多く面積を獲得できるので勝利 フィールドを多次元にして、 これに色塗りとプレイヤーを動かす機能をつけて完了 """ import time # 処理前の時刻 t1 = time.time() # upper-case A-Z A_Z=[chr(i) for i in range(65,65+26)] # lower-case a-z a_z=[chr(i) for i in range(97,97+26)] # number number=[chr(i) for i in range(48, 48+10)] #print(A_Z,a_z,number) # a-z list [] import sys sys.modules[__name__].__dict__.update(dict([(chr(x), []) for x in range(ord('a'), ord('z') + 1)])) # A-Z dict {} sys.modules[__name__].__dict__.update(dict([(chr(x), {}) for x in range(ord('A'), ord('Z') + 1)])) #print(a,A) def Janken(a,b): c=(a-b+3)%3 if (c==0): return "DRAW" elif (c==2): return "WIN" else:return "LOSE" print(Janken(0,0)) # A=0 B=1 C=2 D=None l='A'*5+'B'*5+'C'*5+'D'*5 import random r=random.sample(l,20) print(l,r) def Sample03(x,y): return a.append(x),b.append(y) Sample03(random.randint(1,6),random.randint(1,6)) print(a,r[sum(a)-1],b,r[sum(b)-1]) class Monopoly: def __init__(self, *players): self.board = list(self._init_board()) self.players = list(self._init_players(players)) def _init_board(self): KEYS = ('name', 'color', 'list_price', 'construction_cost', 'remarks') PROPS = (('GO', 0, 0, 0, 'Starting_point', []), ('Mediterranean Street', 1, 60, 50, 'No_information', [])) return map(lambda prop: dict(zip(KEYS, prop)), PROPS) def _init_players(self, players): KEYS = ('name', 'money', 'pos') return map(lambda name: dict(zip(KEYS, (name, 1500, 0))), players) game = Monopoly('a', 'b') print(game.board) print(game.players) import random from operator import attrgetter class Card: def __init__(self,no,suite): self.no=no self.suite=suite def __str__(self): if self.no == 11: dispno='J' elif self.no == 12: dispno='Q' elif self.no == 13: dispno='K' elif self.no == 1: dispno='A' else: dispno = str(self.no) return self.suite+dispno def __repr__(self): if self.no == 11: dispno='J' elif self.no == 12: dispno='Q' elif self.no == 13: dispno='K' elif self.no == 1: dispno='A' else: dispno = str(self.no) return self.suite+dispno deck = [] for suite in ['♠','♥','♣','♦']: for no in range(1,13+1): deck.append(Card(no,suite)) print (deck) print ('deck size:',len(deck)) random.shuffle(deck) print (deck) hand1 = [] hand2 = [] hand1.append(deck.pop()) hand2.append(deck.pop()) print (hand1) print (hand2) if hand1[0].no == hand2[0].no: print ('draw') elif hand1[0].no > hand2[0].no: print ('hand1 bigger') else: print ('hand2 bigger') print (deck) print ('deck size:',len(deck)) print (sorted(deck,key=attrgetter('suite','no'))) print() # 処理後の時刻 t2 = time.time() # 経過時間を表示 elapsed_time = t2-t1 print(elapsed_time)
Standard input is empty
DRAW AAAAABBBBBCCCCCDDDDD ['A', 'D', 'A', 'D', 'B', 'D', 'C', 'B', 'B', 'C', 'D', 'C', 'A', 'B', 'D', 'B', 'C', 'A', 'C', 'A'] [4] D [1] A [{'construction_cost': 0, 'remarks': 'Starting_point', 'name': 'GO', 'color': 0, 'list_price': 0}, {'construction_cost': 50, 'remarks': 'No_information', 'name': 'Mediterranean Street', 'color': 1, 'list_price': 60}] [{'name': 'a', 'money': 1500, 'pos': 0}, {'name': 'b', 'money': 1500, 'pos': 0}] [♠A, ♠2, ♠3, ♠4, ♠5, ♠6, ♠7, ♠8, ♠9, ♠10, ♠J, ♠Q, ♠K, ♥A, ♥2, ♥3, ♥4, ♥5, ♥6, ♥7, ♥8, ♥9, ♥10, ♥J, ♥Q, ♥K, ♣A, ♣2, ♣3, ♣4, ♣5, ♣6, ♣7, ♣8, ♣9, ♣10, ♣J, ♣Q, ♣K, ♦A, ♦2, ♦3, ♦4, ♦5, ♦6, ♦7, ♦8, ♦9, ♦10, ♦J, ♦Q, ♦K] deck size: 52 [♥10, ♣6, ♦7, ♠6, ♥3, ♣3, ♣10, ♠8, ♠4, ♣5, ♦8, ♣9, ♦5, ♦Q, ♥J, ♥Q, ♥K, ♥8, ♦10, ♣2, ♣7, ♦9, ♣J, ♣K, ♠K, ♣Q, ♣8, ♣A, ♥7, ♦J, ♦2, ♠7, ♥6, ♥4, ♠2, ♦K, ♠Q, ♣4, ♠5, ♠A, ♦4, ♥9, ♠J, ♦3, ♥A, ♠10, ♦A, ♦6, ♠3, ♥2, ♠9, ♥5] [♥5] [♠9] hand2 bigger [♥10, ♣6, ♦7, ♠6, ♥3, ♣3, ♣10, ♠8, ♠4, ♣5, ♦8, ♣9, ♦5, ♦Q, ♥J, ♥Q, ♥K, ♥8, ♦10, ♣2, ♣7, ♦9, ♣J, ♣K, ♠K, ♣Q, ♣8, ♣A, ♥7, ♦J, ♦2, ♠7, ♥6, ♥4, ♠2, ♦K, ♠Q, ♣4, ♠5, ♠A, ♦4, ♥9, ♠J, ♦3, ♥A, ♠10, ♦A, ♦6, ♠3, ♥2] deck size: 50 [♠A, ♠2, ♠3, ♠4, ♠5, ♠6, ♠7, ♠8, ♠10, ♠J, ♠Q, ♠K, ♣A, ♣2, ♣3, ♣4, ♣5, ♣6, ♣7, ♣8, ♣9, ♣10, ♣J, ♣Q, ♣K, ♥A, ♥2, ♥3, ♥4, ♥6, ♥7, ♥8, ♥9, ♥10, ♥J, ♥Q, ♥K, ♦A, ♦2, ♦3, ♦4, ♦5, ♦6, ♦7, ♦8, ♦9, ♦10, ♦J, ♦Q, ♦K] 0.005675792694091797