手把手教你,三分钟学会制作「消消乐」游戏

10 篇文章 0 订阅
10 篇文章 0 订阅

消消乐,大概是陪伴我们长大的游戏,从以前的消方块,到现在的开心消消乐、宾果消消乐!

今天,我们要教给大家编程制作消除游戏!消除游戏孩子们都喜欢玩,今天,咱们就与孩子们一起用最新的Scratch 3.0,亲手制作自己喜欢的游戏吧!

ps:今天我们是使用的是英文版给大家做演示,如果孩子还小的话,可以使用西瓜的平台,点击左上角的地球标志将界面调整为中文版哦!

首先挑选一个角色 

我们进入软件,点击右下角的【选择一个角色】,在弹出的列表中挑选自己喜欢的角色,西瓜就选这个气球啦!。

 2.设置点击时播放的声音

从【事件】类别中找到这个黄色的【当角色被点击】模块,从【声音】类别中找到【播放声音pop】模块,把它们拖拽到代码编辑区,连接在一起。当我们在游戏中点击气球,它就会发出pop的声音了。

3.设置一个得分变量

如果我们将点击中角色的次数来计算我们成功消除的次数,并希望记录下这个数据,该怎么做呢?这个时候我们就会用到编程里一个非常重要【变量】。我们可以把点击的次数存放在变量里面。

如何建立呢?我们可以从左侧的【变量】类别中选择【建立一个变量】,并把它命名为score(分数)。大家会发现在舞台窗口的左上角就出现了“score 0”这个得分计数器啦。

 4.被点击时增加分数

我们已经添加了计分器,如何才能实现计分呢?我们从【变量】类别中把【将“xxx xxxx”增加1】中的xxxxxxxx改为我们之前建立好的score变量,然后把【将“score”增加1】模块拖拽到第2小节已经完成的程序下方。每点击一下气球,你就会发现计数器会增加1啦。

5.移动到随机位置 

在消除游戏中,被消除的对象出现的位置,并没有什么规律性,所以,咱们如何让气球,每次都出现在随机的位置呢?

我们将【事件】类别中的【当绿旗被点击】和【控制】类别中的【重复执行】拖拽到代码编辑区,然后从【运动】类别中找到【移到随机位置】放到重复执行模块内部,最后再添加【等待1秒】模块。

现在,我们点击绿旗,气球每隔一秒钟就会出现在随机的位置了。

6.改变颜色

不过,咱们的气球都是一个样,消除游戏中的被消除对象,可是有着各种造型的。咱们就先给气球换个颜色吧!怎么做呢?

西瓜告诉大家,只需要从【外观】类别中把【将颜色特效增加25】模块添加到刚才的程序中移到随机位置上方就好啦!

7.把得分清零

每当游戏重新开始的时候,我们肯定希望得分是从0开始的。那么如何将变量score设置成0呢?我们只需要把【变量】类别中【将“xxxxx”设为0】的xxxxxxxx改为我们之前建立好的score变量,然后把【将“score”设为0】模块拖拽到【当绿旗被点击】下方就好啦。

跟着我们一步一步地操作就可以完成游戏了,完成这个游戏的小朋友们是不是充满了成就感呢?!快去分享给你们的朋友一起玩吧!看看他们会不会给到更多改进的灵感呢?

虽然非常简陋,不过喜欢玩消除游戏的小学员都说,等到有时间自己可以研究研究做个加强版的消除游戏,我们很期待哦!

 

