凹语言支持Wasm4游戏平台
- 时间:2024-08-25
- 撰稿:凹语言 开发组
- 转载请注明原文链接:https://wa-lang.org/smalltalk/st0046.html
凹语言是国内首个面向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 代码如下:
wa
import "syscall/wasm4"
首先是导入syscall/wasm4
包,然后定义Update函数:
wa
global smiley = [8]byte{...}
#wa:export update
func Update {
wasm4.SetDrawColors(2, 0, 0, 0)
wasm4.Text("Hello from Wa-lang!", 10, 10)
gamepad := wasm4.GetGamePad1()
if gamepad&wasm4.BUTTON_1 != 0 {
wasm4.SetDrawColors(4, 0, 0, 0)
}
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