乐于分享
好东西不私藏

Scratch斗地主编程教程 + 附源码,复刻复刻经典斗地主玩法

Scratch斗地主编程教程 + 附源码,复刻复刻经典斗地主玩法

一、课程导入

哈喽,小朋友们!又见面啦!今天我们要一起探索一个超级好玩的Scratch游戏——斗地主!这个游戏不仅有趣,还能帮助我们练习逻辑思维,是不是很棒呀?

真正的课程导入语:同学们!你们想知道怎么用Scratch做一个经典的斗地主游戏吗?今天的Scratch课堂,我们就要解锁超好玩的”斗地主”游戏开发!想象一下:你可以和电脑一起玩斗地主,体验发牌、抢地主、出牌的乐趣,是不是听起来超级刺激?

通过这节课,我们会了解到如何制作游戏角色、如何实现发牌逻辑、如何设计出牌规则,更能锻炼我们的逻辑思维和创造力。比如,你知道怎么让电脑随机发牌吗?你知道怎么判断牌的大小吗?你知道怎么让电脑智能出牌吗?

接下来,就让我们一起化身小小游戏设计师,用积木搭建属于自己的斗地主游戏,看看谁的游戏设计最精彩!准备好开启这场编程冒险了吗?现在,Let’s code!

二、作品效果

(扫码体验或公众号回复“斗地主”获取素材、源码)

  1. 完整游戏流程:游戏包含了真实斗地主的所有环节,从发牌、抢地主,到轮流出牌、判断胜负,让你体验最正宗的斗地主乐趣!

  2. 多角色互动:游戏中有三个角色,你是角色1,角色2和角色3是电脑对手,大家会轮流进行游戏操作,就像和真人一起玩一样!

  3. 智能发牌系统:游戏会自动随机发牌,每个角色都能得到17张牌,剩下的3张牌留给最终成为地主的玩家,确保游戏公平公正。

  4. 刺激抢地主:游戏会随机选择一个角色开始抢地主,每个角色都有机会成为地主,体验当地主的快感!

  5. 多样化出牌:你可以出各种类型的牌,比如单牌、对子、顺子、炸弹等,展示你的牌技!

  6. 自动牌型判断:游戏会帮你判断出的牌是否符合规则,是否比上家出的牌大,让你不用担心出错牌!

  7. 聪明的电脑对手:角色2和角色3会根据自己的牌型智能出牌,和你进行真实的游戏对战,不会轻易让你赢哦!

  8. 欢乐豆积分:游戏中还有欢乐豆系统,记录你的游戏积分,看看你能赢得多少欢乐豆!

  9. 清晰的游戏结束:当有一个角色出完所有牌时,游戏结束,会显示谁赢了,让你清楚知道游戏结果。

  10. 再来一局功能:游戏结束后,你可以选择再来一局,重新开始游戏,继续挑战电脑对手!

