From 4a4a630eaf6c0d27be9874a466e7e9743a9d7cb3 Mon Sep 17 00:00:00 2001 From: Pihkaal Date: Wed, 11 Mar 2026 20:29:13 +0100 Subject: [PATCH] feat(go): implement --- go/Makefile | 2 ++ go/README.md | 8 ++++++ go/go_logo.png | Bin 0 -> 1099509 bytes go/main.go | 66 +++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 76 insertions(+) create mode 100644 go/Makefile create mode 100644 go/README.md create mode 100644 go/go_logo.png create mode 100644 go/main.go diff --git a/go/Makefile b/go/Makefile new file mode 100644 index 0000000..542d42e --- /dev/null +++ b/go/Makefile @@ -0,0 +1,2 @@ +raylib_go: main.go + go build -o raylib_go main.go diff --git a/go/README.md b/go/README.md new file mode 100644 index 0000000..8c6a5ad --- /dev/null +++ b/go/README.md @@ -0,0 +1,8 @@ +# Raylib in Go + +## Quick start + +```sh +$ make +$ ./raylib_go +``` diff --git a/go/go_logo.png b/go/go_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b4fa424d8d71e9ecfcabe8ec276e222fced650e7 GIT binary patch literal 1099509 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 IUj6w05B^mw+W-In literal 0 HcmV?d00001 diff --git a/go/main.go b/go/main.go new file mode 100644 index 0000000..e43b17e --- /dev/null +++ b/go/main.go @@ -0,0 +1,66 @@ +package main + +/* +#cgo CFLAGS: -I../_raylib-5.5_linux_amd64/include +#cgo LDFLAGS: -L../_raylib-5.5_linux_amd64/lib -l:libraylib.a -lm +#include +*/ +import "C" +import "time" + +const ( + windowWidth = 800 + windowHeight = 600 + logoHeight = 64 + logoSpeed = 300.0 +) + +func main() { + C.InitWindow(windowWidth, windowHeight, C.CString("Raylib in Go")) + C.SetTargetFPS(60) + C.SetRandomSeed(C.uint(time.Now().Unix())) + + logoImage := C.LoadImage(C.CString("./go_logo.png")) + C.ImageResize(&logoImage, logoImage.width*logoHeight/logoImage.height, logoHeight) + logoTexture := C.LoadTextureFromImage(logoImage) + C.UnloadImage(logoImage) + + x := float32(C.GetRandomValue(0, windowWidth-C.int(logoTexture.width))) + y := float32(C.GetRandomValue(0, windowHeight-C.int(logoTexture.height))) + + dx := float32(logoSpeed) + if C.GetRandomValue(0, 1) == 1 { + dx = -dx + } + dy := float32(logoSpeed) + if C.GetRandomValue(0, 1) == 1 { + dy = -dy + } + + black := C.Color{0, 0, 0, 255} + white := C.Color{255, 255, 255, 255} + + for !bool(C.WindowShouldClose()) { + deltaTime := float32(C.GetFrameTime()) + + x += dx * deltaTime + y += dy * deltaTime + + if x < 0 || x+float32(logoTexture.width) >= windowWidth-1 { + dx *= -1 + x += dx * deltaTime + } + if y < 0 || y+float32(logoTexture.height) >= windowHeight-1 { + dy *= -1 + y += dy * deltaTime + } + + C.BeginDrawing() + C.ClearBackground(black) + C.DrawTextureV(logoTexture, C.Vector2{x: C.float(x), y: C.float(y)}, white) + C.EndDrawing() + } + + C.UnloadTexture(logoTexture) + C.CloseWindow() +}