python实现2048——1、界面&逻辑

本文介绍了如何使用Python的Pygame库实现2048游戏的界面和逻辑。通过详细讲解界面搭建、事件检测、生成、检查、排序和刷新等关键步骤,阐述了游戏开发过程中的主要问题和解决方案,包括二维数组的正确初始化、数字移动和合并的逻辑、新方块生成以及游戏状态检查等。
摘要由CSDN通过智能技术生成

前言

这次,我们来尝试一下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]:
	""刷新""""
    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值