三、用到的模块

  1. 运动模块

    • 移到x:x,y:y:就像给角色和牌指定一个家,让它们知道该待在哪里,比如牌要放在哪个位置,角色要站在哪里

    • 将X坐标增加:让角色和牌可以左右移动,调整它们的位置

    • 将Y坐标增加:让角色和牌可以上下移动,调整它们的位置

  2. 外观模块

    • 隐藏/显示:就像变魔术一样,让角色和牌在需要的时候出现,不需要的时候消失,比如游戏开始前先把牌藏起来,开始后再显示

    • 切换造型:让角色可以换衣服,比如说话时的表情会变化,让游戏更有趣

    • 说…几秒:让角色可以说话,告诉你游戏现在是什么状态,比如”抢地主”、”我是地主,我先出”

    • 想…几秒:让角色可以思考,就像真人玩游戏时会想一下该怎么出牌一样

  3. 事件模块

    • 当绿旗被点击:游戏的开始按钮,点击它游戏就开始了,所有角色都会准备好

    • 当接收到广播:角色之间的电话,比如一个角色说”游戏开始”,其他角色听到后就开始行动

    • 当角色被点击:当你用鼠标点击角色时,角色会做出反应,比如点击出牌按钮就会出牌

  4. 控制模块

    • 重复执行:让角色可以一直做某件事,比如游戏主循环,让游戏一直运行

    • 重复x次:让角色做固定次数的事情,比如发牌时要发17次牌给每个角色

    • 如果xxx那么/否则:让角色可以做选择题,比如判断牌型是否正确,是否比上家出的牌大

    • 等待x秒:让角色休息一下,比如思考的时候停顿一下,让游戏节奏更自然

  5. 侦测模块

    • 碰到对象:让角色可以感觉到碰到了什么,比如牌和牌之间的碰撞

    • 按下鼠标:让角色可以知道你是否点击了鼠标,比如点击牌、点击按钮时

  6. 变量模块

    • 新建变量:就像给游戏准备了一些小本子,用来记东西,比如欢乐豆的数量、当前是什么牌型

    • 将变量设置为:在小本子上写上新的内容,比如把欢乐豆重置为1000

    • 将变量增加:在小本子上加上一些内容,比如每出一次牌,计数器就加1

  7. 列表模块

    • 新建列表:就像给游戏准备了一些大本子,可以记很多很多东西,比如整个牌库的牌、每个角色手里的牌

    • 添加到列表:在大本子上添加新的内容,比如发牌时把牌添加到角色的牌列表里

    • 删除列表项目:在大本子上擦掉不需要的内容,比如出牌后把出的牌从角色的牌列表里删除

    • 替换列表项目:在大本子上修改内容,比如排序牌时交换牌的位置

  8. 运算模块

    • 加减乘除:让游戏可以做数学题,比如比较牌的大小、计算牌的位置

    • 随机数:让游戏可以抽奖,比如发牌时随机发牌,抢地主时随机决定是否抢

    • 大于/小于/等于:让游戏可以比较大小,比如判断牌是否比上家的大

    • 与/或/非:让游戏可以做逻辑题,比如同时满足多个条件时才执行操作

    • 取模:让游戏可以循环做事,比如轮流出牌时,1号出完2号出,2号出完3号出,3号出完又轮到1号

四、逻辑分析

五、具体操作

1. 舞台设置详解

舞台是整个游戏的背景,它负责初始化游戏状态、播放背景音乐、处理游戏开始等逻辑。

舞台代码分析

当绿旗被点击时,舞台会:

  1. 初始化欢乐豆为1000

  2. 广播”游戏开始”消息,通知其他角色开始游戏

  3. 播放游戏声音,营造游戏氛围

2. 角色详解

角色:封面3(核心控制)

【角色:封面3】代码截图

这个角色是游戏的核心控制器,负责发牌、抢地主、出牌等游戏流程的管理。

详细程序讲解

封面3角色有一个发牌函数:

  1. 清空牌库列表

  2. 初始化牌的下标

  3. 重复54次,向牌库中添加牌

  4. 清空三个角色的牌列表

  5. 清空地主的三张牌列表

  6. 初始化随机数变量

  7. 给角色1发17张牌

  8. 给角色2发17张牌

  9. 给角色3发17张牌

  10. 剩下的3张牌作为地主牌

  11. 广播”角色1自动排序,显示”消息,通知角色1排序并显示牌

当接收到”游戏开始”广播时,封面3角色会:

  1. 设置游戏环节为1(抢地主环节)

  2. 调用发牌函数

  3. 清空储存出的牌列表

当接收到”牌显示完毕,广播给主线程”广播时,封面3角色会:

  1. 初始化抢地主回合为1

  2. 初始化地主令为0(未确定地主)

  3. 随机选择一个角色开始抢地主

  4. 广播”抢地主开始”消息

