这个2048游戏是我自学python以后写的, 用了几天时间。
其中的某些方法可能写的很笨, 也可能还存在各种BUG, 欢迎各位评论指出。
下面贴出完整代码供大家学习交流。
import random
#游戏分数
gameScore = 0
#游戏矩阵
matrix = []
#初始化游戏矩阵
def init_matrix():
global matrix
matrix = [[0 for i in range(4)] for i in range(4)]
#判断打印数字或空格
def init_gameNum(num):
return num if num != 0 else ' '
#打印游戏界面
def print_game():
print("当前分数:", gameScore)
print("""
┌─────┬─────┬─────┬─────┐
│%4s │%4s │%4s │%4s │
├─────┬─────┬─────┬─────┤
│%4s │%4s │%4s │%4s │
├─────┬─────┬─────┬─────┤
│%4s │%4s │%4s │%4s │
├─────┬─────┬─────┬─────┤
│%4s │%4s │%4s │%4s │
└─────┴─────┴─────┴─────┘""" %(init_gameNum(matrix[0][0]), init_gameNum(matrix[0][1]), init_gameNum(matrix[0][2]), init_gameNum(matrix[0][3]), \
init_gameNum(matrix[1][0]), init_gameNum(matrix[1][1]), init_gameNum(matrix[1][2]), init_gameNum(matrix[1][3]), \
init_gameNum(matrix[2][0]), init_gameNum(matrix[2][1]), init_gameNum(matrix[2][2]), init_gameNum(matrix[2][3]), \
init_gameNum(matrix[3][0]), init_gameNum(matrix[3][1]), init_gameNum(matrix[3][2]), init_gameNum(matrix[3][3])) )
#随机产生2 or 4, time代表产生数字的个数
def getNum2oR4(time = 1):
global matrix
numSum = 0
while True:
num = 2 if random.randrange(0, 20) >= 1 else 4 #2:4 的产生概率为 20:1
index = divmod(random.randrange(0, 16), 4)#divmod()函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。
if matrix[index[0]][index[1]] == 0:
matrix[index[0]][index[1]] = num
numSum += 1
if numSum == time:
break
#检查游戏是否GG
def check_GG():
for i in range(0, 4):
for j in r