#-*- coding:utf-8 -*-
import curses
from random import randrange,choice
from collections import defaultdict
#所有的有效输入转换为“上下左右,重置,退出”这六种行为,用actions表示
actions=['Up','Left','Down','Right','Restart','Exit']
#有效输入的值的列表
# ord()获取字符的ASCII码
letter_codes=[ord(ch) for ch in 'WASDRQwasdrq']
#将输入与行为进行关联
# zip()将元组打包为列表
actions_dict=dict(zip(letter_codes,actions*2))
def get_user_action(keyboard):
char='N'
while char not in actions_dict:
char=keyboard.getch()
return actions_dict[char]
def transpose(field):
return [list(row) for row in zip(*field)]
def invert(field):
return [row[::-1] for row in field]
class GameField(object):
#初始化棋盘的参数
def __init__(self,height=4,width=4,win=2048):
self.height=height
self.width=width
self.win_value=win
self.score=0
self.highscore=0
self.reset()
#重置棋盘
def reset(self):
if self.score>self.highscore:
self.highscore=self.score
self.score=0
self.field=[[0 for i in range(self.width)] for j in range(self.height)]
self.spawn()
self.spawn()
#棋盘走一步
def move(self,direction):
# 一行向左合并
def move_row_left(row):
# 把零散的非零单元挤到一块
def tighten(row):
new_row = [i for i in row if i != 0]
new_row += [0 for i in range(len(row) - len(new_row))]
return new_row
“实验楼"中的2048小游戏复现
最新推荐文章于 2023-11-19 16:10:44 发布