Python 纸牌游戏
纸牌游戏
# card.py from random import shuffle class Card:
# 黑桃,红桃,方块,梅花
suits = ['spades', 'hearts', 'diamonds', 'clubs'] values = [None, None, '', '', '', '', '', '', '', '', '', 'Jack', 'Queen', 'King', 'Ace'] def __init__(self, v, s):
"""suits和value的值都为整型数(index)"""
self.value = v
self.suit = s def __lt__(self, c2):
"""less than"""
if self.value < c2.value:
return True
if self.value == c2.value:
if self.suit < c2.suit:
return True
else:
return False
return False def __gt__(self, c2):
"""greater than"""
if self.value > c2.value:
return True
if self.value == c2.value:
if self.suit > c2.value:
return True
else:
return False
return False def __repr__(self):
v = self.values[self.value] + ' of ' + self.suits[self.suit]
return v class Deck:
def __init__(self):
# 将52张牌都添加到cards列表中
self.cards = []
for i in range(2, 15):
for j in range(4):
self.cards.append(Card(i, j))
# 调用shuffle方法洗牌(随机排列cards)
shuffle(self.cards) def rm_card(self):
# 抽牌
if len(self.cards) == 0:
return
return self.cards.pop() class Player:
def __init__(self, name):
self.wins = 0
self.card = None
self.name = name class Game:
def __init__(self):
name1 = input('p1 name ')
name2 = input('p2 name ')
self.deck = Deck()
self.p1 = Player(name1)
self.p2 = Player(name2) def wins(self, winner):
print("{} wins this round".format(winner)) def draw(self, p1n, p1c, p2n, p2c):
print("{} drew {}; {} drew {}".format(p1n, p1c, p2n, p2c)) def play_game(self):
cards = self.deck.cards
print('beginning War!')
while len(cards) >= 2:
response = input('q to quit. Any key to play:')
if response.lower() =='q':
break
p1c = self.deck.rm_card()
p2c = self.deck.rm_card()
p1n = self.p1.name
p2n = self.p2.name
self.draw(p1n, p1c, p2n, p2c)
if p1c > p2c:
self.p1.wins += 1
self.wins(self.p1.name)
else:
self.p2.wins += 1
self.wins(self.p2.name) win = self.winner(self.p1, self.p2) print('War is over. {} wins'.format(win)) def winner(self, p1, p2):
if p1.wins > p2.wins:
return p1.name
if p1.wins < p2.wins:
return p2.name
return 'It was a tie!' if __name__ == '__main__':
game = Game()
game.play_game()
Python 纸牌游戏的更多相关文章
- python 全栈开发,Day30(纸牌游戏,异常和错误,异常处理)
一.纸牌游戏 ...
- HDU 2209 翻纸牌游戏 状态BFS
翻纸牌游戏 Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem De ...
- hdu2209翻纸牌游戏
翻纸牌游戏 Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- 翻纸牌游戏(dfs回溯)
翻纸牌游戏 Time Limit : 9000/3000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submiss ...
- HDU 2209 翻纸牌游戏(DFS)
题目链接 Problem Description 有一种纸牌游戏,很有意思,给你N张纸牌,一字排开,纸牌有正反两面,开始的纸牌可能是一种乱的状态(有些朝正,有些朝反),现在你需要整理这些纸牌.但是麻烦 ...
- HDU 2209 翻纸牌游戏
翻纸牌游戏 Time Limit : 9000/3000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submiss ...
- Python:游戏:五子棋之人机对战
本文代码基于 python3.6 和 pygame1.9.4. 五子棋比起我之前写的几款游戏来说,难度提高了不少.如果是人与人对战,那么,电脑只需要判断是否赢了就可以.如果是人机对战,那你还得让电脑知 ...
- Python:游戏:300行代码实现俄罗斯方块
本文代码基于 python3.6 和 pygame1.9.4. 俄罗斯方块是儿时最经典的游戏之一,刚开始接触 pygame 的时候就想写一个俄罗斯方块.但是想到旋转,停靠,消除等操作,感觉好像很难啊, ...
- Python:游戏:扫雷(附源码)
这次我们基于 pygame 来做一个扫雷,上次有园友问我代码的 python 版本,我说明一下,我所有的代码都是基于 python 3.6 的. 先看截图,仿照 XP 上的扫雷做的,感觉 XP 上的样 ...
随机推荐
- HDU 5175
我想了很久了,后来还是把N分解质因数,枚举各种组合,反正也不多吧,按题目条件,然后就过了. #include <cstdio> #include <iostream> #inc ...
- HDU 1238
好吧,这题直接搜索就可以了,不过要按照长度最短的来搜,很容易想得到. 记得ACM比赛上有这道题,呃..不过,直接搜..呵呵了,真不敢想. #include <iostream> #incl ...
- 剖析Mysql的InnoDB索引
摘要: 本篇介绍下Mysql的InnoDB索引相关知识,从各种树到索引原理到存储的细节. InnoDB是Mysql的默认存储引擎(Mysql5.5.5之前是MyISAM,文档).本着高效学习的目的,本 ...
- 【字符串处理算法】字符串包括的算法设计及C代码实现
一.需求描写叙述 给定一个长字符串和一个短字符串.编敲代码推断短字符串中的全部字符是否都在长字符串中.假设是,则长字符串包括短字符串:反之,不包括. 为了尽量包括大多数情况,字符串中能够包括大写和小写 ...
- MySQL数据库——索引与视图
索引 MySQL的索引包括普通索引.唯一性索引(unique index).全文索引(fulltext index).单列索引.多列索引和空间索引等. 1.索引的创建 ·创建表的时候创建索引 SQL语 ...
- PHP独立操作符
& 与 ^ 位逻辑异或 $ # ! 逻辑或 ~ 按位取反
- Java缓存server调优
搜索降级方案中xmn開始使用bizer默认的128M,很慢. 偶然改成1G,效果立刻上来,可是xmx调大并没有明显效果. 100并发 200并 ...
- POJ - 3280Cheapest Palindrome-经典区间DP
POJ - 3280 Cheapest Palindrome Time Limit: 2000MS Memory Limit: 65536KB 64bit IO Format: %I64d & ...
- Resin 优化配置
1.在resin.conf中的session-config内部添加 <session-max>4096</session-max> <session-timeout> ...
- js实现原生Ajax的封装及ajax原理详解
原理及概念 AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是一种用于创建快速动态网页的技术. 动态网页:是指可以通过服务器语言结合数 ...