2048小游戏Python3.6.5实现

博主分享了自学Python后编写2048小游戏的过程,耗时数天完成。虽然代码中可能存在效率不高的方法和BUG,博主欢迎读者提出指正。附带完整游戏代码,供学习交流。

这个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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值