python 消消乐
时间: 2023-11-20 08:57:18 浏览: 52
以下是一个简单的Python消消乐游戏的实现,其中包括生成游戏面板、找到可消除图案、消除图案、下落图案、计分和计时等功能。你可以根据需要进行修改和扩展。
```python
import random
import time
# 定义游戏面板大小
ROWS = 8
COLS = 8
# 定义可用的图案
PATTERNS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
# 定义每个图案的分数
SCORES = {'A': 10, 'B': 20, 'C': 30, 'D': 40, 'E': 50, 'F': 60, 'G': 70, 'H': 80}
# 定义每个图案的颜色
COLORS = {'A': 'red', 'B': 'green', 'C': 'blue', 'D': 'yellow', 'E': 'purple', 'F': 'orange', 'G': 'pink', 'H': 'brown'}
# 生成随机的游戏面板
def generate_board():
board = []
for i in range(ROWS):
row = []
for j in range(COLS):
pattern = random.choice(PATTERNS)
row.append(pattern)
board.append(row)
return board
# 打印游戏面板
def print_board(board):
for i in range(ROWS):
for j in range(COLS):
print(board[i][j], end=' ')
print()
# 判断是否有可消除的图案
def has_matches(board):
for i in range(ROWS):
for j in range(COLS):
if j < COLS - 2 and board[i][j] == board[i][j+1] == board[i][j+2]:
return True
if i < ROWS - 2 and board[i][j] == board[i+1][j] == board[i+2][j]:
return True
return False
# 找到所有可消除的图案
def find_matches(board):
matches = []
for i in range(ROWS):
for j in range(COLS):
if j < COLS - 2 and board[i][j] == board[i][j+1] == board[i][j+2]:
matches.append((i, j))
if i < ROWS - 2 and board[i][j] == board[i+1][j] == board[i+2][j]:
matches.append((i, j))
return matches
# 消除所有可消除的图案
def remove_matches(board, matches):
for i, j in matches:
board[i][j] = board[i][j+1] = board[i][j+2] = None
board[i+1][j] = board[i+2][j] = None
# 下落所有图案
def drop_board(board):
for j in range(COLS):
for i in range(ROWS-1, -1, -1):
if board[i][j] is None:
for k in range(i-1, -1, -1):
if board[k][j] is not None:
board[i][j], board[k][j] = board[k][j], None
break
# 计算得分
def calculate_score(matches):
score = 0
for i, j in matches:
score += SCORES[board[i][j]]
return score
# 主函数,循环进行游戏
def main():
board = generate_board()
score = 0
start_time = time.time()
while True:
print_board(board)
if not has_matches(board):
break
matches = find_matches(board)
score += calculate_score(matches)
remove_matches(board, matches)
drop_board(board)
end_time = time.time()
print('Game over!')
print('Your score is:', score)
print('Time used:', end_time - start_time, 'seconds')
if __name__ == '__main__':
main()
```