当接收到”抢地主之后看看别人是否抢”广播时,封面3角色会:

  1. 增加抢地主回合数

  2. 切换到下一个角色

  3. 如果抢地主回合数小于5,继续广播”抢地主开始”消息

  4. 否则,等待1秒后广播”抢地主结束,开始出牌”消息

当接收到”抢地主结束,开始出牌”广播时,封面3角色会:

  1. 设置牌令为地主的前一个角色(确保地主先出牌)

  2. 如果没有确定地主,重新广播”游戏开始”消息

  3. 否则,等待1秒后广播”通知3为角色出牌”消息

当接收到”地主准备出牌,返给主线程做通知”广播时,封面3角色会:

  1. 设置游戏环节为2(出牌环节)

  2. 设置谁的牌最大为地主

  3. 等待1秒后广播”一切就绪,地主准备出牌”消息

当接收到”出牌结束,将消息返给主线程”广播时,封面3角色会:

  1. 检查是否有角色出完所有牌

  2. 如果有,广播”游戏结束”消息

  3. 否则,切换到下一个角色,等待1秒后广播”新一轮出牌开始”消息

为什么要这样编写?

  • 使用列表存储牌库和角色的牌,方便管理和操作

  • 随机发牌确保游戏的公平性

  • 抢地主环节设置4个回合,确保每个角色都有机会抢地主

  • 地主先出牌符合斗地主的规则

  • 循环检测角色牌数,及时判断游戏胜负

角色:角色1形象(玩家)

【角色:角色1形象】代码截图

这个角色是游戏中的玩家角色,负责玩家的抢地主、出牌等操作。

详细程序讲解

当接收到”给角色1发送抢地主”广播时,角色1形象会:

  1. 播放声音

  2. 说”抢地主”几秒

当接收到”角色1自动排序,显示”广播时,角色1形象会:

  1. 调用排序函数

  2. 广播”角色1扑克显示”消息

当接收到”给角色1发送不抢地主”广播时,角色1形象会:

  1. 播放声音

  2. 说”不抢”几秒

当接收到”游戏开始”广播时,角色1形象会:

  1. 切换到默认造型

当接收到”必须出牌”广播时,角色1形象会:

  1. 播放声音

  2. 想”必须出牌”几秒

当接收到”角色1扑克显示”广播时,角色1形象会:

  1. 设置牌的X位置

  2. 广播”给牌1″消息

当接收到”通知3为角色出牌”广播时,角色1形象会:

  1. 如果角色1是地主,切换造型,说”我是地主,我先出”,播放声音

  2. 添加地主的三张牌到角色1的牌列表

  3. 广播”角色1自动排序,显示”消息

  4. 广播”地主准备出牌,返给主线程做通知”消息

  5. 更新角色1牌剩余的张数

当接收到”给主角说要不起”广播时,角色1形象会:

  1. 播放声音

  2. 说”要不起”几秒

角色1形象有一个排序函数:

  1. 使用冒泡排序法对角色1的牌进行排序

  2. 确保牌按照从小到大的顺序排列,方便玩家查看和选择

当接收到”主角出牌结束,通知主线程”广播时,角色1形象会:

  1. 设置谁的牌最大为角色1

  2. 清空每回合最后出的牌列表

  3. 将储存出的牌添加到每回合最后出的牌列表

  4. 更新角色1牌剩余的张数

  5. 广播”将牌打出去”消息

  6. 等待1秒后广播”出牌结束,将消息返给主线程”消息

角色1形象有一个出牌排序函数:

  1. 对储存出的牌进行排序

  2. 确保出牌的顺序正确,方便牌型判断

当接收到”通知角色1判断牌是否可以打出”广播时,角色1形象会:

  1. 调用出牌排序函数

  2. 调用牌型判断函数

  3. 根据牌型和上家出的牌,判断是否可以出牌

  4. 如果可以出牌,设置牌的大小和张数,说相应的牌型,广播”可以出牌”消息

  5. 否则,想”要不起”几秒

