当前位置: 首页>>代码示例>>Python>>正文


Python Field.swaps方法代码示例

本文整理汇总了Python中field.Field.swaps方法的典型用法代码示例。如果您正苦于以下问题:Python Field.swaps方法的具体用法?Python Field.swaps怎么用?Python Field.swaps使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在field.Field的用法示例。


在下文中一共展示了Field.swaps方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: __init__

# 需要导入模块: from field import Field [as 别名]
# 或者: from field.Field import swaps [as 别名]
class DiamondShift:
  def __init__(self):
    pygame.init()
    pygame.mouse.set_visible(0)
    self.screen = pygame.display.set_mode((320, 240), 0, 32)
    self.gems = pygame.image.load("gems.png").convert_alpha()
    self.bg = pygame.image.load("bg.png").convert_alpha()
    self.gems = self.separate_gems(self.gems)
    self.gemsize = self.gems[0].get_width()
    self.grey = (75, 75, 75)
    self.cursor = pygame.Surface((self.gemsize, self.gemsize)).convert_alpha()
    self.cursor.fill(self.grey)
    self.font = pygame.font.Font(None, 24)
    self.score = 0
    self.field = Field(8, 8, len(self.gems) - 1)
    self.ctrl = Control(Point(7, 7))
    self.state = 'standby' # | swap | swap-back | fill | check | score
    self.swap = None 
    self.winners = None

  def run(self):
    while self.loop():
      self.read()
      self.step()
      # self.draw()

  def loop(self):
    return not self.ctrl.quit

  def read(self):
    update(self.ctrl)

  def step(self):
    delay = 16

    if self.state == 'standby':
      if self.ctrl.direction:
        self.swap = deepcopy((self.ctrl.pos, self.ctrl.direction))
        self.state = 'swap'
  
    elif self.state == 'swap':
      self.field.swaps(self.swap[0].x, self.swap[0].y, self.swap[1])
      self.winners = self.field.find_winners()
      if self.winners:
        self.state = 'score'
      else:
        self.state = 'swap-back'
      delay = 150
      
    elif self.state == 'swap-back':
      self.field.swaps(self.swap[0].x, self.swap[0].y, self.swap[1])
      self.state = 'standby'
      delay = 150
      
    elif self.state == 'fill':
      again = self.field.fall()
      again = self.field.pour() or again
      if not again:
        self.state = 'check'
      delay = 150
      
    elif self.state == 'check':
      self.winners = self.field.find_winners()
      if self.winners:
        self.state = 'score'
      else:
        self.state = 'standby'
      delay = 150
      
    elif self.state == 'score':
      def score(n):
        return (n - 1)**2
      self.score += score(len(self.winners))
      self.field.clear(self.winners)
      self.state = 'fill'
      delay = 150

    self.draw()
    pygame.time.delay(delay)

  def draw(self):
    xoffset = 11
    yoffset = 24
    size = self.gems[0].get_width()
    self.screen.blit(self.bg,(0,0))
    self.screen.blit(self.cursor, (xoffset + self.gemsize * self.ctrl.pos.x, yoffset + self.gemsize * self.ctrl.pos.y))
    for x in xrange(self.field.width):
      for y in xrange(self.field.height):
        self.screen.blit(self.gems[self.field.map.get((x, y), 0)],(xoffset + x * size, yoffset + y * size))
    self.screen.blit(self.font.render("%d" % self.score, 1, (255, 255, 255)), (15, 3))
    pygame.display.flip()

  def separate_gems(self, gems):
    ng = []
    size = self.gems.get_height()
    count = self.gems.get_width()/gems.get_height()
    for c in xrange(count):
      s = pygame.Surface((size,size),pygame.SRCALPHA, 32).convert_alpha()
      s.blit(self.gems, (0, 0), pygame.Rect(c * size, 0, (c + 1) * size, size))
      ng.append(s)
#.........这里部分代码省略.........
开发者ID:floh1695,项目名称:diamond-slider-game,代码行数:103,代码来源:diamond-shift.py


注:本文中的field.Field.swaps方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。