代码全是自己写的注释 (怕以后自己再回头看自己写的 看不懂 )
所有的逻辑基本都写在注释里了
代码肯定不是最简洁的,包含注释400行了
但是应该是相对来说很容易看懂的
毕竟自己作为一个初学者,在网上看了2048的各种代码,就没有一眼能看明白的 ,都需要从头到尾对照着变量看好几遍才能理解,当然还有很多不理解的
所以 最终还是自己整理了思路,自己来吧
自己修正了一个bug
在move_up()和move_down()这两个函数里,我原来写的list_zero=matrix[x],后来运行了发现如果出现类似
0 0 0 0
0 0 0 0
2 4 8 16
8 2 4 8
这个情况时,上下移动不生成新数字,左右又不能移动了,死循环了
后来发现是这个赋值,其实是复制了内存地址,并没有复制实际内容
-*- coding: utf-8 -*-
__/author__by:Kevin_F/__
import sys
import random
import pygame
matrix = [] # 二维数组,用于存放数字
list_zero = [] # 用一个集合去放矩阵中空的元素(即数字为0)的下标(x,y)
score = 0 # 得分
is_add = False # 用于判断是否需要生成新的数字,默认不生成新数字
colors = {0: (205, 193, 180), # 各种方块对应的颜色
2: (238, 228, 218),
4: (237, 224, 200),
8: (242, 177, 121),
16: (245, 149, 99),
32: (246, 124, 95),
64: (246, 94, 59),
128: (237, 207, 114),
256: (237, 204, 98),
512: (237, 200, 80),
1024: (237, 197, 63),
2048: (225, 187, 0),
4096: (225, 187, 0),
8192: (225, 187, 0)
}
初始化游戏界面
每个方块尺寸100*100,间隔15,整个矩阵上方留高150空间,用于显示得分和游戏结束的信息
def game_init():
# 背景
pygame.init()
global screen
screen = pygame.display.set_mode((475, 625))
pygame.display.set_caption('Game-2048 by:Kevin_X 按ESC可重新开始游戏')
screen.fill((255, 222, 173))
# 得分区
pygame.draw.rect(screen, (255, 239, 213), (0, 0, 475, 150), 0)
font_defen = pygame.font.SysFont('SimHei', 50)
text_defen = font_defen.render('得分', True, (205, 193, 180))
screen.blit(text_defen, (40, 10))
pygame.display.flip()
分数显示
def show_score(score):
# 分数显示框
pygame.draw.rect(screen, (255, 255, 255), (20, 70, 140, 70), 0)
# 分数会不断累积变化
font_score = pygame.font.SysFont('SimHei', 50)
text_score = font_score.render(str(score), True, (255, 97, 0))
tx2, ty2 = text_score.get_size()
screen.blit(text_score, (90 - tx2 / 2, 105 - ty2 / 2))
pygame.display.update()
# 每次相加,分数都会发生变化,都需要重写 所以把分数显示单独开来,而不能跟游戏初始化放在一起
# 分数显示框是一个矩形框,每次显示分数时,先重画矩形框,然后再写入分数值
初始化矩阵,用于存放数字
4*4的矩阵,共16个数字,0表示方块为空,不显示内容,其他数字正常显示数值
def _game_list():
for i in range(4): # 初始设置全为0
lis = []
for j in range(4):
lis.append(0)
matrix.append(lis)
显示游戏区域:游戏方块和数字
矩阵里每一个数字包含几个信息:数字内容,数字XY坐标,方块XY坐标,方块颜色色&#
Original: https://blog.csdn.net/weixin_65922074/article/details/126315230
Author: weixin_65922074
Title: python写的2048游戏,源代码,pygame
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/779689/
转载文章受原作者版权保护。转载请注明原作者出处!