角色1形象有一个牌型判断函数:

  1. 清空存储牌的大小方式列表

  2. 将储存出的牌的大小添加到列表中,方便牌型判断

为什么要这样编写?

  • 使用冒泡排序法对牌进行排序,方便玩家查看和选择

  • 详细的牌型判断逻辑,确保玩家出的牌符合斗地主规则

  • 响应各种游戏事件,提供及时的反馈

  • 模拟真实的游戏对战,增强游戏体验

角色:角色2形象(电脑)

【角色:角色2形象】代码截图

这个角色是游戏中的电脑角色,负责电脑的抢地主、出牌等操作。

详细程序讲解

当接收到”游戏开始”广播时,角色2形象会:

  1. 切换到默认造型

角色2形象有一个排序函数:

  1. 使用冒泡排序法对角色2的牌进行排序

  2. 确保牌按照从小到大的顺序排列,方便电脑判断和选择

当接收到”抢地主开始”广播时,角色2形象会:

  1. 更新角色2牌的张数

  2. 如果轮到角色2抢地主,随机决定是否抢地主

  3. 如果抢地主,播放声音,说”抢地主”几秒,设置地主令为2,广播”抢地主之后看看别人是否抢”消息

  4. 否则,播放声音,说”不抢”几秒,广播”抢地主之后看看别人是否抢”消息

角色2形象有一个牌型大小排布函数:

  1. 清空角色2牌的大小排布列表

  2. 将角色2的牌的大小添加到列表中,方便牌型判断

当接收到”通知3为角色出牌”广播时,角色2形象会:

  1. 如果角色2是地主,切换造型,添加地主的三张牌到角色2的牌列表

  2. 说”我是地主,我先出”几秒,播放声音

  3. 广播”地主准备出牌,返给主线程做通知”消息

当接收到”一切就绪,地主准备出牌”广播时,角色2形象会:

  1. 更新角色2牌的张数

  2. 调用牌型大小排布函数

  3. 如果轮到角色2出牌,调用出牌函数

  4. 等待1秒后广播”出牌结束,将消息返给主线程”消息

当接收到”新一轮出牌开始”广播时,角色2形象会:

  1. 如果轮到角色2出牌,调用出牌函数

  2. 广播”出牌结束,将消息返给主线程”消息

角色2形象有一个出牌判断函数:

  1. 根据谁的牌最大,决定出牌策略

  2. 如果角色2的牌最大,自由选择出牌

  3. 否则,根据上家出的牌选择合适的牌

角色2形象有一个出牌排序函数:

  1. 对角色2准备出的牌的次序进行排序

  2. 确保出牌的顺序正确,方便牌型判断

角色2形象有一个出牌函数:

  1. 设置每回合大小的角色2临时变量

  2. 调用出牌排序函数

  3. 检查牌的索引是否有效

  4. 清空每回合最后出的牌列表

  5. 设置牌的大小和张数

  6. 将准备出的牌添加到每回合最后出的牌列表

  7. 从角色2的牌列表中删除出的牌

  8. 更新角色2牌的张数

  9. 广播”将牌打出去”消息

  10. 设置谁的牌最大为角色2

  11. 等待1秒后,说相应的牌型

角色2形象有一个智能出牌函数:

  1. 调用牌型大小排布函数

  2. 设置每回合大小的角色2临时变量

  3. 调用出牌排序函数

  4. 随机决定是否出牌

  5. 如果出牌,执行出牌操作

  6. 否则,播放声音,说”要不起”几秒

角色2形象有一个根据上家牌型出牌函数:

  1. 清空角色2准备出的牌的次序列表

  2. 根据上家出的牌的张数,选择合适的牌型

  3. 添加相应的牌到准备出的牌的次序列表

角色2形象有一个自由出牌函数:

  1. 清空角色2准备出的牌的次序列表

  2. 随机选择出的牌的张数

  3. 根据张数,选择合适的牌型

  4. 添加相应的牌到准备出的牌的次序列表

  5. 调用出牌排序函数

