写点什么

教你用 Python 实现羊了个羊

  • 2022-12-09
    河北
  • 本文字数:1795 字

    阅读完需:约 6 分钟

案例介绍

欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!


我们来用 Python 编程实战案例,做一个羊了个羊小游戏。输入序号,三个相同的序号会自动消除,消除所有的序号,完成游戏。

案例演示

用户对在槽位中输入小羊对应的序号,七个槽位,每三个相同的序号自动消除,当所有的序号被消除后,游戏通关。



源码学习

进入核心代码学习,我们先来看初始界面的核心代码。


def play(self):    self.check()    while True:        lay = f'''            欢迎来到我的小院            让我们一起来玩"羊了个羊"吧            ====================            1.{self.l1[-1] if len(self.l1) != 0 else '[      ]'}\t 2.{self.l2[-1] if len(self.l2) != 0 else '[      ]'}\t 3.{self.l3[-1] if len(self.l3) != 0 else '[      ]'}            4.{self.l4[-1] if len(self.l4) != 0 else '[      ]'}\t 5.{self.l5[-1] if len(self.l5) != 0 else '[      ]'}\t 6.{self.l6[-1] if len(self.l6) != 0 else '[      ]'}            7.{self.l7[-1] if len(self.l7) != 0 else '[      ]'}\t 8.{self.l8[-1] if len(self.l8) != 0 else '[      ]'}\t 9.{self.l9[-1] if len(self.l9) != 0 else '[      ]'}            ====================            空槽位:{self.space_l}            ====================            请输入1~9将相应的羊放入空槽位:            '''        ch = input(lay)        if ch == '1':            self.select(self.l1)
复制代码


然后再让我们来看选择界面的核心代码,l 为一个列表,通过列表的长度来判断选择是否合理。


def select(self, l: list):        if len(l) == 0:            print('当前位置已经没有羊了,请重新选择!')            return        tmp_l = l.pop()        if tmp_l not in self.space_l:            self.space_l[self.space_l.index([])] = tmp_l        else:            self.space_l.insert(self.space_l.index(tmp_l), tmp_l)            self.space_l.pop()        if self.space_l.count(tmp_l) == 3:            for i in range(3):                self.space_l.remove(tmp_l)                self.space_l.append([])
复制代码


让我们来编写核心的生成代码,首先运用面向对象编程,创建‘Yang’类,再通过 pool 列表创建所有的小羊,利用 random 函数随机选择小羊放入牌局供玩家选择。


class Yang:    space_l = [[], [], [], [], [], [], []]
def __init__(self) -> None: self.generate() self.check()
def generate(self): '''生成牌局'''
pool = ['白羊', '黑羊', '黄羊', '蓝羊', '花羊', '粉羊', '大羊', '小羊']
self.l1 = [random.choices(pool) for i in range(3)] self.l2 = [random.choices(pool) for i in range(3)] self.l3 = [random.choices(pool) for i in range(3)] self.l4 = [random.choices(pool) for i in range(3)] self.l5 = [random.choices(pool) for i in range(3)] self.l6 = [random.choices(pool) for i in range(3)] self.l7 = [random.choices(pool) for i in range(3)] self.l8 = [random.choices(pool) for i in range(3)] self.l9 = [random.choices(pool) for i in range(3)]
def check(self): '''判断:如果出现无解的情况则重新洗牌''' x = True
while x: x = False
sum_l = self.l1 + self.l2 + self.l3 + self.l4 + \ self.l5 + self.l6 + self.l7 + self.l8 + self.l9 for i in sum_l: if sum_l.count(i) % 3 != 0: x = True self.generate() break
复制代码


记得关注我,每天学习一点点

你觉得这个系统核心还能做什么?

全网可搜:小院里的霍大侠, 免费获取简单易懂的实战编程案例。编程/就业/副业/创业/资源。


私微信:huodaxia_xfeater


二维码: http://www.yougexiaoyuan.com/images/weixin_huodaxia.jpg


公众号:有个小院(微信公众号:yougexiaoyuan)


github:yougexiaoyuan (视频源码免费获取)


(部分素材来源于互联网,如有保护请联系作者)


发布于: 2 小时前阅读数: 7
用户头像

还未添加个人签名 2020-09-02 加入

还未添加个人简介

评论

发布
暂无评论
教你用Python实现羊了个羊_Python_小院里的霍大侠_InfoQ写作社区