好的,下面是一个使用Pygame制作消消乐游戏的示例代码。这个示例代码包括了游戏的基本逻辑和界面设计,你可以在此基础上进行修改和扩展。 ```python import pygame import random # 初始化Pygame pygame.init() # 设置窗口大小和标题 WINDOW_SIZE = (400, 500) window = pygame.display.set_mode(WINDOW_SIZE) pygame.display.set_caption("消消乐游戏") # 定义游戏区域的大小和位置 BOARD_SIZE = (300, 300) BOARD_LEFT = (WINDOW_SIZE[0] - BOARD_SIZE[0]) // 2 BOARD_TOP = 100 # 定义方块的大小和间隔 BLOCK_SIZE = 40 BLOCK_GAP = 5 # 定义方块的颜色 COLORS = [ (255, 0, 0), (0, 255, 0), (0, 0, 255), (255, 255, 0), (255, 0, 255), (0, 255, 255), ] # 定义游戏区域的矩形 board_rect = pygame.Rect(BOARD_LEFT, BOARD_TOP, BOARD_SIZE[0], BOARD_SIZE[1]) # 定义一个二维数组来存储方块的颜色 board = [[random.choice(COLORS) for j in range(BOARD_SIZE[0] // (BLOCK_SIZE + BLOCK_GAP))] for i in range(BOARD_SIZE[1] // (BLOCK_SIZE + BLOCK_GAP))] # 定义一个函数来绘制方块 def draw_block(x, y, color): block_rect = pygame.Rect(BOARD_LEFT + x * (BLOCK_SIZE + BLOCK_GAP), BOARD_TOP + y * (BLOCK_SIZE + BLOCK_GAP), BLOCK_SIZE, BLOCK_SIZE) pygame.draw.rect(window, color, block_rect) # 定义一个函数来检查是否有可以消除的方块 def check_matches(): matches = [] for i in range(len(board)): for j in range(len(board[i])): color = board[i][j] if color != None: if i < len(board) - 2 and board[i+1][j] == color and board[i+2][j] == color: matches.append((j, i, 0)) if j < len(board[i]) - 2 and board[i][j+1] == color and board[i][j+2] == color: matches.append((j, i, 1)) return matches # 定义一个函数来消除方块 def remove_blocks(matches): for match in matches: x, y, direction = match if direction == 0: board[y][x] = None board[y+1][x] = None board[y+2][x] = None elif direction == 1: board[y][x] = None board[y][x+1] = None board[y][x+2] = None # 游戏循环 running = True while running: # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.MOUSEBUTTONDOWN: # 获取鼠标点击的位置 x, y = event.pos # 如果鼠标点击在游戏区域内 if board_rect.collidepoint(x, y): # 计算方块的索引 block_x = (x - BOARD_LEFT) // (BLOCK_SIZE + BLOCK_GAP) block_y = (y - BOARD_TOP) // (BLOCK_SIZE + BLOCK_GAP) # 如果方块存在 if board[block_y][block_x] != None: # 将方块标记为None board[block_y][block_x] = None # 检查是否有可以消除的方块 matches = check_matches() while len(matches) > 0: # 消除方块 remove_blocks(matches) # 将上方的方块掉落下来 for i in range(len(board)-1, 0, -1): for j in range(len(board[i])): if board[i][j] == None: board[i][j], board[i-1][j] = board[i-1][j], None # 在上方生成新的方块 for j in range(len(board[0])): if board[0][j] == None: board[0][j] = random.choice(COLORS) # 再次检查是否有可以消除的方块 matches = check_matches() # 绘制背景 window.fill((255, 255, 255)) # 绘制游戏区域的背景 pygame.draw.rect(window, (200, 200, 200), board_rect) # 绘制方块 for i in range(len(board)): for j in range(len(board[i])): if board[i][j] != None: draw_block(j, i, board[i][j]) # 更新屏幕 pygame.display.flip() # 退出Pygame pygame.quit() ``` 在这个示例代码中,我们使用Pygame创建了一个名为"消消乐游戏"的窗口,并在窗口中绘制了一个游戏区域和方块。玩家可以通过点击方块来消除它们,如果有三个或以上颜色相同的方块相连,则它们将被消除。在消除方块后,上方的方块将掉落下来,同时在上方生成新的方块。我们还使用了随机函数来生成方块的颜色。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值