迪文科技论坛

 找回密码
 立即注册
搜索
查看: 10|回复: 0

【分享】 陈盛阳 像素骑士

[复制链接]

1

主题

0

回帖

24

积分

新手上路

Rank: 1

积分
24
发表于 昨天 23:18 | 显示全部楼层 |阅读模式
一. 作品简介

利用迪文T5L开发板,实现的一款8-bit像素风动作生存类游戏——像素骑士
玩家通过屏幕上的方向键控制骑士四向移动,用攻击键与不断涌来的地下城怪物展开战斗。游戏内置“简单、一般、困难”三种内置难度,对应不同刷怪速率和通关击杀目标。
达成击杀目标即可胜利,血量归零则判定失败。




二. 工作原理




1. 游戏启动
程序初始化,加载开始页面。利用按键返回控件,实现跳转至难度选择页。


图2.1 开始页面



2. 难度选择
利用图标页面平移和滑动图标选择,实现滑动选择难度功能,并跳转至战斗主场景。
不同难度图标各有一按键返回控件,变量地址2080,键值分别为1、2、3,以实现不同难度对应不同的刷怪速率、怪物移速和击杀目标。

图2.2 难度选择



3. 战斗场景
主角为一个变量图标显示,描述指针3000变量地址3100,”48 主角.icl“用以存储四向行走图片;方向键为四个增量调节控件,变量地址分别为3001、3002,用以实现主角XY方向的移动;

攻击按键为一个按键返回控件,变量地址4200键值1,用以实现攻击功能;三个变量图标显示,描述指针2100、2200、2300,变量地址2240、2250、2260,实现怪物的刷新(同屏怪物上限为3),

和自动追踪主角;另外三个变量图标显示,用以实现血量的显示和扣除。



图2.3 战斗场景







4.结算页面

根据条件判定胜负,跳转至不同结算页面,结算页有一按键返回控件,用以实现跳转至开始页面,方便玩家重新开始一局游戏。

图2.4 结算页面

三. 设计思路
1. UI设计
采用8-bit像素风格,以中世纪暗黑地下城为视觉基调,整体配色以深紫、暗蓝为主,契合游戏的地牢主题。
所有背景图片、人物素材、按键图标均由ai辅助生成。


2. 代码设计
1.初始化与状态管理:游戏开局或触发“重试”时,调用Init_Game()将所有怪物位移至2000 像素外的隐藏区域,重置血量、连击计数与时间Tick。根据难度改变spawn_limit(刷怪上限间隔)和kill_target(目标击杀数),构成完整的难度分级。
2.输入采集与双击击杀机制:主循环不断轮询玩家的屏幕XY坐标来刷新当前位置。攻击系统采用“双击判定”:首次检测到攻击信号启动10个Tick(0.5秒)的判定窗口期,若此期间达成 2 次击打且怪物在角色攻击距离(绝对值坐标差<60)内,则判定怪物被击杀。
3.碰撞伤害与容错缓冲:利用宏定义的 ABS 求差算子构建矩形包围盒以测算距离。当主角处于怪物伤害范围内,计时器开始累加。仅当连续处于范围内大40个Tick(2秒)后才会扣除1点生命,避免了接触即死体验感差。生命值耗尽后则改变0x0084地址的值跳转至失败页。
4.动态帧动画演算:判断(current_x != last_x)提取位移方向(上/下/左/右)。结合p_anim_tick 计数器实现每2帧自动切换下一个步态贴图ID(0到6循环)。仅在人物状态发生变化时才向迪文屏发送UI串口更新指令,极大地节约了串口带宽。
5.对象池与简单的自动寻路:预分配大小为 3的数组作为怪物对象池。定时器触发时,激活闲置空槽并在指定坐标域内叠加随机数刷出怪物。怪物会自动根据主角坐标进行 X/Y单轴趋近。为了避免两只怪物重合时,造成的鬼畜,当两只怪物间距小于30时会触发反向坐标运算进行相互推挤。

工程文件:
演示视频:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2026-7-3 11:30 , Processed in 0.037781 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表