fork download
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. #雪風,遊園地
  5. #基本的にコピペの貰い物
  6.  
  7.  
  8.  
  9. """
  10. オリジナル ボード型カード遊び 試験型 (陣取り)
  11.  
  12.  
  13. 必要な物
  14. トランプ 1組(52枚+2枚)
  15.  
  16. サイコロ 1つ(1から6)
  17.  
  18. ボード 一直線*2 20マス*2 (合計40マス)
  19. (マスを越したら、最初のマスから移動)
  20. プレイヤーは進行場所 1直線 
  21. ユニット 保留場所 1直線
  22.  
  23. プレイヤーシンボル 2つ
  24.  
  25. 勝敗
  26.  面積の多いユーザーの勝ち
  27.  
  28.  
  29. 手順
  30. 1, トランプからカードを2枚引く
  31. 2, サイコロを振る
  32.  
  33. 3,手札からトランプを4種類選びユニットを作る(ステータス上限有り) 手札から選べないならパス
  34.  
  35. 4,ユニットを地形に置く
  36.  
  37.  
  38.  
  39. トランプのカードマーク 効果
  40. HP = ハート   体力
  41. AP = スペード  攻撃
  42. DP= クローバー  防御
  43. PP= ダイヤ   価値
  44.  
  45.  
  46. 4種類で1つのユニットが1ターンに2体まで、
  47. 作れる。
  48.  
  49.  
  50. ユニットの属性 3種類
  51. ユニットの属性はステータスの最大数値が高い
  52. 物で分類 AP=A属性 DP=B属性 PP=C属性
  53. (同じ値が複数の場合は、AP,DP,PPの昇順で自動振分けされる)
  54.  
  55.  
  56. トランプの強さ
  57. 弱い←     →  強い
  58. 2, 3 , 4 , 5 , 6, 7, 8, 9, 10, J, Q, K, A
  59.  
  60. ジョーカー
  61. 手持ちに有る場合は、ユニット作成時に好きなステータス項目+X  Xはサイコロの数
  62.  
  63.  
  64. トランプ_デッキ詳細
  65. トランプデッキから引いたカードはデッキから削除される。デッキが0枚になったら、デッキをリッセット(54枚に)して引く
  66.  
  67.  
  68. 地形 4属性 3竦み
  69.  A,B,C + D=止まっても何もないマス
  70.  
  71.  
  72. 地形とユニット効果
  73. ユニット 地形 効果
  74. A   B   AP+2
  75. B   C   DP+2
  76. C   A   PP+2
  77.  
  78.  
  79.  
  80. ユニットの戦闘 計算式(足し算と引き算)
  81. 攻め vs 守り
  82.  各ユニットステータス+属性(AP) vs 各ユニットステータス地形効果+(属性,B)
  83.  
  84. [hp,10 AP,K DP,6 PP,5]+[AP+2] vs [HP,6 AP,7, DP,Q PP,j] +0
  85. 攻め側から、自分APー敵DP=ダメージ 相手側の敵HPが残ってたら、同様
  86. 13+2 - 12=4ダメージ  7-6=1ダメージ
  87. 結果
  88. hp,9 ap,k dp,6 pp,5 vs hp,2 , ap7 dp,q pp,j
  89.  
  90.  
  91. ユニット戦闘 土地に残った場合
  92.  PP値分だけ、敵のステータスを引く
  93.  攻め側のユニットのhpが残ってたなら、その場のユニット 保留場所へ移動
  94.  
  95. ユニット戦闘 土地に残らなかった場合(どちらかが、倒されたら)
  96. あなたは3枚、デッキから引く
  97.  
  98.  
  99.  
  100. 勝敗判定 グラフ中央が0
  101.  
  102.          HP
  103.  
  104.  
  105. AP                  DP
  106.  
  107.  
  108.  
  109.          PP
  110.  
  111.  
  112. お互いのプレイヤーマスに居るユニットの特徴を上記のグラフ上に点で表す
  113. ユニット保留場所に居るユニットの特徴/2を上記のグラフ上に点で表す
  114.  
  115.  
  116. お互いに線を引き
  117.  グラフ上の割合が多いプレイヤーの勝ち
  118.  
  119. 線の引き方はXXX
  120.  ユニットステータスの最小が点
  121.  
  122. 最終的にユニット数が多く、ユニットのステータスが低い方が多く面積を獲得できるので勝利
  123.  
  124.  
  125.  
  126. フィールドを多次元にして、
  127. これに色塗りとプレイヤーを動かす機能をつけて完了
  128.  
  129.  
  130.  
  131. """
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144. import time
  145. # 処理前の時刻
  146. t1 = time.time()
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155. # upper-case A-Z
  156. A_Z=[chr(i) for i in range(65,65+26)]
  157. # lower-case a-z
  158. a_z=[chr(i) for i in range(97,97+26)]
  159. # number
  160. number=[chr(i) for i in range(48, 48+10)]
  161. #print(A_Z,a_z,number)
  162.  
  163. # a-z list []
  164. import sys
  165. sys.modules[__name__].__dict__.update(dict([(chr(x), []) for x in range(ord('a'), ord('z') + 1)]))
  166. # A-Z dict {}
  167. sys.modules[__name__].__dict__.update(dict([(chr(x), {}) for x in range(ord('A'), ord('Z') + 1)]))
  168. #print(a,A)
  169.  
  170. def Janken(a,b):
  171. c=(a-b+3)%3
  172. if (c==0):
  173. return "DRAW"
  174. elif (c==2):
  175. return "WIN"
  176. else:return "LOSE"
  177.  
  178. print(Janken(0,0))
  179.  
  180. # A=0 B=1 C=2 D=None
  181. l='A'*5+'B'*5+'C'*5+'D'*5
  182. import random
  183. r=random.sample(l,20)
  184.  
  185. print(l,r)
  186.  
  187. def Sample03(x,y):
  188. return a.append(x),b.append(y)
  189. Sample03(random.randint(1,6),random.randint(1,6))
  190.  
  191. print(a,r[sum(a)-1],b,r[sum(b)-1])
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203. class Monopoly:
  204. def __init__(self, *players):
  205. self.board = list(self._init_board())
  206. self.players = list(self._init_players(players))
  207.  
  208. def _init_board(self):
  209. KEYS = ('name', 'color', 'list_price', 'construction_cost', 'remarks')
  210.  
  211. PROPS = (('GO', 0, 0, 0, 'Starting_point', []),
  212. ('Mediterranean Street', 1, 60, 50, 'No_information', []))
  213. return map(lambda prop: dict(zip(KEYS, prop)), PROPS)
  214.  
  215. def _init_players(self, players):
  216. KEYS = ('name', 'money', 'pos')
  217. return map(lambda name: dict(zip(KEYS, (name, 1500, 0))), players)
  218.  
  219. game = Monopoly('a', 'b')
  220.  
  221. print(game.board)
  222. print(game.players)
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233. import random
  234. from operator import attrgetter
  235.  
  236. class Card:
  237. def __init__(self,no,suite):
  238. self.no=no
  239. self.suite=suite
  240.  
  241. def __str__(self):
  242. if self.no == 11:
  243. dispno='J'
  244. elif self.no == 12:
  245. dispno='Q'
  246. elif self.no == 13:
  247. dispno='K'
  248. elif self.no == 1:
  249. dispno='A'
  250. else:
  251. dispno = str(self.no)
  252. return self.suite+dispno
  253.  
  254. def __repr__(self):
  255. if self.no == 11:
  256. dispno='J'
  257. elif self.no == 12:
  258. dispno='Q'
  259. elif self.no == 13:
  260. dispno='K'
  261. elif self.no == 1:
  262. dispno='A'
  263. else:
  264. dispno = str(self.no)
  265. return self.suite+dispno
  266.  
  267. deck = []
  268. for suite in ['♠','♥','♣','♦']:
  269. for no in range(1,13+1):
  270. deck.append(Card(no,suite))
  271.  
  272. print (deck)
  273. print ('deck size:',len(deck))
  274. random.shuffle(deck)
  275. print (deck)
  276.  
  277. hand1 = []
  278. hand2 = []
  279. hand1.append(deck.pop())
  280. hand2.append(deck.pop())
  281.  
  282. print (hand1)
  283. print (hand2)
  284. if hand1[0].no == hand2[0].no:
  285. print ('draw')
  286. elif hand1[0].no > hand2[0].no:
  287. print ('hand1 bigger')
  288. else:
  289. print ('hand2 bigger')
  290.  
  291. print (deck)
  292. print ('deck size:',len(deck))
  293.  
  294. print (sorted(deck,key=attrgetter('suite','no')))
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304. print()
  305. # 処理後の時刻
  306. t2 = time.time()
  307.  
  308. # 経過時間を表示
  309. elapsed_time = t2-t1
  310. print(elapsed_time)
  311.  
  312.  
  313.  
Success #stdin #stdout 0.05s 12028KB
stdin
Standard input is empty
stdout
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