全局变量在类方法中的异常

一个简单的2048游戏,基于Windows控制台
定义了一个全局变量g_fieldA,在方法moveAndMergeNum中获取self.g_field的值
只在方法开头赋值g_fieldA = self.g_field,其他地方并没有赋值操作,但是运行代码后发现,
g_fieldA 值会自动跟着self.g_field的值改变.

import random

g_fieldA = []


class game2048():

    g_field = [[random.randint(0, 5) for i in range(4)] for i in range(4)]        # 用列表推导式初始化生成一个4*4的列表,列表元素全为 0

    def moveAndMergeNum(self, direction):
        global g_fieldA
        g_fieldA = self.g_field
        print(g_fieldA)
        print(self.g_field)
        # self.g_field = [[0 for i in range(4)] for i in range(4)]

        if direction == "a":
            for x in range(4):
                for i in range(3):
                    for y in range(3 - i):
                        if self.g_field[x][y] == 0:
                            self.g_field[x][y] = self.g_field[x][y + 1]
                            self.g_field[x][y + 1] = 0
                        elif self.g_field[x][y] > 0 and self.g_field[x][y] == self.g_field[x][y + 1]:
                            self.g_field[x][y] = self.g_field[x][y] * 2
                            self.g_field[x][y + 1] = 0

        print(g_fieldA)
        print(self.g_field)




aa = game2048()
aa.moveAndMergeNum("a")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值