一个简单的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")