wxPython和pycairo练习记录
文章平均质量分 76
学习 wxPython 和 pycairo 相关记录,主要内容:布局管理、事件处理、控件、面向对象、单元测试、自绘、软件工程等,以后也许会向 C++ wxWidgets Cairo 迁移。
SmileBasic
这个作者很懒,什么都没留下…
展开
-
wxPython和pycairo练习记录19
pygame.mixer.Channel 这里的声道和音频文件的声道含义不一样,这里的声道是指播放通道,0 为第一个声道。在 wxPython 中 wx.adv.Sound 只能播放 WAV 格式的文件,或者在 UI 中调用 wx.media.MediaCtrl 控件,但素材里的音频还有 OGG 格式的,没法用 wxPython 在后台播放。测试的时候,只有设置同步播放 wx.adv.SOUND_SYNC 才有声音,后面再修改,所有代码都完成了如果还是这样就再创建一个线程来播放声音。原创 2024-05-12 14:59:38 · 665 阅读 · 1 评论 -
wxPython和pycairo练习记录18
Font.py 中 Font 类居然继承 Spritesheet 类来加载字符对应图片,还和 Sprites 类的功能差不多,总感觉哪里不太对。基本都没法写测试啊,后面待完成的是声音、鼠标键盘输入、碰撞检测、实体和主要显示类:面板、关卡、菜单、暂停画面。Camera.py 摄像机,这里的功能是记录坐标,跟随实体移动坐标。原创 2024-05-11 11:28:00 · 208 阅读 · 1 评论 -
wxPython和pycairo练习记录17
按理说素材图片虽然是位图但因为是纯色,手动缩放显示都没问题,不知道为什么会这样,网上解释说是"Cairo 默认使用线性插值算法进行缩放操作,而线性插值会导致图像像素的颜色被平滑地混合,从而造成图像的模糊效果。不要当过程完美主义者,很容易自我攻击。素材中的 characters.gif,用 wx.Image 加载后,调用 GetAlpha 方法发现得到不正确的透明通道值,而且 HasAlpha 得到的结果是 False,因为没有正确解释透明通道数据,RGB 数据也错了,加载后整个图片都变成了粉色。原创 2024-05-09 19:27:54 · 651 阅读 · 0 评论 -
wxPython和pycairo练习记录16
先找出没有依赖其他文件的代码,可以作为后续其他代码的零件,这里选择 https://github.com/mx0c/super-mario-python/blob/master/classes/Spritesheet.py。总之,将图像存储在 Surface 中的主要目的是为了提供一个统一的、灵活的、可移植的绘图接口,使得开发者可以更容易地进行绘图操作,并且可以轻松地将相同的绘图操作应用于不同的输出目标。在 Cairo 中,一切都被视为绘图操作,即使是对图像的修改也被视为在绘图上下文中进行的操作。原创 2024-05-08 00:14:53 · 216 阅读 · 1 评论 -
wxPython和pycairo练习记录15
像素:是指在由一个数字序列表示的图像中的一个最小单位,称为像素。这里的像素并非我们平时所说的眼睛看到的点,它更像是屏幕上的一个网格,不同的显示设备可能有不同大小的格子。在 Python 中,我们可以方便地通过一些库读取图像的某个像素值。这个例子中,返回的像素值是 RGBA 数值元组。原创 2023-11-04 01:40:26 · 189 阅读 · 0 评论 -
wxPython和pycairo练习记录14
继续之前的坦克游戏。碰撞检测技术像什么四叉树、凸包,看不懂啊,所以先从成熟的 pygame 框架里抠出几个能用到的。之前写坦克游戏并没有明确组合多个 Sprite 对象,还是先只考虑独立的 Sprite 吧。这样,需要用到和改写的方法只有 `collide_rect、collide_rect_ratio、collide_circle、collide_circle_ratio、collide_mask`。原创 2023-11-02 23:42:23 · 106 阅读 · 0 评论 -
wxPython和pycairo练习记录13
之前虽然通过设置窗口样式去掉了标题栏,但是背景看起来还是有些碍眼。通过 SetTransparent 只能调整整体透明度,文字和背景都透明了。希望实现的效果是背景透明,而文字不透明。原创 2023-03-06 19:26:56 · 341 阅读 · 0 评论 -
wxPython和pycairo练习记录12
过年在家刷视频号直播时发现弹幕互动游戏,挺有意思的,刚好诠释了反射的用法。想要自己也做一个弹幕游戏,于是就有了这个基本的需求,先让弹幕滚动显示出来,直播时可以当作小挂件。原创 2023-03-04 18:49:12 · 265 阅读 · 0 评论 -
wxPython和pycairo练习记录11
了解事件机制是学习 wxPython 绕不过去的坎,结合各种资料和个人理解整理了一下,如果有问题请留言指出。原创 2022-10-14 14:11:01 · 390 阅读 · 0 评论 -
wxPython和pycairo练习记录10
一开始考虑不全面,后面写的时候就只有一个心思,烂代码,完成就好。代码创建控件实例是个痛苦的过程,因为做的基本都是重复的事,能用循环的最好写进循环,熟悉控件后推荐用 wxFromBuilder。原创 2022-09-02 19:10:35 · 388 阅读 · 0 评论 -
wxPython和pycairo练习记录9
想要实现的效果是,同时按下多个方向,无论松开或按下其他键,总是响应剩余最近按下的键,这里直接用列表存储处在按下状态的按键代码。测试 wxPython 按下多个方向后松开最近按下的,之前保持按住的会失效。那就不能靠按键直接改变坐标,只改变速度方向,然后坐标的计算移动交给定时器刷新。射击按键行为也交给定时器,只改变状态,不执行操作。效果看起来还不错。之后可以看到,坦克和砖墙碰撞时的回弹问题也没有了。...原创 2022-08-26 10:32:57 · 329 阅读 · 0 评论 -
wxPython和pycairo练习记录8
经过障碍物的编写,发现需要停止前进并重新梳理一下。1.新的检测项加入时,已经在向混乱发展。是时候用上封装变化的编程工具,用策略模式或状态模式重写。2.显示,在基类引入层级和优先级,不同层低层级先绘制,同层高优先级先绘制。3.范围的碰撞和本身的碰撞的作用顺序。还有像已经实现的碉堡,只有一个外层碰撞区域,如果要多加几层呢,最外层出现坦克,射速为1,再近一层射速为5,最近一层射速达到20。原创 2022-08-20 23:14:36 · 228 阅读 · 0 评论 -
wxPython和pycairo练习记录7
继续写障碍,选几个典型的来写。有个问题,有调用图片文件的类,每次生成新实例,都重新加载一次图片。应该把素材统一加载为全局变量,具体使用只需要引用素材变量。积重难返,记住这个教训,以后写其他的再注意吧。...原创 2022-08-19 01:15:54 · 336 阅读 · 0 评论 -
wxPython和pycairo练习记录6
这次想要实现障碍物。原创 2022-08-18 03:22:35 · 154 阅读 · 0 评论 -
wxPython和pycairo练习记录5
先不管稀烂的坦克碰撞检测,开始添加武器系统。原创 2022-08-17 01:22:46 · 115 阅读 · 0 评论 -
wxPython和pycairo练习记录4
继续写碰撞检测。原创 2022-08-16 07:15:00 · 198 阅读 · 0 评论 -
wxPython和pycairo练习记录3
现在的感觉像是学武功的人,对着一本秘籍瞎练,没有师父,也没有参照,不知对错。之前写的有很多混乱的地方,比如主 fps 对对象 fps 的作用,比如 MovieClip 对象 surface 的宽高及对继承方法 GetWidth 的影响,等等没有影响现有结果的地方。唯一检验的标准是,实现出想要的效果。这次想实现的是,在四个角生成敌方坦克,自动行驶,相互碰撞转向。...原创 2022-08-15 14:24:13 · 242 阅读 · 0 评论 -
wxPython和pycairo练习记录2
因为要实现图像的显示和交互,今天添加两个基础的图像容器类。原创 2022-08-14 13:26:16 · 803 阅读 · 0 评论 -
wxPython和pycairo练习记录1
学习,分为学和习,学完了不练习,让大脑觉得不重要,会忘记。所以,我决定练习并记录 wxPython 和 pycairo 的代码编写,如果你也想试试请自行配置环境。wxPython官网:https://www.wxpython.org/pycairo官网:https://cairographics.org/pycairo/本机环境:WIN10因为没有相关完整项目经验,所以不能把全局都设计好,先从基本的迭代。...原创 2022-08-13 20:12:58 · 158 阅读 · 0 评论