mirror of
https://gitee.com/wa-lang/wa.git
synced 2025-12-06 17:19:15 +08:00
瓦力四像门试营业
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"wa-lang.org/wa/internal/ast"
|
||||
"wa-lang.org/wa/internal/token"
|
||||
)
|
||||
|
||||
// 注释中的指令
|
||||
@@ -53,44 +54,55 @@ func ParseCommentInfo(docList ...*ast.CommentGroup) (info CommentInfo) {
|
||||
return
|
||||
}
|
||||
for _, comment := range doc.List {
|
||||
if !strContainPrefix(comment.Text, "#wa:", "//wa:") {
|
||||
if !strContainPrefix(comment.Text, token.K_X_wa, token.K_X_wz) {
|
||||
continue
|
||||
}
|
||||
parts := strings.Fields(comment.Text)
|
||||
switch parts[0] {
|
||||
case "#wa:build", "//wa:build":
|
||||
case token.K_X_wa_build, token.K_X_wz_build:
|
||||
if len(parts) >= 2 {
|
||||
info.BuildIgnore = parts[1] == "ignore"
|
||||
switch parts[0] {
|
||||
case token.K_X_wa_build:
|
||||
if s := parts[1]; s == token.K_X_wa_build_arg_ignore {
|
||||
info.BuildIgnore = true
|
||||
}
|
||||
case token.K_X_wz_build:
|
||||
if s := parts[1]; s == token.K_X_wz_build_arg_ignore {
|
||||
info.BuildIgnore = true
|
||||
}
|
||||
default:
|
||||
panic("unreachable")
|
||||
}
|
||||
}
|
||||
info.BuildTags = parts[1:]
|
||||
case "#wa:linkname", "//wa:linkname":
|
||||
case token.K_X_wa_linkname, token.K_X_wz_linkname:
|
||||
if len(parts) >= 2 {
|
||||
info.LinkName = strings.Join(parts[1:], " ")
|
||||
}
|
||||
case "#wa:export", "//wa:export":
|
||||
case token.K_X_wa_export, token.K_X_wz_export:
|
||||
if len(parts) >= 2 {
|
||||
info.ExportName = parts[1]
|
||||
}
|
||||
case "#wa:import", "//wa:import":
|
||||
case token.K_X_wa_import, token.K_X_wz_import:
|
||||
if len(parts) >= 3 {
|
||||
info.ImportName[0] = parts[1]
|
||||
info.ImportName[1] = parts[2]
|
||||
}
|
||||
case "#wa:force_register", "//wa:force_register":
|
||||
case token.K_X_wa_force_register, token.K_X_wz_force_register:
|
||||
info.ForceRegister = true
|
||||
case "#wa:runtime_getter", "//wa:runtime_getter":
|
||||
case token.K_X_wa_runtime_getter, token.K_X_wz_runtime_getter:
|
||||
info.RuntimeGetter = true
|
||||
case "#wa:runtime_setter", "//wa:runtime_setter":
|
||||
case token.K_X_wa_runtime_setter, token.K_X_wz_runtime_setter:
|
||||
info.RuntimeSetter = true
|
||||
case "#wa:runtime_sizer":
|
||||
case token.K_X_wa_runtime_sizer, token.K_X_wz_runtime_sizer:
|
||||
info.RuntimeSizer = true
|
||||
|
||||
case "#wa:generic":
|
||||
case token.K_X_wa_generic, token.K_X_wz_generic:
|
||||
info.Generic = append(info.Generic, parts[1:]...)
|
||||
case "#wa:operator":
|
||||
case token.K_X_wa_operator, token.K_X_wz_operator:
|
||||
info.Operator = append(info.Operator, parts[1:])
|
||||
|
||||
case "#wa:embed":
|
||||
case token.K_X_wa_embed, token.K_X_wz_embed:
|
||||
if len(parts) >= 2 {
|
||||
info.Embed = parts[1]
|
||||
}
|
||||
|
||||
@@ -9,6 +9,24 @@ const (
|
||||
K_dot = "."
|
||||
)
|
||||
|
||||
const (
|
||||
K_X_wa = "#wa:"
|
||||
K_X_wa_build = "#wa:build"
|
||||
|
||||
K_X_wa_linkname = "#wa:linkname"
|
||||
K_X_wa_export = "#wa:export"
|
||||
K_X_wa_import = "#wa:import"
|
||||
K_X_wa_force_register = "#wa:force_register"
|
||||
K_X_wa_runtime_getter = "#wa:runtime_getter"
|
||||
K_X_wa_runtime_setter = "#wa:runtime_setter"
|
||||
K_X_wa_runtime_sizer = "#wa:runtime_sizer"
|
||||
K_X_wa_generic = "#wa:generic"
|
||||
K_X_wa_operator = "#wa:operator"
|
||||
K_X_wa_embed = "#wa:embed"
|
||||
|
||||
K_X_wa_build_arg_ignore = "ignore"
|
||||
)
|
||||
|
||||
const (
|
||||
K_break = "break"
|
||||
K_case = "case"
|
||||
|
||||
@@ -10,6 +10,24 @@ const (
|
||||
K_注 = "注" // 注: 注释
|
||||
)
|
||||
|
||||
const (
|
||||
K_X_wz = "#凹:"
|
||||
K_X_wz_build = "#凹:构建"
|
||||
|
||||
K_X_wz_linkname = "#凹:连接名"
|
||||
K_X_wz_export = "#凹:导出"
|
||||
K_X_wz_import = "#凹:引入"
|
||||
K_X_wz_force_register = "#凹:强制寄存器"
|
||||
K_X_wz_runtime_getter = "#凹:运行时获取器"
|
||||
K_X_wz_runtime_setter = "#凹:运行时设置器"
|
||||
K_X_wz_runtime_sizer = "#凹:运行时度量"
|
||||
K_X_wz_generic = "#凹:泛型"
|
||||
K_X_wz_operator = "#凹:运算符"
|
||||
K_X_wz_embed = "#凹:嵌入"
|
||||
|
||||
K_X_wz_build_arg_ignore = "忽略"
|
||||
)
|
||||
|
||||
const (
|
||||
K_引入 = "引入" // import
|
||||
|
||||
|
||||
@@ -16,14 +16,14 @@ const (
|
||||
|
||||
global ui: *UI = nil
|
||||
|
||||
//wa:export start
|
||||
#wa:export start
|
||||
func Start {
|
||||
seed := u32(478194671)
|
||||
|
||||
ui = NewUI(game.New(seed), palettes.IceCreamGB)
|
||||
}
|
||||
|
||||
//wa:export update
|
||||
#wa:export update
|
||||
func Update {
|
||||
ui.frame++
|
||||
ui.show()
|
||||
|
||||
1
waroot/examples/w4-hello-wz/.gitignore
vendored
Normal file
1
waroot/examples/w4-hello-wz/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/output
|
||||
9
waroot/examples/w4-hello-wz/Makefile
Normal file
9
waroot/examples/w4-hello-wz/Makefile
Normal file
@@ -0,0 +1,9 @@
|
||||
# 版权 @2025 wasm4-hello-wz 作者。保留所有权利。
|
||||
|
||||
run:
|
||||
go run ../../../main.go run .
|
||||
|
||||
dev:
|
||||
go run ../../../main.go build .
|
||||
|
||||
clean:
|
||||
4
waroot/examples/w4-hello-wz/README.md
Normal file
4
waroot/examples/w4-hello-wz/README.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# WASM4 中文编程例子
|
||||
|
||||
https://wasm4.org/docs/
|
||||
|
||||
28
waroot/examples/w4-hello-wz/src/主控.wz
Normal file
28
waroot/examples/w4-hello-wz/src/主控.wz
Normal file
@@ -0,0 +1,28 @@
|
||||
// 版权 @2025 瓦力四像门-入门 作者。保留所有权利。
|
||||
|
||||
引入 "门阀/瓦力四像门"
|
||||
|
||||
全局·笑脸 = [8]字节{
|
||||
0b11000011,
|
||||
0b10000001,
|
||||
0b00100100,
|
||||
0b00100100,
|
||||
0b00000000,
|
||||
0b00100100,
|
||||
0b10011001,
|
||||
0b11000011,
|
||||
}
|
||||
|
||||
#凹:导出 update
|
||||
函数·更新:
|
||||
瓦力四像门·设置绘图颜色(2, 0, 0, 0)
|
||||
瓦力四像门·绘制文本("Hello from Wa-lang!", 10, 10)
|
||||
|
||||
游戏手柄 := 瓦力四像门·读取控制键1()
|
||||
如果 游戏手柄&瓦力四像门·按键1 != 0:
|
||||
瓦力四像门·设置绘图颜色(4, 0, 0, 0)
|
||||
完毕
|
||||
|
||||
瓦力四像门·位图块传输(笑脸[:], 76, 76, 8, 8, 瓦力四像门·每像素1位)
|
||||
瓦力四像门·绘制文本("Press X to blink", 16, 90)
|
||||
完毕
|
||||
5
waroot/examples/w4-hello-wz/wa.mod
Normal file
5
waroot/examples/w4-hello-wz/wa.mod
Normal file
@@ -0,0 +1,5 @@
|
||||
# 版权 @2024 w4-hello 作者。保留所有权利。
|
||||
|
||||
name = "w4app"
|
||||
pkgpath = "w4app"
|
||||
target = "wasm4"
|
||||
@@ -190,10 +190,14 @@ var stdPkgs = []string{
|
||||
}
|
||||
|
||||
var wzStdPkgs = []string{
|
||||
"菠萝", // apple
|
||||
"书", // fmt
|
||||
"图像", // image
|
||||
"图像/颜色", // image/color
|
||||
"数学/随机数", // math/rand
|
||||
"假死门/画布", // js/canvas
|
||||
"菠萝", // apple
|
||||
"书", // fmt
|
||||
"图像", // image
|
||||
"图像/颜色", // image/color
|
||||
"数学/随机数", // math/rand
|
||||
"假死门/画布", // js/canvas
|
||||
"门阀/阿多一诺门", // syscall/arduino
|
||||
"门阀/假死门", // syscall/js
|
||||
"门阀/瓦力四像门", // syscall/wasi
|
||||
"门阀/瓦斯门", // syscall/wasm4
|
||||
}
|
||||
|
||||
2
waroot/src/门阀/假死门/假死门.wz
Normal file
2
waroot/src/门阀/假死门/假死门.wz
Normal file
@@ -0,0 +1,2 @@
|
||||
注: Copyright (C) 2025 武汉凹语言科技有限公司
|
||||
注: SPDX-License-Identifier: MIT
|
||||
41
waroot/src/门阀/瓦力四像门/瓦力四像门.wz
Normal file
41
waroot/src/门阀/瓦力四像门/瓦力四像门.wz
Normal file
@@ -0,0 +1,41 @@
|
||||
注: Copyright (C) 2025 武汉凹语言科技有限公司
|
||||
注: SPDX-License-Identifier: MIT
|
||||
|
||||
引入 "syscall/wasm4"
|
||||
|
||||
常量:
|
||||
按键1 = wasm4·BUTTON_1
|
||||
按键2 = wasm4·BUTTON_2
|
||||
左键 = wasm4·BUTTON_1
|
||||
右键 = wasm4·BUTTON_RIGHT
|
||||
按键起 = wasm4·BUTTON_UP
|
||||
按键落 = wasm4·BUTTON_DOWN
|
||||
|
||||
鼠标左键 = wasm4·MOUSE_LEFT
|
||||
鼠标右键 = wasm4·MOUSE_RIGHT
|
||||
鼠标中键 = wasm4·MOUSE_MIDDLE
|
||||
完毕
|
||||
|
||||
函数·设置绘图颜色(甲, 乙, 丙, 丁: 微正整):
|
||||
wasm4·SetDrawColors(甲, 乙, 丙, 丁)
|
||||
完毕
|
||||
|
||||
函数·绘制文本(文: 字串, 甲, 乙: 普整型):
|
||||
wasm4·Text(文, 甲, 乙)
|
||||
完毕
|
||||
|
||||
函数·读取控制键1 => 微正整:
|
||||
返回 wasm4·GetGamePad1()
|
||||
完毕
|
||||
|
||||
常量:
|
||||
每像素1位 = wasm4·BLIT_1BPP
|
||||
每像素2位 = wasm4·BLIT_2BPP
|
||||
左右翻转 = wasm4·BLIT_FLIP_X
|
||||
上下翻转 = wasm4·BLIT_FLIP_Y
|
||||
旋转 = wasm4·BLIT_ROTATE
|
||||
完毕
|
||||
|
||||
函数·位图块传输(精灵: []字节, 经, 纬, 宽, 高, 控制位: 整型):
|
||||
wasm4·Blit(精灵, 经, 纬, 宽, 高, 控制位)
|
||||
完毕
|
||||
2
waroot/src/门阀/瓦斯门/瓦斯门.wz
Normal file
2
waroot/src/门阀/瓦斯门/瓦斯门.wz
Normal file
@@ -0,0 +1,2 @@
|
||||
注: Copyright (C) 2025 武汉凹语言科技有限公司
|
||||
注: SPDX-License-Identifier: MIT
|
||||
2
waroot/src/门阀/阿多一诺门/阿多一诺门.wz
Normal file
2
waroot/src/门阀/阿多一诺门/阿多一诺门.wz
Normal file
@@ -0,0 +1,2 @@
|
||||
注: Copyright (C) 2025 武汉凹语言科技有限公司
|
||||
注: SPDX-License-Identifier: MIT
|
||||
Reference in New Issue
Block a user