第一次写的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 =