Python 实现羊了个羊游戏:消消乐代码解析
Python 实现羊了个羊游戏:消消乐代码解析
本文将带你用 Python 代码实现一个类似羊了个羊的消消乐游戏。我们将使用递归算法来消除相邻相同颜色的羊,并通过列表记录空行进行移动。代码简洁易懂,适合学习 Python 游戏编程入门。
import random
# 定义游戏面板大小
ROWS = 6
COLS = 6
# 定义不同颜色的羊
COLORS = ['red', 'green', 'blue', 'yellow', 'purple', 'orange']
# 初始化游戏面板
board = [[random.choice(COLORS) for j in range(COLS)] for i in range(ROWS)]
# 打印游戏面板
def print_board():
for row in board:
print(row)
# 检查某个位置是否为空
def is_empty(row, col):
return board[row][col] == '-'
# 消除相邻的相同颜色的羊
def eliminate(row, col, color):
if row < 0 or row >= ROWS or col < 0 or col >= COLS:
return
if board[row][col] != color:
return
board[row][col] = '-'
eliminate(row-1, col, color)
eliminate(row+1, col, color)
eliminate(row, col-1, color)
eliminate(row, col+1, color)
# 移动羊
def move():
for col in range(COLS):
empty_rows = []
for row in range(ROWS-1, -1, -1):
if board[row][col] == '-':
empty_rows.append(row)
elif empty_rows:
new_row = empty_rows.pop(0)
board[new_row][col] = board[row][col]
board[row][col] = '-'
empty_rows.append(row)
# 游戏主循环
while True:
print_board()
print('Enter row and column to eliminate (0-5), or q to quit:')
user_input = input()
if user_input == 'q':
break
try:
row, col = map(int, user_input.split())
if is_empty(row, col):
print('Invalid move.')
else:
eliminate(row, col, board[row][col])
move()
except:
print('Invalid input.')
这个程序使用递归来消除相邻的相同颜色的羊,并使用一个列表来记录每列中空的行。在玩家输入行和列以消除羊时,程序将检查输入是否有效,并在移动羊之前消除相邻的相同颜色的羊。游戏将在玩家输入'q'时退出。
代码解释:
- 游戏面板初始化:
board变量代表游戏面板,每个元素代表一个羊的顏色。 - 消除羊:
eliminate函数使用递归,将相邻相同颜色的羊设置为-,表示消除。 - 移动羊:
move函数遍历每一列,将空行往上移动。 - 游戏循环: 主循环接受玩家输入,判断输入是否有效,进行消除和移动操作。
扩展:
- 可以添加计分系统和胜利判定逻辑。
- 可以根据需要调整游戏面板大小和羊的颜色数量。
- 可以加入图形界面,让游戏更直观。
希望本文能帮助你理解 Python 实现消消乐游戏的基本原理。如果你对游戏编程感兴趣,可以尝试根据自己的想法扩展和改进这个程序。
原文地址: https://www.cveoy.top/t/topic/nGir 著作权归作者所有。请勿转载和采集!