python实现2048游戏——原理矩阵转置

本文介绍了使用Python实现2048游戏的过程,通过矩阵转置来实现游戏的核心逻辑,同时也对参考代码进行了个人调整并修复了一些已知问题。
摘要由CSDN通过智能技术生成

参考了大佬的代码,有了一些自己的调整,修复了大佬的一些小bug
原文链接


#!/usr/bin/env python3
# coding: utf-8
import numpy
import numpy as np
import random
from random import choice


class Game2048(object):
    '''2048游戏的类'''
    '''
        属性:
            self.dimension
            self.matrix
        方法:
            judge_gameover(self)
            generate_num(self)
            left_2048(self)
            right_2048(self)
            down_2048(self)
            up_2048(self)
            print_(self)
            input_(self)
    '''

    def __init__(self, dimension=3):
        self.dimension = dimension  # 维数,决定要构建几维的矩阵
        self.matrix = np.zeros((dimension, dimension))  # 创建一个全是0的n(n = dimension)维矩阵
        self.matrix2 = np.zeros((dimension, dimension))  # 创建一个全是0的n(n = dimension)维矩阵


    def judge_gameover(self):  # 判断是否游戏结束,如果游戏结束返回True,未结束则返回False
        '''如果水平方向上任意两个相邻的数字有相等的或者有为0的那么游戏未结束'''
        for a in range(0, self.dimension):
            for b in range(0, self.dimension - 1):
                if self.matrix[a][b] == self.matrix[a][b + 1] or self.matrix[a][b] == 0 or self.matrix[a][b + 1] == 0:
                    return False
        '''如果垂直方向上任意两个相邻的数字有相等的或者有为0的那么游戏未结束'''
        '''此处有问题,这里转置了全局变量没有转置回去导致错误,故定义两个矩阵存储,互不影响'''
        self.matrix2 = np.transpose(self.matrix)  # 先转置垂直方向变作水平方向 eg:[[1,2],[3,4]]>>[[1,3],[2,4]]
        for a in range(0, self.dimension):
            for b in range(0, self.dimension - 1):
                if self.matrix2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值