python 简单实现2048,一看就会( 二 )


5.Map
显示面板、生成新数字、判断当前面板还能否操作
()
def addone(self):"""需求:移动之后map有变化才会进入此函数,因此肯定能添加当只剩一个位置的时候,返回False触发判断是否不可再操作思路:获取所有值为0的 row,col 保存到 zero_indexs从 zero_indexs 随机一个 [row,col] 添加数字0.1的概率生成4,0.9的概率生成2"""zero_indexs = []for row in range(self.size_):for col in range(self.size_):if self.map_[row][col]==0:zero_indexs.append([row,col])lastone = len(zero_indexs)==1[row,col] = zero_indexs[random.randint(0, len(zero_indexs)-1)]self.map_[row][col]=4 if random.random()<0.1 else 2return lastone
isend()
def isend(self):"""用于判断当前map还有没有办法操作当添加的数字是最后一个空的时候会调用这个函数"""for row in range(self.size_):for col in range(self.size_):now= self.map_[row][col]right = self.map_[row][col+1] if col+1.size_ else 1down= self.map_[row+1][col] if row+1.size_ else 1if now==right or now==down:return Falsereturn True
完成后的样子:
三、心得
看上去挺简单的游戏,实现起来还是会遇到一些问题的,比如说浅拷贝深拷贝、的引用机制,还有一些小功能挺有意思的,比如随机生成新数字要用坐标,合并一行或一列的数据要四步走…