V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
chai2010
V2EX  ›  程序员

凹语言支持 Wasm4 游戏平台

  •  2
     
  •   chai2010 ·
    chai2010 · 125 天前 · 2277 次点击
    这是一个创建于 125 天前的主题,其中的信息可能已经有所发展或是发生改变。

    凹语言是国内首个面向 WebAssembly 设计的通用编程语言,也是国内首个被 CNCF 基金会 wasm 全景图收录的开源编程语言。在 2022 年刚刚开源时,凹语言开发组以贪吃蛇为例做了第一个案例。具体请参考: https://wa-lang.org/smalltalk/st0018.html

    在线试玩地址: https://wa-lang.org/wa/snake/

    Wasm4 版本的贪吃蛇

    Wasm4 是一个使用 WebAssembly 构建复古风格游戏的框架。它提供了一个 160 x 160 像素、64K 内存的游戏主机。通过使用 WebAssembly 技术使得开发的游戏能够在所有网页浏览器和一些低端设备上运行。随着凹语言支持 Wasm4 平台,现在开发者也能使用凹语言轻松开发 Wasm4 游戏。

    以下是 Wasm4 贪吃蛇的效果图:

    实现代码在 waroot/examples/w4-snake 目录下。

    Wasm4 快速入门

    先安装 wa-v0.15.0 命令行程序,然后执行以下命令:

    $ wa init -wasm4
    $ tree hello
    hello
    ├── README.md
    ├── src
    │   └── main.wa
    └── wa.mod
    

    在 hello 目录生成一个 Wasm4 版本的你好世界例子。其中 main.wa 代码如下:

    import "syscall/wasm4"
    

    首先是导入syscall/wasm4包,然后定义 Update 函数:

    global smiley = [8]byte{...}
    
    #wa:export update
    func Update {
    	wasm4.SetDrawColors(2)
    	wasm4.Text("Hello from Wa-lang!", 10, 10)
    
    	gamepad := wasm4.GetGamePad1()
    	if gamepad&wasm4.BUTTON_1 != 0 {
    		wasm4.SetDrawColors(4)
    	}
    
    	wasm4.Blit(smiley[:], 76, 76, 8, 8, wasm4.BLIT_1BPP)
    	wasm4.Text("Press X to blink", 16, 90)
    }
    

    首先是调用wasm4.SetDrawColors设置绘制颜色,然后调用wasm4.Text在屏幕的指定坐标绘制文字。然后根据wasm4.GetGamePad1()获得游戏按键状态,并有条件调整绘制颜色。最后wasm4.Blit()调用绘制一个笑脸精灵。

    进入 hello 目录编译和执行:

    $ wa build -target=wasm4
    $ w4 run output/hello.wasm
    

    3 条回复    2024-08-27 12:00:27 +08:00
    CC11001100
        1
    CC11001100  
       124 天前
    牛啊牛啊
    catamaran
        2
    catamaran  
       124 天前
    从开始就读 ao 语言,直到最后截图看到 wa-lang😂
    icyalala
        3
    icyalala  
       123 天前
    每次读到凹语言,都会念“aoyuyan”,几乎没有几个人会读 wa 。
    建议改成蛙语言,并且支持 🐸 作为扩展名,参考: https://docs.modular.com/mojo/faq#why-does-mojo-have-the--file-extension
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2856 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 09:08 · PVG 17:08 · LAX 01:08 · JFK 04:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.