最近闲来无事,做了一个2048类似的小游戏。其中的算法思想,如果有的话,都是本人花了一点点时间想出来的,完全没有参考任何教程,所以可能(其实是肯定)使用的方法比较傻一些,算是抛砖引玉了。
为了制作这个游戏,我先下载了一个2048小游戏来玩,以便学习规则。根据20分钟的游玩体验,我总结的规则大致如下:
- 4*4方格。
- 游戏开始时出现2个2。
- 然后每移动一次出现新的2,如果某个方向无法移动,则不会增加新的2。
- 只有相同的数字才能够相加。
- 新增的只会出现2
- 相加时,只会加一次,不会累加。不知道为啥。
- 游戏结束检查没有空位且任意数字周围都没有相同数字,如果都没有,则游戏结束。
- 敏感的察觉到不需要外部图片素材,只需要画框还有画数字即可。
- 动画过程应该最麻烦,pygame画动画我是没什么信心。
因为之前做了好多这种类似的棋盘类型的游戏,比如扫雷,五子连珠(有机会一并写出来),所以画2048的棋盘部分格外容易,难点在配色,好在我是不在乎颜色好看与否,所以直接开始弄。
首先依然是基础的pygame配置代码,涉及到各种初始化配置,颜色代码等等,边距一大堆,基本基本上棋盘游戏我都是通用的,修改一下就可以用了。
import pygame
import sys
import random
from pygame.locals import *
board_width = 4
board_height = 4
tile_size = 80
screen_width = 640
screen_height = 480
fps = 30
white = (255, 255, 255)
bright_blue = 'sky blue'
dark_turquoise = (250, 234, 211)
green = 'green'
bg_color = (107, 81, 82)
tile_color = bright_blue
text_color = (144, 59, 28)
border_color = bright_blue
basic_font_size = 30
message_color = white
x_margin = int((screen_width-(tile_