Python 2048小游戏
2017-10-17 12:39
435 查看
import sys import random def init(): global data data = [[0 for i in range(4)] for j in range(4)] def myprint(): for line in data: print (line) #是否存在还为0的位置 def whether_con(): for i in range(4): prex = prey = 0 for j in range(4): if data[i][j] == prex or data[i][j] == prey: return True else: return False def testcase1(): data[0][0] = 2 data[2][0] = 2 data[3][0] = 4 data[3][1] = 2 data[3][2] = 8 def rand_num(): #在0的地方随机产生一个数 values = [2,4] zero_pos = [[k,_k] for k,v in enumerate(data) for _k, _v in enumerate(v) if _v == 0] #存放值为0的所有位置的坐标[[0,1],[1,2],[2,1]] pos = random.choice(zero_pos) value = random.choice(values) data[pos[0]][pos[1]] = value def main(): score = 0 init() # rand_num() # rand_num() while True: print ('score:', score) myprint() instruction = input('-->') if instruction == 'w': for i in range(4): line_data = [] for j in range(4): tmp = data[j][i] if tmp!=0: if not line_data: line_data.append([tmp]) elif line_data[-1][0] == tmp and len(line_data[-1])==1: line_data[-1].append(tmp) score += 2*tmp else: line_data.append([tmp]) line_data = [sum(k) for k in line_data] for j in range(4): data[j][i] = 0 for k,v in enumerate(line_data): data[k][i] = v if instruction == 's': for i in range(4): line_data = [] for j in range(3,-1,-1): tmp = data[j][i] if tmp!=0: if not line_data: line_data.append([tmp]) elif line_data[-1][0] == tmp and len(line_data[-1])==1: line_data[-1].append(tmp) score += 2*tmp else: line_data.append([tmp]) line_data = [sum(k) for k in line_data] for j in range(4): data[j][i] = 0 for k,v in enumerate(line_data): k = abs(k -3) data[k][i] = v if instruction == 'a': for i in range(4): line_data = [] for j in range(4): tmp = data[i][j] if tmp!=0: if not line_data: line_data.append([tmp]) elif line_data[-1][0] == tmp and len(line_data[-1])==1: line_data[-1].append(tmp) score += 2*tmp else: line_data.append([tmp]) line_data = [sum(k) for k in line_data] for j in range(4): data[i][j] = 0 for k,v in enumerate(line_data): data[i][k] = v if instruction == 'd': for i in range(4): line_data = [] for j in range(3,-1,-1): tmp = data[i][j] if tmp!=0: if not line_data: line_data.append([tmp]) elif line_data[-1][0] == tmp and len(line_data[-1])==1: line_data[-1].append(tmp) score += 2*tmp else: line_data.append([tmp]) line_data = [sum(k) for k in line_data] for j in range(4): data[i][j] = 0 for k,v in enumerate(line_data): k = abs(k-3) data[i][k] = v rand_num() main()
相关文章推荐
- 用Python实现一个小游戏——2048
- Python练手项目(2)——200行实现2048小游戏
- Python新手实现2048小游戏
- Python 2048 小游戏 ,但是人生不能儿戏,与君共勉
- Python实现小游戏--2048
- [Python3] 2048小游戏
- 用python从0开始写2048小游戏
- python版2048小游戏
- 用 python 写一个用命令行玩的 2048 小游戏
- python开发的2048的小游戏
- 用Python写一个无界面的2048小游戏
- Python小游戏 -- 猜数字
- 【小游戏】C++打造2048控制台版本
- Python3-小甲鱼教程 【课后作业及答案】004改进我们的小游戏
- 小游戏2048的实现逻辑和实现过程
- Python 猜拳小游戏
- Python猜数字小游戏
- 跟老齐学Python之做一个小游戏
- 2048小游戏
- Python 项目实践一(外星人入侵小游戏)第二篇