pygame2048小游戏

第一次写的pygame小游戏,欢迎评论。

直接贴图:

代码如下,注释详细(有个背景图片就不上传啦):

'''
    2048小游戏
'''
import pygame,sys,random,numpy

class MyGame(object):

    '''
       1.初始化函数
    '''
    def __init__(self):
        # 窗体
        self.screen = pygame.display.set_mode((460, 620),0,0)
        # 背景图
        self.back = pygame.image.load("2048.png")
        # 4行4列
        self.Size = 4
        # 每个块的长宽
        self.Block_WH = 100
        # 两个块之间的间隙
        self.Block_Space = 10
        # 初始化矩阵4*4的0矩阵
        self.matrix = numpy.zeros([self.Size,self.Size])
        # 设置计分器
        self.Score = 0
        # 数块颜色字典
        self.Block_Color = {
            0:(205,193,180),
            2:(255,255,220),
            4:(255,255,130),
            8:(255,255,0),
            16:(255,220,128),
            32:(255,220,0),
            64:(255,190,0),
            128:(255,160,0),
            256:(255,130,0),
            512:(255,100,0),
            1024:(255,70,0),
            2048:(255,40,0),
            4096:(255,10,0),
        }
        # 二维列表zerolist
        self.zerolist = []
        # 游戏结束标志
        self.flag = False

    '''
        5.初始化矩阵
    '''
    def initData(self,matrix = None,zerolist = None):
        # 若矩阵为空,则拷贝初始化矩阵
        if matrix is None:
            matrix = self.matrix.copy()
        # 若zerolist为空,则随机返回(x,y)位置,否则返回任意一个0元素位置
        a,b = self.getRandomLocal(zerolist)
        n = self.getNewNum()
        matrix[a][b] = n
        # 返回初始化任意位置为2或者4的矩阵
        return matrix

    # 5.1 获取要生成数字方块的位置
    def getRandomLocal(self,zerolist = None):
        # 5.1.1 若为空,随机生成某行某列
        if zerolist == None:
            a = random.randint(0,self.Size-1)
            b =
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值