前言
这次,我们来尝试一下2048这款游戏,不了解的可以自行玩一下,这里不展开了。
还是使用pygame,因为我们之前已经有过了好几个pygame项目了,这次我准备快一点,主要讲其中的逻辑部分。
界面搭建
这部分的pygame调用会一笔掠过,如果不知道原理的看一下这个:
之前的部分
2048的效果是这样的:
4*4的格子,每一个格子上都有一个数字,并且下面有我们的得分。
这次我们没有再使用创建类的方式来存储rect对象和数字,而是分开成两个。
num二维数组:存储数据;
rectangle数组:存储rect对象。
然后将数字和一个个的方块对应上。
整个界面我们是渲染了背景颜色,然后对每一种可能出现的数字都赋予一种和背景颜色不同的颜色,并且我们的方块稍微窄一些,这样就能够显示出一个漂亮的分割线。
随后,在数字非零的方块上,我们显示出数字,就实现了功能。
"""2048小游戏"""
import pygame
from fuc import *
from time import sleep
# 游戏状态
"""当变量为0时,结束循环,退出游戏"""
game_stats = 1
# 颜色
"""背景颜色,深灰色"""
bg_color = (105, 105, 105)
"""每一种数字对应的rgb颜色,用字典封装方便查找"""
color = {
0 :(211, 211, 211),
2 :(255, 255, 255),
4 :(253, 245, 230),
8 :(255, 228, 196),
16 :(255, 222, 173),
32 :(255, 193, 193),
64 :(255, 106, 106),
128:(255, 255, 0 ),
256:(218, 165, 32),
512:(184, 134, 11)
}
# 格子的宽度、高度
lattice = 99
# 得分
score = 0
# 参数封装
"""参数封装成列表,方便我们进行变量的修改"""
game = [game_stats, score]
# 创建矩阵
"""问题1"""
num = [ [0]*4 for i in range(4)]
# rect对象数组,这个是一维数组!,而且这个xy顺序很烦的
"""问题2"""
rectangle = [pygame.Rect(x*lattice+x+1,y*lattice+y+1,lattice,lattice) for y in range(4) for x in range(4)]
# 创建screen对象
pygame.init()
screen = pygame.display.set_mode((400,430))
pygame.display.set_caption('2048')
# 开始游戏
"""先生成一个,不然玩个鬼"""
new(num,game)
while game[0]:
""刷新""""