import random

class MiaoMiao: def init(self): self.space_l = [[] for _ in range(7)] self.generate()

def generate(self):
    '生成牌局'
    cat_pool = ['白猫', '黑猫', '黄猫', '蓝猫', '花猫', '粉猫', '大猫', '小猫']
    self.cards = [random.sample(cat_pool * 3, k=3) for _ in range(9)]
    self.check()

def check(self):
    '判断:如果出现无解的情况则重新洗牌'
    while True:
        sum_l = [cat for card in self.cards for cat in card]
        for cat in set(sum_l):
            if sum_l.count(cat) % 3 != 0:
                self.generate()
                break
        else:
            break

def select(self, l: list):
    if not l:
        print('当前位置已经没有猫了,请重新选择!')
        return
    cat = l.pop()
    if cat not in self.space_l:
        self.space_l[self.space_l.index([])] = cat
    else:
        idx = self.space_l.index(cat)
        self.space_l[idx] = cat
        self.space_l.append([])

    if self.space_l.count(cat) == 3:
        self.space_l[:] = [slot for slot in self.space_l if slot != cat] + [[]] * 3

def play(self):
    while True:
        print('欢迎游玩《喵了个喵》')
        print('====================')
        for i in range(9):
            if self.cards[i]:
                print(f'{i+1}.{self.cards[i][-1]}	', end='')
            else:
                print(f'{i+1}.[      ]	', end='')
            if i % 3 == 2:
                print()
        print('====================')
        print(f'空槽位:{self.space_l}')
        print('====================')
        ch = input('请输入1~9将相应的猫放入空槽位:')
        if ch.isdigit() and 1 <= int(ch) <= 9:
            self.select(self.cards[int(ch)-1])
        else:
            print('输入有误,请重新输入')

        if all(slot for slot in self.space_l):
            print('游戏结束!!!')
            break
        if all(not card for card in self.cards):
            print('恭喜通关!!!')
            break

if name == 'main': miao = MiaoMiao() miao.play()

Python 喵了个喵游戏:精简代码,提升游戏体验

原文地址: http://www.cveoy.top/t/topic/oswJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录