基于Construct3制作的数字九宫格游戏

本文讲述了作者利用Python和Construct3开发一款数字九宫格游戏的经历,涉及规则、微信小程序/Construct3要求、功能实现(如随机数生成、回收机制)以及遇到的限制,如事件表复杂度和功能受限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么选择制作数字九宫格游戏?

       在大一暑假的时候自学了Python,当时偶然看见了刚发布的《咩咩启示录》里面的一款数字九宫格小游戏。但苦于《咩咩启示录》售价过高,便自己通过python语言设计了简易的数字九宫格小游戏。但是当时不太会用python的图形包,所以只是在终端上执行。这次想要通过Construct3完成对过去设计的游戏的UI界面设计。

游戏规则

       游戏界面由两个九宫格棋盘和一个“?”代表的骰子组成,游戏需要两名玩家参与。每一轮,每一名玩家先后拖动问号投出数字,可以选择将骰子放在所属九宫格中任意一个空的位置,然后将投出的数字放置于一行后会消除对手所属九宫格的同行所有相同数字。当某一方的九宫格都被数字填满后,游戏结束并开始比较双方分数大小。玩家分数由其所属九宫格中的每一个数字决定,一方中每个数的大小计算方式为:a*(x^2)(a为该数字,x为该数字出现在该行的次数)。两名玩家计算各自的每个数字大小之和,分数大者胜。

游戏要求

       本次游戏设计按照老师要求,设计平台必须是微信小程序或Constrcut3,并且由于不能使用脚本,部分功能(消除数字)需要玩家手动完成。

游戏实现

       随机数设置:通过对骰子对象设置实例变量“随即点数”,并通过事件先实现骰子在被放下时生成随机数,在根据随机数生成对应的骰子点数对象。

       回收点数对象:设置一个垃圾桶对象,当骰子点数对象与垃圾桶图像重叠时,销毁骰子点数对象。

       自动嵌镶:当骰子点数对象在合法的坐标处,重新设置其x,y轴坐标,使其位于格子中心。

       自动回收(限于当前条件无法完成):由于事件表提供的全局变量只能是单个整型、字符串和布尔类型,并未提供容器或数组。这使得每次确认新骰子被放下的位置和等待被回收的骰子位置变得繁复,首先必须确认新骰子的点数,其次必须确认新骰子的坐标,并根据坐标设置对应参数(拢共18个,如果设置为字符串可能少一点),再要根据对应参数锁定具体的位置销毁旧对象。总共需要6*3*2+6*3=54个事件。而免费版无法提供那么多事件,运用代码两步就可以完成。这主要是因为事件表的条件不能设计成选择语句,而事件嵌套事件也算在使用的事件总数里,或许可以通过字符串或者家族可以解决这个问题,但是在事件表的条件里前者不能单独拿出一个字母来比较,后者免费版也不允许用。在反复探究和思考之后,最终决定放弃这个功能,设计了垃圾桶对象,让玩家手动回收。

       结算与分数计算(限于当前条件无法完成):这个游戏的分数计算比较复杂,需要遍历双方所有骰子,并根据骰子所在行数的重复数做平方运算。另一方面,结算条件没有脚本辅助也较难完成,而且自动回收功能无法实现,也就从根源上影响了结算条件的运算。

经验与反思

       在设计随机数的过程中发现,只要当事件的条件被满足时,动作就会一直继续执行。以生成骰子点数对象为例,如果只是在事件中添加了生成对象的动作而不重置骰子的实例变量就会反复生成骰子点数对象。另一方面,如果这两个动作都添加了,则只会生成一次对象,这说明了同一事件的动作之间存在不可打断性,事件本身具有原子性。

       在设计自动嵌入之后,觉得事件表设计的过于繁复,如果可以设置一个父对象来管理骰子点数对象,就可以大大节省事件表的使用事件数,但是后来发现这个功能叫家族,免费版不可以用。

视频地址:基于Constrcut3自制的九宫格小游戏(大学Unity3D实验课作业)_哔哩哔哩_bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值