Python 喵了个喵游戏:精简代码,提升游戏体验
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()
原文地址: http://www.cveoy.top/t/topic/oswJ 著作权归作者所有。请勿转载和采集!