<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/vvind</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; vvind]]></copyright><item><title><![CDATA[W801学习笔记二十四：NES模拟器游戏]]></title><link>https://blog.youkuaiyun.com/vvind/article/details/138584872</link><guid>https://blog.youkuaiyun.com/vvind/article/details/138584872</guid><author>vvind</author><pubDate>Wed, 08 May 2024 20:36:50 +0800</pubDate><description><![CDATA[之前已经实现了NES模拟器玩游戏。现在要在新版本掌机中移植过来。]]></description><category></category></item><item><title><![CDATA[W801学习笔记二十三：语文和英语学习应用的代码汇总]]></title><link>https://blog.youkuaiyun.com/vvind/article/details/138584527</link><guid>https://blog.youkuaiyun.com/vvind/article/details/138584527</guid><author>vvind</author><pubDate>Wed, 08 May 2024 20:12:49 +0800</pubDate><description><![CDATA[前面几章，代码经过重构，可能有点乱。这里给个最终版本，以供参考。]]></description><category></category></item><item><title><![CDATA[W801学习笔记二十二：英语背单词学习应用——下]]></title><link>https://blog.youkuaiyun.com/vvind/article/details/138546630</link><guid>https://blog.youkuaiyun.com/vvind/article/details/138546630</guid><author>vvind</author><pubDate>Tue, 07 May 2024 21:45:42 +0800</pubDate><description><![CDATA[由于英语也是采用了和唐诗一样的《三分钟限时挑战》《五十题竞速挑战》《零错误闯关挑战》，所以用户交互的逻辑和唐诗是一样的。所以，我们抽一个基类，让代码可以重用。]]></description><category></category></item><item><title><![CDATA[W801学习笔记二十一：英语背单词学习应用——上]]></title><link>https://blog.youkuaiyun.com/vvind/article/details/138545375</link><guid>https://blog.youkuaiyun.com/vvind/article/details/138545375</guid><author>vvind</author><pubDate>Tue, 07 May 2024 21:30:49 +0800</pubDate><description><![CDATA[英语背单词是比较常见的学习APP，参考唐诗宋词应用，本章做一个类似的应用。]]></description><category></category></item><item><title><![CDATA[W801学习笔记二十：宋词学习应用]]></title><link>https://blog.youkuaiyun.com/vvind/article/details/138475949</link><guid>https://blog.youkuaiyun.com/vvind/article/details/138475949</guid><author>vvind</author><pubDate>Sun, 05 May 2024 23:00:04 +0800</pubDate><description><![CDATA[1、我们需要参考前面唐诗的方式，把宋词文本下载下来，并进行格式整理。似乎不需要做什么事情就结束了。大部分的精力，都耗费在了格式的整理上。按照同样的道理，还可以继续对诗经等内容进行扩展，这里就不再赘述了。前三章完成了唐诗的应用，本章将实现宋词的学习应用。我们在g属性中，添加m属性，用于标识是唐诗还是宋词。宋词与唐诗的区别不大，马上开始。3、在初始化中添加宋词数据的加载。2、在菜单中添加宋词选项。]]></description><category></category></item><item><title><![CDATA[W801学习笔记十九：古诗学习应用——下]]></title><link>https://blog.youkuaiyun.com/vvind/article/details/138474758</link><guid>https://blog.youkuaiyun.com/vvind/article/details/138474758</guid><author>vvind</author><pubDate>Sun, 05 May 2024 22:23:41 +0800</pubDate><description><![CDATA[所以本章扩展几种玩法。而这几种玩法，将采用完全不同的判断方法。玩法三：零错误闯关挑战——只要错误就结束，看谁坚持时间最长。这种模式，需要在每回答一题之后，判断一共回答了多少题。玩法一：三分钟限时挑战——在规定时间内，看谁得分高。玩法二：五十题竞速挑战——限定50题，看谁正确率高。这种模式，需要在tick方法中判断时间是否结束。通过在g属性中添加w属性，把玩法传递进去。3、在需要进行结束判断的地方，加入判断。这种模式，在回答错误时，立即结束。1、现在菜单中加入三种模式的选项。2、在游戏初始化中，获取玩法。]]></description><category></category></item><item><title><![CDATA[W801学习笔记十八：古诗学习应用——中]]></title><link>https://blog.youkuaiyun.com/vvind/article/details/138403292</link><guid>https://blog.youkuaiyun.com/vvind/article/details/138403292</guid><author>vvind</author><pubDate>Sat, 04 May 2024 20:53:36 +0800</pubDate><description><![CDATA[1、定义游戏的相关变量，如记录正确和错误的数量，运行时间等等。根据前边定义过的框架，主线程会不断执行页面的tick方法，并且传递两次执行的间隔。这里，我们设定答对一题得60分，答错扣20分。这样，如果随便乱选，最终趋于0分。选择按钮，只有当游戏已经结束时有效，按下时重新开始游戏。5、回答错误时，计数器++，显示正确答案，延时，然后进入下一题。退出按钮，最先进行判断。ABCD按钮，判断是否选择正确。3、对游戏结束的判断。现在我们加入交互逻辑——对用户选择的判断。4、回答正确时，计数器++，进入下一题。]]></description><category></category></item><item><title><![CDATA[W801学习笔记十七：古诗学习应用——上]]></title><link>https://blog.youkuaiyun.com/vvind/article/details/138196628</link><guid>https://blog.youkuaiyun.com/vvind/article/details/138196628</guid><author>vvind</author><pubDate>Sat, 04 May 2024 20:44:30 +0800</pubDate><description><![CDATA[硬件驱动和软件架构基本上完成了，一些遗漏的东西，后面再伺机补充上。从本章开始，将正式进入软件应用，特别是游戏的开发。对于第一个应用，前面已经有了一些设想：1、随机选择一首唐诗，随即选择其中的一句进行隐藏。2、玩家从四个备选句子中选择一个答案。]]></description><category></category></item><item><title><![CDATA[W801学习笔记十六：掌机系统——启动第一个应用]]></title><link>https://blog.youkuaiyun.com/vvind/article/details/138169791</link><guid>https://blog.youkuaiyun.com/vvind/article/details/138169791</guid><author>vvind</author><pubDate>Thu, 25 Apr 2024 18:20:38 +0800</pubDate><description><![CDATA[在开始游戏应用开发之前，我们先搞一个简单的应用，目的是把菜单操作与应用启动之间打磨平顺。]]></description><category></category></item><item><title><![CDATA[W801学习笔记十五：掌机系统——状态栏]]></title><link>https://blog.youkuaiyun.com/vvind/article/details/138169316</link><guid>https://blog.youkuaiyun.com/vvind/article/details/138169316</guid><author>vvind</author><pubDate>Thu, 25 Apr 2024 18:08:13 +0800</pubDate><description><![CDATA[UI 中有些元素悬浮于页面之上，如状态栏、通知栏。编写主屏幕 MAINSCREEN 用于显示操作提示、时间、网络连接状态等。]]></description><category></category></item><item><title><![CDATA[W801学习笔记十四：掌机系统——菜单——尝试打造自己的UI]]></title><link>https://blog.youkuaiyun.com/vvind/article/details/138135010</link><guid>https://blog.youkuaiyun.com/vvind/article/details/138135010</guid><author>vvind</author><pubDate>Wed, 24 Apr 2024 20:36:15 +0800</pubDate><description><![CDATA[在未来，将会有众多应用涌现，而这些应用需要通过菜单来进行条理清晰、井然有序的组织与管理。正因如此，我们必须要抢先打造好菜单。
通常情况下，LCD 驱动都是采用直接写屏的方式，虽然这种方式速度较快，但用于界面制作时则不太合适。所以，最好能拥有一套专门的 UI 框架。如前文所述，我们的目标是为了学习，因此我们不采用诸如 LVGL 之类的框架，所有的一切都需要我们亲力亲为去完成。
在本文中，我们将尝试去构建一个简易的 UI 框架。]]></description><category></category></item><item><title><![CDATA[W801学习笔记十三：掌机系统——系统基础组件]]></title><link>https://blog.youkuaiyun.com/vvind/article/details/138133143</link><guid>https://blog.youkuaiyun.com/vvind/article/details/138133143</guid><author>vvind</author><pubDate>Wed, 24 Apr 2024 20:01:47 +0800</pubDate><description><![CDATA[本文提供单片机用C语言实现JSON解析、双向链表、map、PNG图片读取。]]></description><category></category></item><item><title><![CDATA[W801学习笔记十二：掌机进阶V3版本之驱动（PSRAM/SD卡）]]></title><link>https://blog.youkuaiyun.com/vvind/article/details/138130818</link><guid>https://blog.youkuaiyun.com/vvind/article/details/138130818</guid><author>vvind</author><pubDate>Tue, 23 Apr 2024 16:56:14 +0800</pubDate><description><![CDATA[使用SDK自带的SDIO驱动，我们只需要写一个初始化函数，并在其中添加一些自检代码。使用SDK自带的驱动，我们只需要写一个初始化函数，并在其中添加一些自检代码。提供完整代码下载，结合前面的硬件制作，可以完成掌机制作。本次升级添加了两个模块，现在要把他们驱动起来。下一章开始，我们进行软件开发。]]></description><category></category></item><item><title><![CDATA[W801学习笔记十一：掌机进阶V3版本之硬件改造]]></title><link>https://blog.youkuaiyun.com/vvind/article/details/138126806</link><guid>https://blog.youkuaiyun.com/vvind/article/details/138126806</guid><author>vvind</author><pubDate>Tue, 23 Apr 2024 16:55:27 +0800</pubDate><description><![CDATA[经由前面的笔记，我们打造出了一款游戏掌机。然而，考虑到后续的游戏开发，总是忧心容量不足。故而，在正式展开软件开发工作以前，最终进行一下升级改造。]]></description><category></category></item><item><title><![CDATA[全局唯一ID详解]]></title><link>https://blog.youkuaiyun.com/vvind/article/details/136176195</link><guid>https://blog.youkuaiyun.com/vvind/article/details/136176195</guid><author>vvind</author><pubDate>Thu, 22 Feb 2024 01:02:57 +0800</pubDate><description><![CDATA[其中，有122个比特是随机产生，4个比特作为版本号（Randomly generated UUID），2个比特作为变体号（Leach-Salz）。实际有效空间是122位比特。为了便于阅读，通常采用xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12)的格式，其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。]]></description><category></category></item><item><title><![CDATA[W801学习笔记十：HLK-W801制作学习机/NES游戏机(总结)]]></title><link>https://blog.youkuaiyun.com/vvind/article/details/135958599</link><guid>https://blog.youkuaiyun.com/vvind/article/details/135958599</guid><author>vvind</author><pubDate>Wed, 31 Jan 2024 17:55:31 +0800</pubDate><description><![CDATA[屏幕显示的时候，概率出现花屏。无论怎么修改代码都不能解决，一个偶然的机会，发现当手触摸屏幕的WR和CS引脚时，屏幕会正常。短期的解决方案，在WR和CS引脚，分别焊接一根20厘米左右的飞线。分析可能是刚上电时，电压各种不稳定，此时立刻初始化屏幕，可能会有部分初始化命令执行失败。所以，我计划再升级一次版本，加入对SD卡/PSRAM的支持。4、导航按钮不太好用，所以要在下个版本中，改为十字按钮。解决方法是在main函数刚开始的时候，添加500MS的延时。2、刚打开机器或者烧录的时候，会出现花屏，需要复位一下。]]></description><category></category></item><item><title><![CDATA[STM32学习笔记二十二：WS2812制作像素游戏屏-飞行射击游戏（12）总结]]></title><link>https://blog.youkuaiyun.com/vvind/article/details/135437718</link><guid>https://blog.youkuaiyun.com/vvind/article/details/135437718</guid><author>vvind</author><pubDate>Sun, 07 Jan 2024 14:07:54 +0800</pubDate><description><![CDATA[功能上，还缺少 音乐音效 / 进度保存读取。至此，飞行射击游戏已经基本实现该有的功能，已经比较接近早期的商业游戏了。如果采用脚本，可以完成关卡游戏，如果不用，也可以做成无限挑战游戏。// 检查玩家1道具使用特效的碰撞。// 检查玩家2道具使用特效的碰撞。// 检查掉落物的碰撞，捡拾道具。// 绘制玩家1到缓冲区。// 绘制玩家2到缓冲区。// 绘制掉落物到缓冲区。// 绘制背景到缓冲区。// 绘制敌机到缓冲区。// 绘制子弹到缓冲区。// 绘制缓冲区到屏幕。// 检查敌机的碰撞。// 检查玩家的碰撞。]]></description><category></category></item><item><title><![CDATA[STM32学习笔记二十一：WS2812制作像素游戏屏-飞行射击游戏（11）探索游戏脚本]]></title><link>https://blog.youkuaiyun.com/vvind/article/details/135423391</link><guid>https://blog.youkuaiyun.com/vvind/article/details/135423391</guid><author>vvind</author><pubDate>Sat, 06 Jan 2024 11:09:07 +0800</pubDate><description><![CDATA[3、设置关卡剧本，关卡剧本我们换一种方法，不是因为这样更好，仅仅是为了多测试几种方式。我们写了一大坨的代码来描述BOSS的运动路径，但凡是写过几年代码的人都不会干出这样的事情。我们通过脚本定义不同时间或者不同位置（滚轴游戏），出现不同的敌人，也可以定义出现一些地形物体，加上碰撞，可以做到类似地图的效果。要做脚本，优先要确定脚本的格式。脚本主要起两个作用，一是描述物体运动的轨迹，如前面BOSS的运动动画。方式是几个飞机绑定相同的线路，错开相同间隔出现。本项目中，采用2+3方式，即按行保存压缩的JSON串。]]></description><category></category></item><item><title><![CDATA[STM32学习笔记二十：WS2812制作像素游戏屏-飞行射击游戏（10）探索游戏平衡]]></title><link>https://blog.youkuaiyun.com/vvind/article/details/135402924</link><guid>https://blog.youkuaiyun.com/vvind/article/details/135402924</guid><author>vvind</author><pubDate>Fri, 05 Jan 2024 10:20:03 +0800</pubDate><description><![CDATA[以前娱乐较少的时候，游戏首次、单词投入的时间能达到30分钟，而现在有个5分钟就不错。我们应该让他处于一种状态：玩家熟练度高时，可以干掉所有敌机，熟练度不足时，就要放过一部分敌机。现代游戏开发有个指标，策划让新玩家内测，他会希望 N% 的用户能够玩到 N 分钟。最终，我决定采用每分钟出现一次BOSS，出现BOSS时，缩小其他敌机出现的频率。玩家投入游戏的有两个，要么投入时间（提高熟练度），要么氪金（提高强度）。这样，每过一分钟，敌机出现间隔少200ms。让用户的投入，能通过某种方式体现出来，就是个好的平衡。]]></description><category></category></item><item><title><![CDATA[STM32学习笔记十九：WS2812制作像素游戏屏-飞行射击游戏（9）探索道具系统]]></title><link>https://blog.youkuaiyun.com/vvind/article/details/135379365</link><guid>https://blog.youkuaiyun.com/vvind/article/details/135379365</guid><author>vvind</author><pubDate>Thu, 04 Jan 2024 10:11:30 +0800</pubDate><description><![CDATA[因为你做的时候才会发现，道具可能会影响各种各样的数据，全世界的任何数据都可能需要访问到，就看你希望道具是什么效果了。不同道具的差异是很大的，为此，我们要为每种道具定义一个新的类。我们可以通过前面 IntervalAniTimer_t  来控制 玩家使用道具的间隔，道具的数量是通过玩家自己捡拾的方式来控制。另外，我们加一点小小的游戏设定——捡到的道具先进入出放在链表里面，只能按顺序使用——这样，可以增加一点点小小的策略性。2、未捡拾的道具管理。类似的方法，还可以加上火力加强道具，玩家导弹道具等等。]]></description><category></category></item></channel></rss>