帮我做一个 消消乐的小游戏
时间: 2023-08-22 10:09:59 浏览: 32
好的,以下是一个简单的消消乐小游戏的代码,你可以在此基础上进行修改和完善。
```python
import random
# 游戏设置
ROWS = 8
COLS = 8
COLORS = ['R', 'G', 'B', 'Y', 'P', 'O']
MIN_COMBO = 3
# 初始化游戏面板
def init_board():
board = []
for i in range(ROWS):
row = [random.choice(COLORS) for j in range(COLS)]
board.append(row)
return board
# 打印游戏面板
def print_board(board):
for row in board:
print(' '.join(row))
# 判断是否能消除
def can_combo(board):
for i in range(ROWS):
for j in range(COLS):
color = board[i][j]
if color == ' ':
continue
if i + MIN_COMBO <= ROWS and all(board[k][j] == color for k in range(i, i+MIN_COMBO)):
return True
if j + MIN_COMBO <= COLS and all(board[i][k] == color for k in range(j, j+MIN_COMBO)):
return True
return False
# 消除相同颜色的方块
def do_combo(board):
combo_count = 0
for i in range(ROWS):
for j in range(COLS):
color = board[i][j]
if color == ' ':
continue
if i + MIN_COMBO <= ROWS and all(board[k][j] == color for k in range(i, i+MIN_COMBO)):
for k in range(i, i+MIN_COMBO):
board[k][j] = ' '
combo_count += 1
if j + MIN_COMBO <= COLS and all(board[i][k] == color for k in range(j, j+MIN_COMBO)):
for k in range(j, j+MIN_COMBO):
board[i][k] = ' '
combo_count += 1
return combo_count
# 移动方块
def move_blocks(board):
for j in range(COLS):
empty_count = 0
for i in range(ROWS-1, -1, -1):
if board[i][j] == ' ':
empty_count += 1
elif empty_count > 0:
board[i+empty_count][j] = board[i][j]
board[i][j] = ' '
# 主函数
def main():
board = init_board()
while True:
print_board(board)
if not can_combo(board):
print('Game over!')
break
combo_count = do_combo(board)
if combo_count == 0:
move_blocks(board)
if __name__ == '__main__':
main()
```
这个小游戏中,你需要通过交换相邻两个方块的位置,使得三个或以上相同颜色的方块在同一行或同一列上排列成一排,并消除它们。当所有可以消除的方块都被消除后,新的方块会从上方落下来,直到没有可以消除的方块为止。游戏结束的条件是没有可以消除的方块,并且没有空位可以填充新的方块。
阅读全文