目录
步骤二:新建一个python程序,可以命名为2048,放在素材目录的同级文件夹下
步骤四:在新建的素材文件夹内放入一些图片方块(正方形)用来表示每个不同分数的方块。如下图所示:
今天我们来动手实现一款2048小游戏。这款游戏的精髓就玩家能够在于通过滑动屏幕合并相同数字,直到不能再合并为止。玩法可以说是非常的简单,但挑战性也是十足的。话不多说,让我们从0开始实现!(最新优化版请移步至Python实现2048小游戏(优化版))
目标效果:
大致要实现的效果如下:
设计开始:
首先简单分析一下游戏的逻辑:
- 输入移动方向,游戏内所有方块都朝指定方向移动
- 同方向移动的方块,数字相同则合并,然后生成一个合并的方块
- 合并后生成新的方块,无法生成新方块时游戏结束
- 用一系列的颜色来区分不同分数的方块(可有可无,纯粹是为了美观)
ok,游戏内再逻辑已经很清晰了。现在开始实现:
步骤一:新建一个文件夹用来放需要的游戏素材
步骤二:新建一个python程序,可以命名为2048,放在素材目录的同级文件夹下
步骤三:导入需要的依赖库:
import pygame as py
import sys, random, time, redis, os,math
import numpy as np
依赖库中的redis是一个额外的数据库,用来存取游戏历史数据,需要的可以考虑安装,不需要的用excel表代替也可以。
首先需要思考的是,游戏内的方块的移动本质上是坐标的变换,并且方块的坐标是固定的,也就是说,每次输入一个方向就按照一个移动函数将所有方块的坐标进行对应的转换。那么,如此以来,就需要建立一个坐标系用以标记方块的坐标。
因为是4x4的游戏,那么就按照(1,1),(1,2),(1,3),...,(4,4)建立游戏坐标,然而相比直接移动坐标还是比较麻烦,一个简单的想法是,每个方块给一个唯一的标记,如我们需要实现4x4的游戏,就需要16个记号。而每一个标记就对应了唯一且固定的坐标。给出如下代码: