Python 消灭星星游戏代码实现
当然可以帮你写一个类似于《消灭星星》的游戏代码。下面是一个基本的代码框架,你可以在此基础上进行扩展和修改。
import random
class StarGame:
def __init__(self, rows, cols):
self.rows = rows
self.cols = cols
self.grid = [[random.randint(1, 5) for _ in range(cols)] for _ in range(rows)]
self.score = 0
def print_grid(self):
for row in self.grid:
print(' '.join(str(cell) for cell in row))
def remove_star(self, row, col):
target_star = self.grid[row][col]
self._remove_connected_stars(row, col, target_star)
self._shift_down()
def _remove_connected_stars(self, row, col, target_star):
if row < 0 or row >= self.rows or col < 0 or col >= self.cols:
return
if self.grid[row][col] == target_star:
self.grid[row][col] = 0
self.score += 1
self._remove_connected_stars(row-1, col, target_star)
self._remove_connected_stars(row+1, col, target_star)
self._remove_connected_stars(row, col-1, target_star)
self._remove_connected_stars(row, col+1, target_star)
def _shift_down(self):
for col in range(self.cols):
empty_cells = [row for row in range(self.rows) if self.grid[row][col] == 0]
non_empty_cells = [row for row in range(self.rows) if self.grid[row][col] != 0]
for i in range(len(empty_cells)):
self.grid[empty_cells[i]][col] = self.grid[non_empty_cells[i]][col]
self.grid[non_empty_cells[i]][col] = 0
def play(self):
while True:
print("Current Score:", self.score)
self.print_grid()
row = int(input("Enter row (0 - {}): ".format(self.rows-1)))
col = int(input("Enter column (0 - {}): ".format(self.cols-1)))
if row < 0 or row >= self.rows or col < 0 or col >= self.cols:
print("Invalid position. Try again.")
continue
if self.grid[row][col] == 0:
print("No star at this position. Try again.")
continue
self.remove_star(row, col)
if self._is_game_over():
print("Game Over! Final Score:", self.score)
break
def _is_game_over(self):
for row in range(self.rows):
for col in range(self.cols):
if self.grid[row][col] != 0:
if self._has_connected_stars(row, col, self.grid[row][col]):
return False
return True
def _has_connected_stars(self, row, col, target_star):
if row < 0 or row >= self.rows or col < 0 or col >= self.cols:
return False
if self.grid[row][col] == target_star:
return True
return self._has_connected_stars(row-1, col, target_star) or \
self._has_connected_stars(row+1, col, target_star) or \
self._has_connected_stars(row, col-1, target_star) or \
self._has_connected_stars(row, col+1, target_star)
# 游戏入口
if __name__ == '__main__':
rows = int(input("Enter number of rows: "))
cols = int(input("Enter number of columns: "))
game = StarGame(rows, cols)
game.play()
这段代码创建了一个名为StarGame的游戏类,包含了游戏逻辑和交互功能。在游戏中,你可以根据提示输入行列坐标,选择要消除的星星,然后星星会消除,并根据消除的星星数量增加得分。游戏会判断是否还有可以连接的星星,如果没有则游戏结束,显示最终得分。
你可以根据需要自行扩展和修改这段代码,添加更多的游戏功能和特性。希望对你有帮助!
原文地址: https://www.cveoy.top/t/topic/oMN 著作权归作者所有。请勿转载和采集!