为什么要这样编写?

  • 使用智能出牌函数,模拟真实的电脑AI

  • 根据上家出的牌型选择合适的牌,提高电脑的出牌策略

  • 随机决定是否出牌,增加游戏的不确定性

  • 详细的牌型判断逻辑,确保电脑出的牌符合斗地主规则

角色:角色3形象(电脑)

【角色:角色3形象】代码截图

这个角色是游戏中的另一个电脑角色,负责电脑的抢地主、出牌等操作。

详细程序讲解

当接收到”游戏开始”广播时,角色3形象会:

  1. 切换到默认造型

角色3形象有一个排序函数:

  1. 使用冒泡排序法对角色3的牌进行排序

  2. 确保牌按照从小到大的顺序排列,方便电脑判断和选择

当接收到”抢地主开始”广播时,角色3形象会:

  1. 更新角色3牌的张数

  2. 如果轮到角色3抢地主,随机决定是否抢地主

  3. 如果抢地主,播放声音,说”抢地主”几秒,设置地主令为3,广播”抢地主之后看看别人是否抢”消息

  4. 否则,播放声音,说”不抢”几秒,广播”抢地主之后看看别人是否抢”消息

角色3形象有一个牌型大小排布函数:

  1. 清空角色3牌的大小排序列表

  2. 将角色3的牌的大小添加到列表中,方便牌型判断

当接收到”通知3为角色出牌”广播时,角色3形象会:

  1. 如果角色3是地主,切换造型,添加地主的三张牌到角色3的牌列表

  2. 说”我是地主,我先出”几秒,播放声音

  3. 广播”地主准备出牌,返给主线程做通知”消息

当接收到”一切就绪,地主准备出牌”广播时,角色3形象会:

  1. 更新角色3牌的张数

  2. 调用牌型大小排布函数

  3. 如果轮到角色3出牌,调用出牌函数

  4. 等待1秒后广播”出牌结束,将消息返给主线程”消息

当接收到”新一轮出牌开始”广播时,角色3形象会:

  1. 如果轮到角色3出牌,调用出牌函数

  2. 广播”出牌结束,将消息返给主线程”消息

角色3形象有一个出牌判断函数:

  1. 根据谁的牌最大,决定出牌策略

  2. 如果角色3的牌最大,自由选择出牌

  3. 否则,根据上家出的牌选择合适的牌

角色3形象有一个出牌排序函数:

  1. 对角色3准备出的牌的次序进行排序

  2. 确保出牌的顺序正确,方便牌型判断

角色3形象有一个出牌函数:

  1. 设置每回合大小的角色3临时变量

  2. 调用出牌排序函数

  3. 检查牌的索引是否有效

  4. 清空每回合最后出的牌列表

  5. 设置牌的大小和张数

  6. 将准备出的牌添加到每回合最后出的牌列表

  7. 从角色3的牌列表中删除出的牌

  8. 更新角色3牌的张数

  9. 广播”将牌打出去”消息

  10. 设置谁的牌最大为角色3

  11. 等待1秒后,说相应的牌型

角色3形象有一个智能出牌函数:

  1. 调用牌型大小排布函数

  2. 设置每回合大小的角色3临时变量

  3. 调用出牌排序函数

  4. 随机决定是否出牌

  5. 如果出牌,执行出牌操作

  6. 否则,播放声音,说”要不起”几秒

角色3形象有一个根据上家牌型出牌函数:

  1. 清空角色3准备出的牌的次序列表

  2. 根据上家出的牌的张数,选择合适的牌型

  3. 添加相应的牌到准备出的牌的次序列表

角色3形象有一个自由出牌函数:

  1. 清空角色3准备出的牌的次序列表

  2. 随机选择出的牌的张数

  3. 根据张数,选择合适的牌型

  4. 添加相应的牌到准备出的牌的次序列表

  5. 调用出牌排序函数

