关于用pygame来编写类满天星游戏的全记录二

继续来研究怎么实现消除后的下移,大体思想都已经说了,开始编写函数。

先找到第一轮需要下移的元素。

def find_fall_stars(board):
    all_stars = []
    single_star = {}
    find_fall_star = False
    for column in range(columns):
        # 从底部往上找,每一个减少的row值都相当于往上走一行
        for row in range(rows-2, -1, -1):
            # 此位置星星可以下降,记录,使用字典记录类型,处于二维列表中的位置,然后放入all_stars中
            if board[row][column] != 'empty' and board[row+1][column] == 'empty':
                print(row, column)
                single_star['type'] = board[row][column]
                single_star['x'] = row
                single_star['y'] = column
                all_stars.append(single_star)
                single_star = {}
                find_fall_star = True
    # 返回当前找到的星星,同时返回标志位,为下次寻找作准备
    return find_fall_star, all_stars

先做一个单独往下移动一个固定位置的函数。

def one_column_falling_stars(board, star, speed):
    move_x = 0
    speed *= 0.01
    move_y = int(speed * tile_size)
    basex = star['x']
    basey = star['y']
    left_location = x_margin / 2 + (basey * tile_size) + 3
    top_location = y_margin / 2 + (basex * tile_size) + 3
    r = pygame.Rect((left_location + move_x, top_location + move_y, tile_size, tile
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值