• 请不要在回答技术问题时复制粘贴 AI 生成的内容
chai2010
V2EX  ›  程序员

凹语言支持 Wasm4 游戏平台

  •  2
     
  •   chai2010 ·
    chai2010 · Aug 25, 2024 · 3198 views
  •   You need to sign in to view this topic
    This topic created in 789 days ago, the information mentioned may be changed or developed.

    凹语言是国内首个面向 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 replies  •  2024-08-27 12:00:27 +08:00
    CC11001100
        1
    CC11001100  
       Aug 25, 2024
    牛啊牛啊
    catamaran
        2
    catamaran  
       Aug 26, 2024
    从开始就读 ao 语言,直到最后截图看到 wa-lang😂
    icyalala
        3
    icyalala  
       Aug 27, 2024
    每次读到凹语言,都会念“aoyuyan”,几乎没有几个人会读 wa 。
    建议改成蛙语言,并且支持 🐸 作为扩展名,参考: https://docs.modular.com/mojo/faq#why-does-mojo-have-the--file-extension
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2804 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 01:28 · PVG 09:28 · LAX 18:28 · JFK 21:28
    ♥ Do have faith in what you're doing.