为什么要这样编写?

  • 与角色2形象类似,使用智能出牌函数,模拟真实的电脑AI

  • 根据上家出的牌型选择合适的牌,提高电脑的出牌策略

  • 随机决定是否出牌,增加游戏的不确定性

  • 详细的牌型判断逻辑,确保电脑出的牌符合斗地主规则

角色:封面、封面2(界面元素)

【角色:封面】代码截图

这个角色是游戏中的界面元素,负责显示游戏封面。

详细程序讲解

当接收到”游戏开始”广播时,封面角色会:

  1. 设置大小

  2. 隐藏封面

当接收到”给牌1″广播时,封面角色会:

  1. 显示封面

【角色:封面2】代码截图

这个角色也是游戏中的界面元素,负责显示游戏封面。

详细程序讲解

当接收到”游戏开始”广播时,封面2角色会:

  1. 设置大小

  2. 隐藏封面2

当接收到”给牌1″广播时,封面2角色会:

  1. 显示封面2

为什么要这样编写?

  • 游戏开始时隐藏封面,游戏进行时显示,提供清晰的游戏界面

  • 响应”给牌1″广播,及时显示相关界面元素

角色:出牌亮、不出(操作按钮)

【角色:出牌亮】代码截图

这个角色是游戏中的出牌按钮,负责响应玩家的出牌操作。

详细程序讲解

当接收到”可以出牌”广播时,出牌亮角色会:

  1. 移到指定位置

  2. 显示按钮

  3. 设置大小

当接收到”新一轮出牌开始”广播时,出牌亮角色会:

  1. 隐藏按钮

当角色被点击时,出牌亮角色会:

  1. 播放声音

  2. 隐藏按钮

  3. 广播”主角出牌结束,通知主线程”消息

这些代码可能包含了出牌亮角色的其他功能,比如处理不同情况下的出牌操作,确保玩家能够正确地出牌。

【角色:不出】代码截图

这个角色是游戏中的不出按钮,负责响应玩家的不出操作。

详细程序讲解

当接收到”可以出牌”广播时,不出角色会:

  1. 移到指定位置

  2. 显示按钮

  3. 设置大小

当接收到”新一轮出牌开始”广播时,不出角色会:

  1. 隐藏按钮

当角色被点击时,不出角色会:

  1. 播放声音

  2. 隐藏按钮

  3. 广播”给主角说要不起”消息

  4. 广播”出牌结束,将消息返给主线程”消息

这些代码可能包含了不出角色的其他功能,比如处理不同情况下的不出操作,确保玩家能够正确地选择不出牌。

为什么要这样编写?

  • 提供清晰的操作按钮,方便玩家进行出牌和不出操作

  • 响应玩家的点击操作,及时处理游戏逻辑

  • 播放声音,提供反馈,增强游戏体验

角色:地主三张牌

【角色:地主三张牌】代码截图

这个角色是游戏中的地主三张牌,负责显示地主的额外三张牌。

详细程序讲解

当接收到”游戏开始”广播时,地主三张牌角色会:

  1. 设置大小

  2. 隐藏地主三张牌

当接收到”给牌1″广播时,地主三张牌角色会:

  1. 显示地主三张牌

为什么要这样编写?

  • 游戏开始时隐藏地主三张牌,游戏进行时显示,提供清晰的游戏界面

  • 响应”给牌1″广播,及时显示相关界面元素

  • 确保地主的三张牌能够正确地显示,让玩家清楚地知道地主额外获得了哪些牌

角色:牌1-20

【角色:牌1】代码截图

这些角色是游戏中的牌,负责显示不同的牌面。每个牌角色的功能相似,下面以牌1为例进行讲解:

详细程序讲解

当接收到”游戏开始”广播时,牌1角色会:

  1. 设置大小

  2. 隐藏牌1

当接收到”给牌1″广播时,牌1角色会:

  1. 显示牌1

当接收到”将牌打出去”广播时,牌1角色会:

  1. 隐藏牌1

当接收到”主角出牌结束,通知主线程”广播时,牌1角色会:

  1. 隐藏牌1

【角色:牌2】代码截图

牌2角色的功能与牌1类似:

当接收到”游戏开始”广播时,牌2角色会:

  1. 设置大小

  2. 隐藏牌2

当接收到”给牌1″广播时,牌2角色会:

  1. 显示牌2

当接收到”将牌打出去”广播时,牌2角色会:

  1. 隐藏牌2

当接收到”主角出牌结束,通知主线程”广播时,牌2角色会:

  1. 隐藏牌2

其他牌角色

牌3到牌20角色的功能与牌1、牌2类似,它们都是游戏中的牌,负责显示不同的牌面。每个牌角色都会:

  1. 在游戏开始时隐藏

  2. 在接收到”给牌1″广播时显示

  3. 在接收到”将牌打出去”或”主角出牌结束,通知主线程”广播时隐藏

为什么要这样编写?

  • 游戏开始时隐藏所有牌,游戏进行时显示,提供清晰的游戏界面

  • 响应各种游戏事件,及时显示或隐藏牌

  • 每个牌角色负责显示一张牌,让玩家能够清楚地看到自己和电脑对手的牌

角色:胜利、再来一局(游戏结束)

【角色:胜利】代码截图

这个角色是游戏中的胜利界面,负责显示游戏胜利的消息。

详细程序讲解

当接收到”游戏结束”广播时,胜利角色会:

  1. 移到指定位置

  2. 显示胜利界面

  3. 设置大小

【角色:再来一局】代码截图

这个角色是游戏中的再来一局按钮,负责响应玩家的再来一局操作。

详细程序讲解

当接收到”游戏结束”广播时,再来一局角色会:

  1. 移到指定位置

  2. 显示按钮

  3. 设置大小

当角色被点击时,再来一局角色会:

  1. 播放声音

  2. 隐藏按钮

当接收到”游戏开始”广播时,再来一局角色会:

  1. 隐藏按钮

为什么要这样编写?

  • 游戏结束时显示胜利界面,提供游戏反馈

  • 提供再来一局按钮,方便玩家重新开始游戏

  • 响应玩家的点击操作,及时处理游戏逻辑

六、整体效果分析

现在让我们来看看整个游戏的整体效果:

  1. 游戏流程:游戏完整实现了斗地主的所有流程,包括发牌、抢地主、出牌、判断胜负等环节,符合真实的斗地主规则。

  2. 视觉效果:游戏界面清晰美观,角色造型生动,牌的显示和操作按钮布局合理,提供了良好的视觉体验。

  3. 交互体验:玩家可以通过点击按钮进行出牌和不出操作,电脑角色会智能出牌,游戏流程流畅,交互体验良好。

  4. 电脑AI:电脑角色具有一定的智能,能够根据牌型选择合适的出牌策略,模拟真实的游戏对战,提高了游戏的趣味性和挑战性。

  5. 音效和音乐:游戏中加入了各种音效和背景音乐,比如出牌声、抢地主声等,增强了游戏的沉浸感。

  6. 欢乐豆系统:游戏中加入了欢乐豆系统,记录玩家的游戏积分,增加了游戏的竞争性和 replay value。

  7. 游戏结束:游戏结束时显示胜利界面和再来一局按钮,提供了完整的游戏闭环。

  8. 响应速度:游戏响应速度快,玩家操作后能够及时得到反馈,避免了游戏的卡顿感。

  9. 容错性:游戏具有一定的容错性,比如玩家出的牌不符合规则时,会提示”要不起”,不会导致游戏崩溃。

  10. 扩展性:游戏代码结构清晰,易于扩展,比如可以添加更多的角色、更多的牌型、更多的游戏模式等。

七、创意扩展

小朋友们,你们觉得这个斗地主游戏有趣吗?其实,你们还可以发挥自己的创意,对这个游戏进行扩展,让它变得更有趣!比如:

  1. 添加更多角色:你可以添加更多的电脑角色,比如不同难度的电脑对手,让游戏更有挑战性。

  2. 增加游戏模式:你可以添加更多的游戏模式,比如经典模式、欢乐模式、比赛模式等,满足不同玩家的需求。

  3. 添加道具系统:你可以添加道具系统,比如换牌卡、透视卡等,增加游戏的策略性和趣味性。

  4. 自定义角色造型:你可以为角色更换不同的造型,比如卡通形象、动物形象等,让游戏更有创意。

  5. 添加动画效果:你可以为出牌、抢地主等操作添加动画效果,比如牌的飞行动画、角色的庆祝动画等,增强游戏的视觉体验。

  6. 设计关卡系统:你可以设计关卡系统,每个关卡有不同的挑战目标,比如在规定时间内获胜、使用特定牌型获胜等,增加游戏的可玩性。

  7. 添加排行榜:你可以添加排行榜,记录玩家的最高得分和胜率,让玩家可以和朋友比赛,看看谁是真正的斗地主王者。

  8. 实现多人对战:你可以尝试实现多人对战功能,让玩家可以和朋友一起玩斗地主,增加游戏的社交性。

  9. 添加语音系统:你可以添加语音系统,让角色可以说出更多的台词,比如”炸弹”、”王炸”、”春天”等,增强游戏的趣味性。

  10. 设计自定义牌背:你可以设计自定义牌背,让玩家可以选择自己喜欢的牌背样式,增加游戏的个性化。

八、总结

通过这个斗地主游戏,我们学习了很多Scratch编程的知识:

  1. 角色控制:我们学会了如何创建和控制游戏角色,如何让角色响应游戏事件。

  2. 游戏逻辑:我们学会了如何设计游戏流程,如何实现发牌、抢地主、出牌等核心逻辑。

  3. 数据管理:我们学会了如何使用变量和列表存储游戏数据,如何管理牌库和角色的牌。

  4. 牌型判断:我们学会了如何判断不同的牌型,如何比较牌的大小。

  5. 电脑AI:我们学会了如何设计简单的电脑AI,如何让电脑智能出牌。

  6. 界面设计:我们学会了如何设计游戏界面,如何添加操作按钮和反馈信息。

  7. 音效和音乐:我们学会了如何添加音效和音乐,增强游戏的沉浸感。

  8. 事件处理:我们学会了如何使用广播和事件处理,实现角色之间的通信。

  9. 条件判断:我们学会了如何使用条件判断,处理不同的游戏情况。

  10. 循环结构:我们学会了如何使用循环结构,实现重复的游戏操作。

小朋友们,你们都学会了吗?现在,轮到你们发挥自己的创意,制作属于自己的斗地主游戏了!相信你们的创意一定会让这个游戏更加精彩!

最后,祝所有的小朋友编程能力越来越强,逻辑思维越来越灵活,学习进步,天天开心!


小贴士:如果你想保存这个游戏,你可以点击Scratch界面右上角的”文件”按钮,然后选择”保存到电脑”,这样你就可以在任何时候打开它,继续你的游戏开发之旅了!


01
scratch素材–软件集成版
给孩子找素材是一件麻烦的事情,找的图片还有可能给孩子扣好背景,或者扣成孩子想要的样子。即使去淘宝买的素材,也要从百度网盘,但素材太多大了或者太多文件,也要充值百度网盘超级会员才能保存,提高下载速度。即使下载了,也要上传,不是特别方便,尤其是不好查找。
口口老师深知各位家长的痛点,将常用素材集成在软件角色和背景库当中,无需上传,只需要角色/背景库中查找。更有每月更新版,让孩子专注于编程,发挥创意即可。
关注即可领取,下载不限速,方便快捷。
本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » Scratch斗地主编程教程 + 附源码,复刻复刻经典斗地主玩法

评论 抢沙发

5 + 2 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