用python实现一个小游戏——抽牌

想要实现一个抽牌的功能,有很多种实现方法,这时候我们创造一个对象,通过内置方法来完成这个功能:

# Author:Zhang Zhao
# -*-coding:utf-8-*-
from collections import namedtuple
Card = namedtuple(‘card‘,[‘rank‘,‘suit‘]) #创建一个元组,具有名字
import json
class FranchDeck(object):
    rank = [str(i) for i in range(2,11)] + list(‘JQKA‘) #代表牌的大小,字符串类型
    suit = [‘红心‘,‘方板‘,‘黑桃‘,‘梅花‘] #代表牌的花色
    def __init__(self):
        self._cards = [Card(rank,suit) for rank in FranchDeck.rank
                                           for suit in FranchDeck.suit] #创建一副牌,没有大小王
    def __getitem__(self, item): #抽牌运用random中的chioce方法,需要的元素有字典还有长度
        return self._cards[item]
    def __len__(self):
        return len(self._cards)
    def __setitem__(self, key, value):#洗牌需要用到
        self._cards[key] = value
    def __str__(self):
        return json.dumps(self._cards,ensure_ascii=False)#打印牌为列表,但__str__方法打印的是字符串格式,需要进行序列化
a = FranchDeck()

from random import choice
print(choice(a))
print(choice(a))
print(a[4])
print(a)
from random import shuffle
shuffle(a)
print(a[4])

同时拓展一下,如果要实现一个人员信息统计,但是每年人员的姓名性别等信息不会变,变的只是年龄等信息,那么我们再录入信息的时候,为了防止系统里的对象重复或占用内存空间,我们就需要对信息进行自动录入刷新,这时候,我们就想到了set去重功能,但是,具体怎么实现呢?

# Author:Zhang Zhao
# -*-coding:utf-8-*-
class A(object):
    def __init__(self,name,sex,age):
        self.name = name
        self.age = age
        self.sex = sex
    def __hash__(self):
        return hash(self.name + self.sex)
    def __eq__(self, other):
        if self.name == other.name and self.sex == other.sex:
            return True
        return False
a1 = A(‘Chen‘,‘女‘,18)
a2 = A(‘Chen‘,‘女‘,28)
print(set([a1,a2]))

可以看出,使用set的时候,它需要比较的参数是哈希值同时也需要__eq__的返回值。

原文地址:https://www.cnblogs.com/zz1314/p/10451872.html

时间: 2024-10-17 09:26:08

用python实现一个小游戏——抽牌的相关文章

用Python写一个小游戏

刚学Python时间不长,但也知道了一点,看别人的参考写了一个猜数字小游戏,也算是禹学于乐吧. #!/usr/bin/env   python #coding=utf-8 import random secret = random.randint(1,100) guess,tries = 0,0 print u"已经给出了一个1-99的数字" while guess != secret and tries < 5: print u"请给出你猜的数字:" pri

DirectX游戏开发——从一个小游戏开始

本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/26364129 写在前面:自己对DirectX挺感兴趣的,加上自己目前在研究3D重建方面的东西,所以利用课余时间学习一下.看了一段时间的书,感觉还是靠动手编写一些小例子来学习,进步的更快体会的更深.所以从我自己写的一个小游戏开始吧,把自己学习心得和自己的一些想法写下来.更是欢迎有兴趣的童鞋来和我交流. 首先:先把我的小例子分享

微信为什么要搞一个小游戏?

众厂关于 H5 游戏市场的争夺,自 2014 年以来,一直就没有停止过.但一直也没有尘埃落定,最终花落谁家,鹿死谁手现在还不好讲.微信推出小程序,继而推出小游戏,只是腾讯数年来在 H5 市场企业战略的一环. 微信为什么要自定义一套技术,起名为小程序?明明就是原来的 H5 技术,为什么 CSS 不叫 CSS,叫 WXSS:为什么 HTML 不叫 HTML,叫 WXML:为什么明明有 JS.TS,还要自主研发一个 WXS,并且声称"WXS 与 JS 是不同的语言,有自己的语法,并不和 JS 一致&q

通过一个小游戏开始接触Python!

之前就一直嚷嚷着要找视频看学习Python,可是一直拖到今晚才开始....好好加油吧骚年,坚持不一定就能有好的结果,但是不坚持就一定是不好的!! 看着视频学习1: 首先,打开IDLE,在IDLE中新建new file  输入一下代码: print("-----------------------我爱Python-------------------") temp = input("不妨猜一下我现在心里想的是哪个数字:") guess = int(temp) if g

使用Cocos2d-X实现一个小游戏PhotoExhibition

最近也不知道怎么了,总想用Cocos2d-X做一个比较好的东西,想想也是,学习Cocos2d-X快一个月了,也该做个东西练练手了,最近总用手机拍照,看照片,忽然想做一款与图片相关的小游戏,游戏非常简单打开后会显示一个界面,界面上有三个按钮(实际上是使用精灵创建的菜单项) 点击按钮后可以进入相关的场景中(例如点击校园后进入校园创建) 通过鼠标的拖拽可以查看校园场景的图片 如果再看其它创建的图片可以通过点击右下角返回程序主界面 工程文件结构 文件解析: MenuScene.h/MenuScene.c

Python每日一个小程序

前几天上网,收集了20多道Python练习题.这些练习题还是很有价值的,正好最近忙着复习准备校招,可以用来练手.我会把每道题都写一篇博客详细阐述解题思路和源代码,在每道题目后面附上博客地址.希望大家对我的代码能给予指正,我们共同努力,共同进步.后序有好的题目或者解题思路,我还会在这篇博客后面追加. 第 0000 题:将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果 解答:[Python学习笔记]-APP图标显示未读消息数目   http

做了一个小游戏,结项目,数数坑

这是一个微信端的,投篮小游戏. 游戏规则如下: 点击开始,进入游戏,按住右下角红色按钮控制投篮力度,3次进球以后游戏难度将会升级.45秒内您的进球数将会计入排行榜,最终排行榜上的名次可以获得相应奖励,快来投篮冲榜领福利吧. 一.动画效果 做微信项目,相信大家和我一样,已经习惯了放弃使用jQuery,转而使用zepto.但是zepto并没有集成animate()方法.因此若想使用动画,用不想做兼容处理,最高效的方法是重拾jQuery. $(selector).animate(styles,spee

Python第07周:一个小游戏

本篇严重参考Julian Meyer发表的文章:Beginning Game Programming for Teens with Python 本次作业将创建一个简单的游戏叫做英雄兔ver0.1版: 游戏背景: 在这里作为英雄的兔子要保卫城堡,它必须能够移动和射击反击敌人(关于敌人我们在后续章再添加,那时你已经能看懂大部分代码了). # 设计步骤 # 第一步:Hello Bunny(嘿,兔子)# 第二步:添加布景# 第三步:让兔子动起来# 第四步: 旋转兔子# 第五步:射击吧,兔子!# V0.

基于pygame的一个小游戏

class GameStats(): """跟踪游戏的统计信息""" #def __int__(self, ai_settings): def __init__(self, ai_settings): """初始化统计信息""" self.ai_settings = ai_settings self.reset_stats() # 让游戏 处于非活动状态 self.game_active