python写2048游戏代码,python实现2048小游戏代码和解释

  python写2048游戏代码,python实现2048小游戏代码和解释

  大蟒实现2048迷你游戏

  来源:中文来源网络阅读:次2018年9月2日

  【下载文档:python实现2048小游戏. txt】

  (友情提示:右键单击文本文件(文本文件)文档名称-将目标另存为) ) ) ) ) ) ) )。

  大蟒实现2048小游戏2048的大蟒实现。修改了一个网友的代码,解决了原来网友版本的两个小错误。 1 .原创游戏不是递归消除,而是一次只消除一次。如果要向左移动,如[2、2、2、2],则必须是[4、4、0、0]而不是[8、0、0、0]

  2 .检测到游戏结束时存在错误,已被修复。

  2048游戏。巴拉圭

  #-* -编码:utf-8-* -

  创建于114336015336039205

  @作者:开尔文

  导入随机

  职业游戏2048:

  总得分=0

  v=[ 2,8,8,2 ],

  [ 4,2,4,8 ],

  [ 2,4,2,0 ],

  [ 4,2,4,0 ]

  v=[ 0,0,0,0 ],

  [ 0,0,0,0 ],

  [ 0,0,0,0 ],

  [ 0,0,0,0 ]

  def __init__(self):

  forIinrange(4):

  self.v [ I ]=[ random.choice ] [ 0,0,0,2,2,4 ] forxinrange (4) ]

  仰角指示器显示(自) :

  print((0:4),13:4),23:4),3:4),format ) self.v.v[0][0],self.v[0][1],self.v .

  print((0:4)、13:4)、23:4)、3:4)、format ) self.v[1][0]、self.v[1]、self.v[1]、等

  print((0:4),13:4),23:4),3:4),format ) self.v.v[2][0],self.v[2][1],self.v .

  print((0:4),13:4),2:4),3:4),format ) self.v.v[3][0],self.v[3][1],self.v .

  打印(得分为:(0:4 ).格式(self .总分))。

  打印()游戏为:(0:4 ).格式(self.is over)))

  #排序

  定义对齐(自、列表、方向) :

  forIinrange(vlist.count )0):

  vist.remove(0))。

  zeros=[0 for Xin range(4-len)vlist)]

  如果方向==左:

  是vist.extend(零)

  否则:

  vList[:0]=零

  #将相同的元素相加,返回新的积分

  efaddsame(自、列表、方向) :

  增量=0

  如果方向==左:

  fori in [ 0,1,2 ]:

  if vlist [ I ]==vlist [ i1 ]和vlist [ i1 ]!=0:

  vList[i] *=2

  vList[i 1]=0

  increment=vList[i]

  否则:

  [ 3,2,1 ]中的fori:

  if vlist [ I ]==vlist [ I-1 ]和vlist [ I-1 ]!=0:

  vList[i] *=2

  vList[i-1]=0

  increment=vList[i]

  返回增量

  #处理行和方向,返回添加点

  efHandle(self,vList,direction):

  自对准(vlist,方向))。

  increment=self.addsame(vlist,direction))。

  自对准(vlist,方向))。

  self.totalScore=increment #直接加到总额中

  返回增量

  #判断游戏是否结束

  defjudge(自我) :

  if self.isOver():

  打印(输了,游戏结束!)

  返回假

  否则:

  如果self.totalScore=2048:

  打印(你赢了,游戏结束!但是我可以继续玩。

  返回真

  #判断游戏是否真的结束了

  差速操作器(自己) :

  n=self.calccharnumber(0))。

  如果n!=0:

  返回假

  否则:

  对于rowinrange(4):

  旗帜=自我。islistover(self。v[row]).

  如果flag==False:

  返回假

  对于colinrange(4):

  #将矩阵列复制到列表中进行处理

  vist=[self。范围(4)中行的v[row][col]

  flag=self.isListOver(vList)

  如果flag==False:

  返回假

  返回真

  #判断一个列表是否可以合并

  defislistover(self,vList):

  fori in [ 0,1,2 ]:

  if vlist [ I ]==vlist [ i1 ]和vlist [ i1 ]!=0:

  返回假

  返回真

  efcalccharnumber(self,char):

  n=0

  对于self.v中的问:

  n=数量计数(字符)

  返回n

  定义添加元素(自) :

  #统计空白区域数n

  n=self.calccharnumber(0))。

  如果n!=0:

  #2和四出现的概率为3/1,产生随机数2和四

  num=随机选择

  #生成随机数k,并将上一步中生成的2或四填充到第k个空白区域

  k=random.randrange(1,N ^ 1)# k的范围为[1,N]

  n=0

  forIinrange(4):

  forjinrange(4):

  if self.v[i][j]==0:

  n=1

  如果n==k:

  self.v[i][j]=num

  返回

  仰角指示器移动左(自) :

  self.movehorizontal(left))。

  仰角指示器移动(自) :

  self.movehorizontal(right))。

  Efmovehorizontal(自,方向) :

  对于rowinrange(4):

  自。手柄(自100 . v[行],方向).

  德夫移动向上(自己) :

  slf.movevertical(left )。

  efmovedown(self):

  slf.movevertical(right )。

  Defmovevertical(从,方向):

  对于colinrange(4):

  #将矩阵列复制到列表中进行处理

  vist=[self . v[row][col]for rowin range(4)

  自从。handle (vlist,direction))。

  #从已处理的列表编号中覆盖原始矩阵的值。

  对于rowinrange(4):

  self.v[row][col]=vList[row]

  #主要处理功能

  Ef操作(来自):

  Op=输入(运算符:)

  如果在[a , A]: #向左移动

  self.moveLeft(

  self.addElement()).

  Eliopin [d , D]: #向右移动

  self.moveRight(

  self.addElement()).

  移动到[w , W]: #中的elif op

  self.moveUp()

  self.addElement()).

  在[s , S]: #中下移elif op

  self.moveDown(

  self.addElement()).

  否则:

  打印(输入错误。请输入[W,S,A,D]或其小写字母)

  #开始

  打印(输入:w(上)s(下)a(左)d(右),按。)

  g=game2048()

  标志=真

  虽然正确:

  G.display())。

  flag=g.judge()

  G.操作())

  Flag=g.judge))以上是演示图的全部内容。我希望你喜欢它。

  专业人士请尽量通过微信扫描分享此页面!*^_^*

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: