0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python中的塔防墙建筑|Wireframe#70

jf_9aVl32Dp 来源:Arm软件开发者 2023-01-08 09:49 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

以Atari先锋Rampart的风格保护您的城堡。Mark在最新版本的Wireframe杂志中向您展示了如何操作。

上世纪80年代,一种新的战略流派应运而生。塔防游戏包括在你的城堡周围建造围墙或障碍物,以防止敌人摧毁它。Atari发行的《Rampart》是该类游戏中一个著名的早期作品。比赛分为两个阶段。在建造阶段,玩家在堡垒周围的墙壁上填洞,并放置大炮。在第二阶段,玩家的堡垒将被舰队从海上攻击,玩家可以用大炮还击。这个循环会一直持续下去,直到玩家无法再填补墙壁的空隙,或者他们摧毁了所有攻击船只。

0dcb3a06-8e91-11ed-bfe3-dac502259ad0.png

大炮准备好了,准备战斗!这是最初的Rampart,由Atari于1990年开发。

在我们的PygameZero示例中,我们将研究两种塔防机制:筑墙系统,然后检查要塞是否被墙包围。要开始编码,我们需要一个背景——在本例中,是一个海岸线部分。然后,我们需要定义一个不可见的网格,该网格将保存墙所在位置的详细信息。如果我们假设每个墙段是40×40像素,那么在800×600像素的窗口上,我们可以定义一个二维列表中20×15的网格。在这个列表中,我们将从所有设置为0的正方形开始,然后如果我们添加墙截面,将该正方形切换为1。为了定义我们可以构建和不能构建的地方,我们可以加载一个小黑白图像,并从中读取像素,将不可构建的正方形设置为3。

我们的堡垒将占据四个正方形,因此我们将堡垒位置的左上角正方形设为2,其他三个正方形设为3。这将阻止玩家在堡垒上筑墙。我们使用on_mouse_move()函数跟踪鼠标的移动,当我们获得鼠标x和y坐标时,我们在锁定到不可见网格的鼠标指针下绘制一段墙。当我们得到一个on_mouse_down()事件时,我们检查所经过的正方形是否为0,如果为0,我们将其转换为1。

0ea14dbc-8e91-11ed-bfe3-dac502259ad0.png

我们向塔防流派致敬。建造一系列的墙来安全地包围你的堡垒。

在draw()函数中,如果我们在网格中有1的地方绘制一个墙截面,我们将看到墙所在的平面正方形。然而,我们想要的是所有的墙都与外面的城垛连接起来。为此,我们需要检查每个墙件周围的正方形,并根据其与其他墙件的连接方式来更改我们使用的图像。我们查看上方、右侧、下方和左侧的正方形,如果没有墙,则创建一个带零的字符串,如果有墙,则生成一个带1的字符串。这意味着如果没有墙连接,我们将获得字符串“0000”,如果上方有墙,将获得字符串1000,如果当前墙的左侧和右侧有墙,示例:“wall0101”。

在示例的第二部分,我们将检测堡垒是否被墙包围。有多种方法可以做到这一点,但我们将使用“flood fill”例程来测试这一点。首先,我们制作一份网格列表的副本以进行测试。然后,从网格上的堡垒位置开始,我们递归地测试所有相邻的正方形。如果我们碰到了一堵墙,那么我们就关闭了回路的分支。这就产生了一系列向外延伸的测试,直到到达地图的一侧,或者因为所有的代码分支都碰到了墙,所以我们没有正方形来测试。如果到达地图的边缘,墙上就会有洞;否则,堡垒将被封闭。

这些是我们的筑墙和测试程序。为了完成塔防风格的游戏,你需要添加一些大炮和舰船来战斗,但我们会把这部分留给你来实现。

0f412b52-8e91-11ed-bfe3-dac502259ad0.png

这是Mark的塔防游戏开始代码。要在系统上运行它,首先需要安装PygameZero。完整说明可在此处(http://wfmag.cc/pgzero)找到。有关完整代码,请访问我们的github(http://wfmag.cc/wfmag70)。

获取Wireframe#70

您可以在Wireframe第70期中阅读更多类似的功能(https://www.raspberrypi.com/news/tag/wireframe/),可直接从Raspberry Pi Press(http://wfmag.cc/issues)获得,我们在全球范围内提供。

0fd2343a-8e91-11ed-bfe3-dac502259ad0.jpg

大结局:Wireframe#70,现已上市。

如果你喜欢数字形式的杂志,你也可以下载Wireframe第70期的免费PDF!(http://wfmag.cc/70)


审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码
    +关注

    关注

    6

    文章

    1045

    浏览量

    57239
  • python
    +关注

    关注

    59

    文章

    4894

    浏览量

    90532

原文标题:Python中的塔防墙建筑|Wireframe#70

文章出处:【微信号:Arm软件开发者,微信公众号:Arm软件开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    快讯:集团携手ASML在印度盖半导体厂 4月新能源国内渗透率首次超过60%

    。‌‌‌据悉半导体晶圆厂选址在印度古吉拉特邦的‌多勒拉(Dholera)‌,计划总投资高达‌110 亿美元‌ 。重点聚焦28至110纳米成熟制程工艺,预计2027年期实现投产运营。印度电子与 ASML 还将合作培养本土人
    的头像 发表于 05-19 10:20 361次阅读

    ASML与电子签署谅解备忘录

    近日,荷兰光刻机巨头阿斯麦(ASML)与印度集团旗下电子(Tata Electronics)正式签署谅解备忘录。ASML将支持
    的头像 发表于 05-18 10:57 1517次阅读

    半导体制造的侧工艺介绍

    工艺是半导体制造形成LDD结构的关键,能有效抑制热载流子效应。本文从干法刻蚀原理出发,深度解析侧材料从单层SiO₂到ONO三明治结构及双重侧的迭代演进,揭示先进制程下保障器件
    的头像 发表于 04-09 10:23 629次阅读
    半导体制造<b class='flag-5'>中</b>的侧<b class='flag-5'>墙</b>工艺介绍

    [VirtualLab] 使用Python运行VirtualLab Fusion光学仿真

    Fusion的简单方法。在本示例,我们将演示如何使用Python脚本运行光学仿真,以向用户简要概述这种跨平台的仿真能力。 用例概览 文件路径 用户可以在样本文件的文件夹中找到所有文件。包含这些文件
    发表于 03-31 09:39

    科技赋能古建保护:直川无线倾角传感器在庐山普同的应用

    建筑因自然侵蚀与旅游负荷面临结构安全风险,传统人工巡检存在诸多局限。直川科技为庐山普同部署 NB-IoT 倾角传感器,实现 24 小时精准监测、远程智能预警与数据追溯。该方案可前置控风险、提升保护效率、支撑科学决策,以物联
    的头像 发表于 03-19 15:31 257次阅读
    科技赋能古建保护:直川无线倾角传感器在庐山普同<b class='flag-5'>塔</b>的应用

    纯视觉自动驾驶能识别出高透明玻璃吗?

    ,还是想申明下,在常规驾驶场景下,车辆前方出现高透明玻璃的可能性微乎其微,若遇到真的属于罕见的边缘场景了,今天聊的内容仅从技术方向上分析下纯视觉自动驾驶识别高透明玻璃的可能性。 其实在城市建筑设计
    的头像 发表于 02-18 08:49 1.1w次阅读
    纯视觉自动驾驶能识别出高透明玻璃<b class='flag-5'>墙</b>吗?

    麦斯MEMS振荡器赋能精密关节控制

    麦斯微电子MEMS振荡器以全硅结构、>70g抗振性及-40℃~125℃宽温特性,解决机器人关节驱动时钟易受振动与温漂干扰的难题,为工业机器人、协作机器人等提供高可靠、低抖动的精准时序基准。
    的头像 发表于 01-30 09:53 425次阅读
    麦斯<b class='flag-5'>塔</b>MEMS振荡器赋能精密关节控制

    从盗防到隐患预警:电缆终端场视频监控系统,给电缆终端塔上“全维度保险”

    近年随着电力设备材料价值攀升,电缆终端等大型电力设施逐渐成为盗窃、蓄意破坏的目标,作案手段愈发专业隐蔽,传统人工巡检已难以覆盖“分散点位、复杂环境”的安需求。在此背景下,鼎信智慧科技推出的电缆
    的头像 发表于 01-13 18:27 208次阅读

    厂矿避雷防雷接地系统设置综合应用方案

    一、厂矿避雷的设置要求 厂矿避雷通常是高处避雷设施的重要组成部分,主要用于保护厂区内的建筑物、设备及人员免受雷电灾害的影响。根据厂矿的特定需求,避雷的设置需要考虑以下几个方面:
    的头像 发表于 01-06 10:12 438次阅读
    厂矿避雷<b class='flag-5'>塔</b>防雷接地系统设置综合应用方案

    机场 | CET电技术助力山东济南遥国际机场二期改扩建工程智能配电监控系统建设

    山东济南遥国际机场二期改扩建工程主要包括新建T2航站楼,建筑面积约60万㎡,综合交通中心及停车楼,建筑面积39万㎡,是山东民航史上规模和投入最大的机场建设项目。CET电技术助力机场
    的头像 发表于 01-05 11:29 644次阅读
    机场 | CET<b class='flag-5'>中</b>电技术助力山东济南遥<b class='flag-5'>墙</b>国际机场二期改扩建工程智能配电监控系统建设

    RK开发者大会照片全解析:70 家方案商生态图谱

    后台被问爆的 RK 开发者大会照片,终于整理出完整版!70 家参展方案商逐一解析,不管你是找板卡的开发者、找落地方案的市场人,还是找供应商的采购,这份攻略都能直接 “对号入座”。 (划重点:这只
    的头像 发表于 12-15 07:05 1632次阅读
    RK开发者大会照片<b class='flag-5'>墙</b>全解析:<b class='flag-5'>70</b> 家方案商生态图谱

    智能建筑的 “隐形神经”:交换机如何连接安、照明与门禁系统?

    在智能建筑,各类智能化系统各司其职:安系统守护安全,照明系统调节光环境,门禁系统管控出入。然而,让这些系统真正“智能”起来的,是一张看不见的网络,而网络的核心枢纽正是 交换机 。它如同建筑
    的头像 发表于 12-10 16:40 615次阅读

    建筑智能安系统:电容在电压波动中保障摄像头持续录像的 “电力锚”

    在现代建筑智能安系统,摄像头的持续稳定运行是保障安全监控的关键。然而,电力系统的电压波动常常成为影响摄像头工作的隐患。这时,电容器作为一种重要的电子元件,发挥着“电力锚”的作用,确保摄像头在电压
    的头像 发表于 08-22 10:47 1328次阅读

    麦斯MST1602赋能工业物联网关5ns同步精度

    麦斯MST1602 MEMS振荡器以全硅架构实现耐60 kg冲击和70 g振动,2×1.6 mm小封装覆盖3.57-156.25 MHz共54频点,老化
    的头像 发表于 08-20 09:48 1079次阅读
    麦斯<b class='flag-5'>塔</b>MST1602赋能工业物联网关5ns同步精度

    CADENAS 在 2025 年金字公司联系博览会上取得圆满成功

    4 月 29 日,CADENAS GmbH 又一次参加了在奥格斯堡举办的金字企业联络展。我们与约 270 家公司一起,在奥格斯堡展厅向 3500 多名参观者展示了自己。 CADENAS 现场直播
    发表于 06-04 14:32