Pygame游戏实战八:消除方块
2023-12-16 17:59:48
介绍模块
本游戏使用的是由Pycharm中的pygame模块来实现的,也可以在python中运行。通过Pygame制作一个类似与消消乐的游戏,通过交换方块颜色,来进行消除。
最小开发框架
详情请看此文章:
Pygame游戏模块介绍二:最小开发框架代码_pygame最小开发框架_牧子川的博客-CSDN博客
Pygame和sys模块
import?pygame?#?制作游戏时要使用的模块
import sys # python的标准库,对内部各功能模块进行初始化创建,系统模块
random模块
需要在屏幕上随机生成位置
from random import randint
详情请看此文章:Pygame游戏模块介绍一:random模块简介_random 范围_牧子川的博客-CSDN博客
相关功能??
【童年游戏】消除方块
初始化方块
创建游戏中需要进行消除的方块
# 初始化相邻方块的颜色
for row in range(ROWS):
for col in range(COLS):
possible_colors = [RED, GREEN, BLUE]
if col > 0:
possible_colors.remove(board[row][col - 1])
if row > 0:
try:
possible_colors.remove(board[row - 1][col])
except:
pass
# 在这里使用 random.choice 而不是 random.sample
board[row][col] = random.choice(possible_colors)
查找相邻颜色的方块
当进行交换方块时,进行判断是否有颜色相同的方块
def check_neighbors(row, col, color, visited, direction=None):
if row < 0 or row >= ROWS or col < 0 or col >= COLS or visited[row][col] or board[row][col] != color:
return
visited[row][col] = True
to_clear.append((row, col))
if direction != 'up':
check_neighbors(row + 1, col, color, visited, direction='down')
if direction != 'down':
check_neighbors(row - 1, col, color, visited, direction='up')
if direction != 'left':
check_neighbors(row, col + 1, color, visited, direction='right')
if direction != 'right':
check_neighbors(row, col - 1, color, visited, direction='left')
方块消除
判断行或列中相同颜色的方块是否超过3个,如果是则进行消除
if len(to_clear) >= 3:
# 清除相同颜色的方块
for row, col in to_clear:
board[row][col] = WHITE
# 补全方块
for col in range(COLS):
non_white_blocks = [board[row][col] for row in range(ROWS) if board[row][col] != WHITE]
non_white_blocks += [WHITE] * (ROWS - len(non_white_blocks))
for row in range(ROWS):
board[row][col] = non_white_blocks[row]
else:
# 如果没有超过3个一样的颜色,则还原交换前的位置
board[selected_block[0]][selected_block[1]], board[clicked_row][clicked_col] = \
board[clicked_row][clicked_col], board[selected_block[0]][selected_block[1]]
# 交换后清空选择
selected_block = None
图片界面
?
?
扩展可添加功能
1.对游戏中消除的方式进行改进
2.增加更加复杂的关卡
3.增加时间限制
4.增加音效
5.增加能够连续出现的方块
源码获取
PyGame/消除方块 at main · mzc421/PyGame (github.com)
?欢迎关注我的公众号:@AI算法与电子竞赛 ? ?
????
硬性的标准其实限制不了无限可能的我们,所以啊!少年们加油吧!
文章来源:https://blog.csdn.net/qq_48764574/article/details/134864474
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!