Skip to content

Commit 73ad0ac

Browse files
committed
zz
1 parent 82b6c4f commit 73ad0ac

File tree

4 files changed

+76
-0
lines changed

4 files changed

+76
-0
lines changed

docs/public/st0046-01.png

4.78 KB
Loading

docs/public/st0046-02.png

6.94 KB
Loading

docs/smalltalk/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ title: 碎碎念
66

77
“碎碎念”是本站发布日常随笔的栏目,内容包括项目进展、小点子、有趣的讨论等。
88

9+
- 2024-08-25: [凹语言支持Wasm4游戏平台](st0046.md)
910
- 2024-08-03: [凹语言开源2周年](st0045.md)
1011
- 2024-08-01: [凹语言后端实现 100% 自研](st0044.md)
1112
- 2024-06-21: [凹语言入选 Gitee GVP 项目](st0043.md)

docs/smalltalk/st0046.md

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# 凹语言支持Wasm4游戏平台
2+
3+
- 时间:2024-08-25
4+
- 撰稿:凹语言 开发组
5+
- 转载请注明原文链接:[https://wa-lang.org/smalltalk/st0046.html](https://wa-lang.org/smalltalk/st0046.html)
6+
7+
---
8+
9+
凹语言是国内首个面向WebAssembly设计的通用编程语言,也是国内首个被CNCF基金会wasm全景图收录的开源编程语言。在2022年刚刚开源时,凹语言开发组以贪吃蛇为例做了第一个案例。具体请参考:https://wa-lang.org/smalltalk/st0018.html
10+
11+
![](/st0018-01.png)
12+
13+
在线试玩地址:https://wa-lang.org/wa/snake/
14+
15+
## 凹语言支持 Wasm4 平台
16+
17+
Wasm4 是一个使用 WebAssembly 构建复古风格游戏的框架。它提供了一个 160 x 160 像素、64K 内存的游戏主机,内存少于 64K。通过使用 WebAssembly 技术使得开发的游戏能够在所有网页浏览器和一些低端设备上运行。随着凹语言支持Wasm4平台,现在开发者也能使用凹语言轻松开发Wasm4游戏。
18+
19+
以下是Wasm4贪吃蛇的效果图:
20+
21+
![](/st0046-01.png)
22+
23+
实现代码在 `waroot/examples/w4-snake` 目录下。
24+
25+
## Wasm4 快速入门
26+
27+
先安装 wa-v0.15.0 命令行程序,然后执行以下命令:
28+
29+
```
30+
$ wa init -wasm4
31+
$ tree hello
32+
hello
33+
├── README.md
34+
├── src
35+
│ └── main.wa
36+
└── wa.mod
37+
```
38+
39+
在 hello 目录生成一个 Wasm4 版本的你好世界例子。其中 main.wa 代码如下:
40+
41+
```wa
42+
import "syscall/wasm4"
43+
```
44+
45+
首先是导入`syscall/wasm4`包,然后定义Update函数:
46+
47+
```wa
48+
global smiley = [8]byte{...}
49+
50+
#wa:export update
51+
func Update {
52+
wasm4.SetDrawColors(2)
53+
wasm4.Text("Hello from Wa-lang!", 10, 10)
54+
55+
gamepad := wasm4.GetGamePad1()
56+
if gamepad&wasm4.BUTTON_1 != 0 {
57+
wasm4.SetDrawColors(4)
58+
}
59+
60+
wasm4.Blit(smiley[:], 76, 76, 8, 8, wasm4.BLIT_1BPP)
61+
wasm4.Text("Press X to blink", 16, 90)
62+
}
63+
```
64+
65+
首先是调用`wasm4.SetDrawColors`设置绘制颜色,然后调用`wasm4.Text`在屏幕的指定坐标绘制文字。然后根据`wasm4.GetGamePad1()`获得游戏按键状态,并有条件调整绘制颜色。最后`wasm4.Blit()`调用绘制一个笑脸精灵。
66+
67+
进入hello目录编译和执行:
68+
69+
```
70+
$ wa build -target=wasm4
71+
$ w4 run output/hello.wasm
72+
```
73+
74+
![](/st0046-02.png)
75+

0 commit comments

Comments
 (0)