<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[SmileBasic的博客]]></title><description><![CDATA[路过人间]]></description><link>https://blog.youkuaiyun.com/SmileBasic</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; SmileBasic]]></copyright><item><title><![CDATA[C语言学习记录20240626]]></title><link>https://blog.youkuaiyun.com/SmileBasic/article/details/139996137</link><guid>https://blog.youkuaiyun.com/SmileBasic/article/details/139996137</guid><author>SmileBasic</author><pubDate>Wed, 26 Jun 2024 18:41:43 +0800</pubDate><description><![CDATA[向量还有一种记法是以大小和方向表示，这里的方向通常为向量线与 X 正轴的夹角，X 正轴逆时针方向夹角为正，顺时针方向夹角为负。由于屏幕坐标左上角为原点，屏幕范围为正轴，纵轴与通常坐标轴方向相反，Allegro 函数 al_rotate_transform 应用转换矩阵旋转时，弧度为正则是顺时针，为负则是逆时针。为了便于计算，假设飞船初始朝向与 X 轴平行，绘制初始画面时，飞船朝上与 Y 轴平行，向量夹角为负 90 度，右转 30 度向前行驶一段距离，则飞船终点相对于初始坐标变化 X 坐标为。]]></description><category></category></item><item><title><![CDATA[C语言学习记录20240622]]></title><link>https://blog.youkuaiyun.com/SmileBasic/article/details/139873946</link><guid>https://blog.youkuaiyun.com/SmileBasic/article/details/139873946</guid><author>SmileBasic</author><pubDate>Sat, 22 Jun 2024 08:57:34 +0800</pubDate><description><![CDATA[项目有一些描述如需要绘制飞船、彗星、子弹，需要响应按键实现飞船加速、减速、转向、开火，需要绘制弹道，需要实现彗星旋转、缩放，需要碰撞检测，需要显示计分。这里 C 语言实现封装，我见过的一种是结构体中的方法用函数指针表示，还有一种是结构体模拟类只负责保存属性，方法函数单独写，但函数必须有一个参数是指向模拟类结构体变量的指针。C 语言虽然没有直接的类实现，但可以通过结构体封装属性变量和方法，结构体也能通过嵌套实现继承效果，至于多态，指针是不是更自由。进展缓慢，只写了飞船的显示部分，写的时候查漏补缺挺好。]]></description><category></category></item><item><title><![CDATA[C语言学习记录20240620]]></title><link>https://blog.youkuaiyun.com/SmileBasic/article/details/139828453</link><guid>https://blog.youkuaiyun.com/SmileBasic/article/details/139828453</guid><author>SmileBasic</author><pubDate>Thu, 20 Jun 2024 11:56:16 +0800</pubDate><description><![CDATA[做成固定模板也挺好，Dev-C++ 点击 File -> New -> Project Template，下次新建项目可以直接选择，删除模板可以直接在安装目录 Dev-Cpp/Templates/ 删除相关模板和包含的源文件。文档置顶，得一直查，Allegro 文档：https://liballeg.org/a5docs/trunk/加载，相应的需要头文件。]]></description><category></category></item><item><title><![CDATA[Dev-C++配置Allegro环境]]></title><link>https://blog.youkuaiyun.com/SmileBasic/article/details/139769612</link><guid>https://blog.youkuaiyun.com/SmileBasic/article/details/139769612</guid><author>SmileBasic</author><pubDate>Tue, 18 Jun 2024 12:21:33 +0800</pubDate><description><![CDATA[下载 Allegro 静态链接库并解压，如 allegro-x86_64-w64-mingw32-gcc-13.2.0-posix-seh-static-5.2.9.0.zip https://github.com/liballeg/allegro5/releases。不态熟悉 IDE，所以简单记录下来。main.c 中输入示例代码 https://github.com/j3soon/Allegro5Template/blob/master/docs/main.c，F11 编译运行查看效果。]]></description><category></category></item><item><title><![CDATA[C语言学习记录20240609]]></title><link>https://blog.youkuaiyun.com/SmileBasic/article/details/139566656</link><guid>https://blog.youkuaiyun.com/SmileBasic/article/details/139566656</guid><author>SmileBasic</author><pubDate>Sun, 09 Jun 2024 22:14:29 +0800</pubDate><description><![CDATA[节点数不确定，也就不能在声明时确定变量占用的内存大小，需要在堆中动态分配内存 malloc，动态分配内存必须有相应的手动回收操作 free。树结构，用结构体构造节点，有子节点，声明结构体时有调用自身，形成递归结构，结构体采用别名命名时必须有结构体名。命名：根据功能将程序命名为 UrlsToTree，太长不方便输入，太短容易重名，最后命名为 u2tr。主要缺陷：没有考虑网址列表中不同根网址情况，如不同协议、不同域名、不同端口。需要转义网址中影响 json 输出结果的特殊符号，如双引号、反斜线。]]></description><category></category></item><item><title><![CDATA[C语言学习记录]]></title><link>https://blog.youkuaiyun.com/SmileBasic/article/details/139319512</link><guid>https://blog.youkuaiyun.com/SmileBasic/article/details/139319512</guid><author>SmileBasic</author><pubDate>Thu, 30 May 2024 12:23:21 +0800</pubDate><description><![CDATA[获取数组长度，先计算数组的总字节大小，再除以单个元素字节数。与 python 不同的是，C 语言中数组存储的元素的类型和大小都是一样的。C 语言中，字符串实际都是字符数组，且字符串最后一个元素为 \0。和换行符这两个字符。而 strlen 计算字符串长度时，是排除结尾的。，实际 search_for 指向的字符数组为。通过 fgets 获取输入字符串，假如输入。结尾，以便获取子串的长度，但测试不以。倒数第二个元素，替换后字符串为。strstr 要求查找的子串以。]]></description><category></category></item><item><title><![CDATA[wxPython和pycairo练习记录19]]></title><link>https://blog.youkuaiyun.com/SmileBasic/article/details/138755595</link><guid>https://blog.youkuaiyun.com/SmileBasic/article/details/138755595</guid><author>SmileBasic</author><pubDate>Sun, 12 May 2024 14:59:38 +0800</pubDate><description><![CDATA[pygame.mixer.Channel 这里的声道和音频文件的声道含义不一样，这里的声道是指播放通道，0 为第一个声道。在 wxPython 中 wx.adv.Sound 只能播放 WAV 格式的文件，或者在 UI 中调用 wx.media.MediaCtrl 控件，但素材里的音频还有 OGG 格式的，没法用 wxPython 在后台播放。测试的时候，只有设置同步播放 wx.adv.SOUND_SYNC 才有声音，后面再修改，所有代码都完成了如果还是这样就再创建一个线程来播放声音。]]></description><category></category></item><item><title><![CDATA[wxPython和pycairo练习记录18]]></title><link>https://blog.youkuaiyun.com/SmileBasic/article/details/138707254</link><guid>https://blog.youkuaiyun.com/SmileBasic/article/details/138707254</guid><author>SmileBasic</author><pubDate>Sat, 11 May 2024 11:28:00 +0800</pubDate><description><![CDATA[Font.py 中 Font 类居然继承 Spritesheet 类来加载字符对应图片，还和 Sprites 类的功能差不多，总感觉哪里不太对。基本都没法写测试啊，后面待完成的是声音、鼠标键盘输入、碰撞检测、实体和主要显示类：面板、关卡、菜单、暂停画面。Camera.py 摄像机，这里的功能是记录坐标，跟随实体移动坐标。]]></description><category></category></item><item><title><![CDATA[wxPython和pycairo练习记录17]]></title><link>https://blog.youkuaiyun.com/SmileBasic/article/details/138627385</link><guid>https://blog.youkuaiyun.com/SmileBasic/article/details/138627385</guid><author>SmileBasic</author><pubDate>Thu, 09 May 2024 19:27:54 +0800</pubDate><description><![CDATA[按理说素材图片虽然是位图但因为是纯色，手动缩放显示都没问题，不知道为什么会这样，网上解释说是"Cairo 默认使用线性插值算法进行缩放操作，而线性插值会导致图像像素的颜色被平滑地混合，从而造成图像的模糊效果。不要当过程完美主义者，很容易自我攻击。素材中的 characters.gif，用 wx.Image 加载后，调用 GetAlpha 方法发现得到不正确的透明通道值，而且 HasAlpha 得到的结果是 False，因为没有正确解释透明通道数据，RGB 数据也错了，加载后整个图片都变成了粉色。]]></description><category></category></item><item><title><![CDATA[wxPython和pycairo练习记录16]]></title><link>https://blog.youkuaiyun.com/SmileBasic/article/details/138549966</link><guid>https://blog.youkuaiyun.com/SmileBasic/article/details/138549966</guid><author>SmileBasic</author><pubDate>Wed, 08 May 2024 00:14:53 +0800</pubDate><description><![CDATA[先找出没有依赖其他文件的代码，可以作为后续其他代码的零件，这里选择 https://github.com/mx0c/super-mario-python/blob/master/classes/Spritesheet.py。总之，将图像存储在 Surface 中的主要目的是为了提供一个统一的、灵活的、可移植的绘图接口，使得开发者可以更容易地进行绘图操作，并且可以轻松地将相同的绘图操作应用于不同的输出目标。在 Cairo 中，一切都被视为绘图操作，即使是对图像的修改也被视为在绘图上下文中进行的操作。]]></description><category></category></item><item><title><![CDATA[wxPython和pycairo练习记录15]]></title><link>https://blog.youkuaiyun.com/SmileBasic/article/details/134213630</link><guid>https://blog.youkuaiyun.com/SmileBasic/article/details/134213630</guid><author>SmileBasic</author><pubDate>Sat, 04 Nov 2023 01:40:26 +0800</pubDate><description><![CDATA[像素：是指在由一个数字序列表示的图像中的一个最小单位，称为像素。这里的像素并非我们平时所说的眼睛看到的点，它更像是屏幕上的一个网格，不同的显示设备可能有不同大小的格子。在 Python 中，我们可以方便地通过一些库读取图像的某个像素值。这个例子中，返回的像素值是 RGBA 数值元组。]]></description><category></category></item><item><title><![CDATA[wxPython和pycairo练习记录14]]></title><link>https://blog.youkuaiyun.com/SmileBasic/article/details/134193488</link><guid>https://blog.youkuaiyun.com/SmileBasic/article/details/134193488</guid><author>SmileBasic</author><pubDate>Thu, 02 Nov 2023 23:42:23 +0800</pubDate><description><![CDATA[继续之前的坦克游戏。碰撞检测技术像什么四叉树、凸包，看不懂啊，所以先从成熟的 pygame 框架里抠出几个能用到的。之前写坦克游戏并没有明确组合多个 Sprite 对象，还是先只考虑独立的 Sprite 吧。这样，需要用到和改写的方法只有 `collide_rect、collide_rect_ratio、collide_circle、collide_circle_ratio、collide_mask`。]]></description><category></category></item><item><title><![CDATA[嘿，别蹉跎]]></title><link>https://blog.youkuaiyun.com/SmileBasic/article/details/131621288</link><guid>https://blog.youkuaiyun.com/SmileBasic/article/details/131621288</guid><author>SmileBasic</author><pubDate>Sun, 09 Jul 2023 12:01:47 +0800</pubDate><description><![CDATA[小说里写，配角成功降魔99次，结果很厉害的时候，俯视众生的时候，第100次出手，嘎了。从结果看，第1次和第100次都有可能失败，而每个人的结果都只有死亡。结果就像孩子的玩具，堆在角落里，越积越多，从碍眼到放不下，但还是一个也舍不得扔，总觉得哪天会想玩，其实几年也不会翻出来。你可以根据你的知识和数据来更新你的概率，但你永远无法确定你的概率是正确的，除非你能观察到所有可能的结果。学习也是这样，什么都想学，遇到不会的就顺着那条路走下去，总觉得这些知识哪天会用到，结果岔路越走越多，越走越远，早已忘了最初想干什么。]]></description><category></category></item><item><title><![CDATA[Ruby 和 Python 语法对应参照列表]]></title><link>https://blog.youkuaiyun.com/SmileBasic/article/details/130965186</link><guid>https://blog.youkuaiyun.com/SmileBasic/article/details/130965186</guid><author>SmileBasic</author><pubDate>Wed, 31 May 2023 11:22:26 +0800</pubDate><description><![CDATA[为了读一本用 Ruby 描述的书，而又不想专门学习 Ruby 的语法，故有了这部分内容整理。]]></description><category></category></item><item><title><![CDATA[C语言编译器cc典型用法]]></title><link>https://blog.youkuaiyun.com/SmileBasic/article/details/130453530</link><guid>https://blog.youkuaiyun.com/SmileBasic/article/details/130453530</guid><author>SmileBasic</author><pubDate>Mon, 01 May 2023 05:56:43 +0800</pubDate><description><![CDATA[cc-std=c99-Wallhello.h-o helloC99（或C语言标准第三版）是C语言的一个更新版本，相对于早期版本（如C89或ANSI C）具有以下一些不同之处：可变长度数组（Variable-length arrays）：允许数组的长度在运行时动态分配，而不是在编译时确定。这为编写更加灵活的代码提供了更多的可能性。复合文字（Compound literals）：允许创建一个临时的、匿名的复合类型对象，该对象可以在程序中使用。这样可以避免创建一个显式命名的对象，从而使代码更加简洁。]]></description><category></category></item><item><title><![CDATA[wxPython和pycairo练习记录13]]></title><link>https://blog.youkuaiyun.com/SmileBasic/article/details/129368863</link><guid>https://blog.youkuaiyun.com/SmileBasic/article/details/129368863</guid><author>SmileBasic</author><pubDate>Mon, 06 Mar 2023 19:26:56 +0800</pubDate><description><![CDATA[之前虽然通过设置窗口样式去掉了标题栏，但是背景看起来还是有些碍眼。通过 SetTransparent 只能调整整体透明度，文字和背景都透明了。希望实现的效果是背景透明，而文字不透明。]]></description><category></category></item><item><title><![CDATA[wxPython和pycairo练习记录12]]></title><link>https://blog.youkuaiyun.com/SmileBasic/article/details/129337740</link><guid>https://blog.youkuaiyun.com/SmileBasic/article/details/129337740</guid><author>SmileBasic</author><pubDate>Sat, 04 Mar 2023 18:49:12 +0800</pubDate><description><![CDATA[过年在家刷视频号直播时发现弹幕互动游戏，挺有意思的，刚好诠释了反射的用法。想要自己也做一个弹幕游戏，于是就有了这个基本的需求，先让弹幕滚动显示出来，直播时可以当作小挂件。]]></description><category></category></item><item><title><![CDATA[wordpress lnmp环境配置记录]]></title><link>https://blog.youkuaiyun.com/SmileBasic/article/details/129193289</link><guid>https://blog.youkuaiyun.com/SmileBasic/article/details/129193289</guid><author>SmileBasic</author><pubDate>Fri, 24 Feb 2023 08:14:01 +0800</pubDate><description><![CDATA[配置nginx源安装nginx-1.16版本yum install nginx，会默认创建nginx:nginx，组和账户。文件默认位置:二进制文件在/usr/sbin/nginx配置文件夹在/etc/nginx/log文件夹在/var/log/nginxyum安装会自动创建/usr/lib/systemd/system/nginx.service，可以用systemctl 启动停止。]]></description><category></category></item><item><title><![CDATA[事件与信号]]></title><link>https://blog.youkuaiyun.com/SmileBasic/article/details/128197704</link><guid>https://blog.youkuaiyun.com/SmileBasic/article/details/128197704</guid><author>SmileBasic</author><pubDate>Tue, 06 Dec 2022 09:58:52 +0800</pubDate><description><![CDATA[仔细来看，事件与信号其实并无多大差别，从我们对其需求上来说，都只要能注册事件或信号响应函数，在事件或信号产生时能够被通知到即可。但有一项区别在于，事件处理函数的返回值是有意义的，我们要根据这个返回值来确定是否还要继续事件的处理]]></description><category></category></item><item><title><![CDATA[Python反射]]></title><link>https://blog.youkuaiyun.com/SmileBasic/article/details/128164231</link><guid>https://blog.youkuaiyun.com/SmileBasic/article/details/128164231</guid><author>SmileBasic</author><pubDate>Sat, 03 Dec 2022 17:51:23 +0800</pubDate><description><![CDATA[反射，一种基于字符串的事件驱动]]></description><category></category></item></channel></rss>