From 19e45c9f600e9f7ed5ae10c8169853ecd94fdcd4 Mon Sep 17 00:00:00 2001 From: Thomas von Dein Date: Thu, 23 May 2024 18:25:02 +0200 Subject: [PATCH] renamed, added logo --- .github/assets/gol.xcf | Bin 0 -> 150057 bytes .github/assets/golsky.png | Bin 0 -> 31480 bytes .github/assets/track.pal | 7 +++ .github/assets/track.png | Bin 0 -> 713 bytes .github/assets/tracklight.pal | 7 +++ .github/assets/tracklight.png | Bin 0 -> 735 bytes .gitignore | 2 +- Makefile | 87 +++++++++++++++++++++++++++++ README.md | 25 +++++++-- game.go | 100 +++++++++++++++++++++++----------- go.mod | 2 +- main.go | 6 +- 12 files changed, 193 insertions(+), 43 deletions(-) create mode 100644 .github/assets/gol.xcf create mode 100644 .github/assets/golsky.png create mode 100644 .github/assets/track.pal create mode 100644 .github/assets/track.png create mode 100644 .github/assets/tracklight.pal create mode 100644 .github/assets/tracklight.png create mode 100644 Makefile diff --git a/.github/assets/gol.xcf b/.github/assets/gol.xcf new file mode 100644 index 0000000000000000000000000000000000000000..88e96b1a1e69bac1c6f3993488c12e045d7dac63 GIT binary patch literal 150057 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 literal 0 HcmV?d00001 diff --git a/.github/assets/golsky.png b/.github/assets/golsky.png new file mode 100644 index 0000000000000000000000000000000000000000..ad9899dbda91215c84fc6290136ebc5553098dcc GIT binary patch literal 31480 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 bcX&PN29)K5ozlS1S7B(W>8my=+dcbV!Lu`@ literal 0 HcmV?d00001 diff --git a/.github/assets/track.pal b/.github/assets/track.pal new file mode 100644 index 0000000..a1b8e81 --- /dev/null +++ b/.github/assets/track.pal @@ -0,0 +1,7 @@ +JASC-PAL +0100 +4 +25 17 0 +43 27 0 +66 35 0 +82 38 0 diff --git a/.github/assets/track.png b/.github/assets/track.png new file mode 100644 index 0000000000000000000000000000000000000000..e35bbb40e98fc15e7f959775657580075fc17014 GIT binary patch literal 713 zcmeAS@N?(olHy`uVBq!ia0y~yU~~Xs4mP03*$GQm0V&4fAa^H*b?0PWGB7YTd%8G= zRLpsMWw$SLpor_m^a2-_loN^zcP~irS|Fg37kG|WlZ*teY`+4>LziEHpF!mJMtT9&GP&S+U z!Qr_x7*5BWm18jIW?+hB;z;3Cn4sF=Fl`WUCKXwok2_GW1aS?}t-p`oID3y_&EaQE z7Hu3%r*n)Nk~JJ&o*Ty9yH+TTJ7k8E%z?5RCWXzSBLCKW QmIS%m)78&qol`;+03c_C=>Px# literal 0 HcmV?d00001 diff --git a/.github/assets/tracklight.pal b/.github/assets/tracklight.pal new file mode 100644 index 0000000..9f07f72 --- /dev/null +++ b/.github/assets/tracklight.pal @@ -0,0 +1,7 @@ +JASC-PAL +0100 +4 +255 195 97 +255 211 140 +255 227 181 +255 240 224 diff --git a/.github/assets/tracklight.png b/.github/assets/tracklight.png new file mode 100644 index 0000000000000000000000000000000000000000..1c286d225d226206d3a2f90ba900dc13d1eee759 GIT binary patch literal 735 zcmeAS@N?(olHy`uVBq!ia0y~yU~~Xs4mP03*$GQm0V&4fAa^H*b?0PWGB7aB^mK6y zshIQj>PBB?M-kVHvQI=#T5fXb((zir6z<4B#gRY6k#$PL3Ehha$_!jMn3xVr)wh-V zSzP4a_s&NcXd3B2Cav1=>nmQ;HDb}h81=QmI8P2YO897BLBLt_LJ z#}Oe1g=q{-8(9Q8R2v+07+I1y6$HEoOe*Xu^P@BR@pjv1x0gLqy?-fQzWOVhg&CvH vx9f+$ugfiSe)DI|`Ra?Hm>q7Q;qV?t3saf!WZ&5uAisIK`njxgN@xNAyZVU> literal 0 HcmV?d00001 diff --git a/.gitignore b/.gitignore index 9e13a6c..7fc9a42 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ -gameoflife +golsky bak dump* diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..17ee469 --- /dev/null +++ b/Makefile @@ -0,0 +1,87 @@ +# Copyright © 2024 Thomas von Dein + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# +# no need to modify anything below +tool = golsky +VERSION = $(shell grep VERSION config.go | head -1 | cut -d '"' -f2) +archs = darwin freebsd linux windows +PREFIX = /usr/local +UID = root +GID = 0 +HAVE_POD := $(shell pod2text -h 2>/dev/null) + +all: buildlocal + + +buildlocal: + go build -o $(tool) + +install: buildlocal + install -d -o $(UID) -g $(GID) $(PREFIX)/bin + install -d -o $(UID) -g $(GID) $(PREFIX)/man/man1 + install -o $(UID) -g $(GID) -m 555 $(tool) $(PREFIX)/sbin/ + install -o $(UID) -g $(GID) -m 444 $(tool).1 $(PREFIX)/man/man1/ + +clean: + rm -rf $(tool) coverage.out testdata t/out + +test: clean + mkdir -p t/out + go test ./... $(ARGS) + +testlint: test lint + +lint: + golangci-lint run + +lint-full: + golangci-lint run --enable-all --exclude-use-default --disable exhaustivestruct,exhaustruct,depguard,interfacer,deadcode,golint,structcheck,scopelint,varcheck,ifshort,maligned,nosnakecase,godot,funlen,gofumpt,cyclop,noctx,gochecknoglobals,paralleltest + +testfuzzy: clean + go test -fuzz ./... $(ARGS) + +singletest: + @echo "Call like this: make singletest TEST=TestPrepareColumns ARGS=-v" + go test -run $(TEST) $(ARGS) + +cover-report: + go test ./... -cover -coverprofile=coverage.out + go tool cover -html=coverage.out + +goupdate: + go get -t -u=patch ./... + +buildall: + ./mkrel.sh $(tool) $(VERSION) + +release: buildall + gh release create v$(VERSION) --generate-notes releases/* + +show-versions: buildlocal + @echo "### golsky version:" + @./golsky -V + + @echo + @echo "### go module versions:" + @go list -m all + + @echo + @echo "### go version used for building:" + @grep -m 1 go go.mod + +# lint: +# golangci-lint run -p bugs -p unused diff --git a/README.md b/README.md index 357889c..2ddb0d2 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,21 @@ -# Conway's game of life +# golsky - Conway's game of life written in GO -I wanted to play around a little bit with GOL in golang and here's the -result. It's a simple game using +![Golsky Logo](https://github.com/TLINDEN/golsky/blob/main/.github/assets/golsky.png) + +[![License](https://img.shields.io/badge/license-GPL-blue.svg)](https://github.com/tlinden/golsky/blob/master/LICENSE) +[![Go Report Card](https://goreportcard.com/badge/github.com/tlinden/golsky)](https://goreportcard.com/report/github.com/tlinden/golsky) + +I wanted to play around a little bit with [**Conways Game of +Life**](https://conwaylife.com/) +in golang and here's the result. It's a simple game using [ebitengine](https://github.com/hajimehoshi/ebiten/). # Features * flexible parameters as grid and cell size * colors can be inverted +* evolution tracks can be shown, with age the cells color fades and + old life cells will be drawn in red * game grid lines can be enabled or disabled * game speed can be adjusted on startup and in-game * you can zoom in and out of the canvas and move it around @@ -19,7 +27,12 @@ result. It's a simple game using * you can paint your own patterns in the game * the game can also be started with an empty grid, which is easier to paint patterns -# Build and install +# Install + +In the github releases page you can find ready to use binaries for +your OS. Just download the one you need and use it. + +# Build from source Just execute: `go build .` and use the resulting executable. @@ -30,7 +43,7 @@ You'll need the golang toolchain. The game has a couple of commandline options: ```default -Usage of ./gameoflife: +Usage of ./golsky: -c, --cellsize int cell size in pixels (default 8) -d, --debug show debug info -D, --density int density of random cells (default 10) @@ -64,7 +77,7 @@ While it runs, there are a couple of commands you can use: # Report bugs -[Please open an issue](https://github.com/TLINDEN/gameoflife/issues). Thanks! +[Please open an issue](https://github.com/TLINDEN/golsky/issues). Thanks! # License diff --git a/game.go b/game.go index 2c359b0..0704c64 100644 --- a/game.go +++ b/game.go @@ -11,35 +11,36 @@ import ( "github.com/hajimehoshi/ebiten/v2/ebitenutil" "github.com/hajimehoshi/ebiten/v2/inpututil" "github.com/hajimehoshi/ebiten/v2/vector" - "github.com/tlinden/gameoflife/rle" + "github.com/tlinden/golsky/rle" "golang.org/x/image/math/f64" ) type Images struct { - Black, White, Beige *ebiten.Image + Black, White, Age1, Age2, Age3, Age4, Old *ebiten.Image } type Game struct { - Grids []*Grid // 2 grids: one current, one next - History *Grid // holds state of past dead cells for evolution tracks - Index int // points to current grid - Width, Height, Cellsize, Density int // measurements - ScreenWidth, ScreenHeight int - Generations int64 // Stats - Black, White, Grey, Beige color.RGBA - TPG int // ticks per generation/game speed, 1==max - TicksElapsed int // tick counter for game speed - Debug, Paused, Empty, Invert bool // game modi - ShowEvolution, NoGrid, RunOneStep bool // flags - Rule *Rule // which rule to use, default: B3/S23 - Tiles Images // pre-computed tiles for dead and alife cells - RLE *rle.RLE // loaded GOL pattern from RLE file - Camera Camera // for zoom+move - World *ebiten.Image // actual image we render to - WheelTurned bool // when user turns wheel multiple times, zoom faster - Dragging bool // middle mouse is pressed, move canvas - LastCursorPos []int // used to check if the user is dragging - Statefile string // load game state from it if non-nil + Grids []*Grid // 2 grids: one current, one next + History *Grid // holds state of past dead cells for evolution tracks + Index int // points to current grid + Width, Height, Cellsize, Density int // measurements + ScreenWidth, ScreenHeight int + Generations int64 // Stats + Black, White, Grey, Old color.RGBA + AgeColor1, AgeColor2, AgeColor3, AgeColor4 color.RGBA + TPG int // ticks per generation/game speed, 1==max + TicksElapsed int // tick counter for game speed + Debug, Paused, Empty, Invert bool // game modi + ShowEvolution, NoGrid, RunOneStep bool // flags + Rule *Rule // which rule to use, default: B3/S23 + Tiles Images // pre-computed tiles for dead and alife cells + RLE *rle.RLE // loaded GOL pattern from RLE file + Camera Camera // for zoom+move + World *ebiten.Image // actual image we render to + WheelTurned bool // when user turns wheel multiple times, zoom faster + Dragging bool // middle mouse is pressed, move canvas + LastCursorPos []int // used to check if the user is dragging + Statefile string // load game state from it if non-nil } func (game *Game) Layout(outsideWidth, outsideHeight int) (int, int) { @@ -91,7 +92,10 @@ func (game *Game) UpdateCells() { // change state of current cell in next grid game.Grids[next].Data[y][x] = nextstate - if state == Alive && nextstate == Dead { + // set history to current generation so we can infer the + // age of the cell's state during rendering and use it to + // deduce the color to use if evolution tracking is enabled + if state != nextstate { game.History.Data[y][x] = game.Generations } } @@ -272,13 +276,27 @@ func (game *Game) Draw(screen *ebiten.Image) { op.GeoM.Reset() op.GeoM.Translate(float64(x*game.Cellsize), float64(y*game.Cellsize)) + age := game.Generations - game.History.Data[y][x] + switch game.Grids[game.Index].Data[y][x] { case 1: - - game.World.DrawImage(game.Tiles.Black, op) + if age > 50 && game.ShowEvolution { + game.World.DrawImage(game.Tiles.Old, op) + } else { + game.World.DrawImage(game.Tiles.Black, op) + } case 0: - if game.History.Data[y][x] == 1 && game.ShowEvolution { - game.World.DrawImage(game.Tiles.Beige, op) + if game.History.Data[y][x] > 1 && game.ShowEvolution { + switch { + case age < 10: + game.World.DrawImage(game.Tiles.Age1, op) + case age < 20: + game.World.DrawImage(game.Tiles.Age2, op) + case age < 30: + game.World.DrawImage(game.Tiles.Age3, op) + default: + game.World.DrawImage(game.Tiles.Age4, op) + } } else { game.World.DrawImage(game.Tiles.White, op) } @@ -365,25 +383,43 @@ func (game *Game) InitGrid(grid *Grid) { // prepare tile images func (game *Game) InitTiles() { + game.Grey = color.RGBA{128, 128, 128, 0xff} + game.Old = color.RGBA{255, 30, 30, 0xff} + game.Black = color.RGBA{0, 0, 0, 0xff} game.White = color.RGBA{200, 200, 200, 0xff} - game.Grey = color.RGBA{128, 128, 128, 0xff} - game.Beige = color.RGBA{0xff, 0xf8, 0xdc, 0xff} + game.AgeColor1 = color.RGBA{255, 195, 97, 0xff} // FIXME: use slice! + game.AgeColor2 = color.RGBA{255, 211, 140, 0xff} + game.AgeColor3 = color.RGBA{255, 227, 181, 0xff} + game.AgeColor4 = color.RGBA{255, 240, 224, 0xff} if game.Invert { game.White = color.RGBA{0, 0, 0, 0xff} game.Black = color.RGBA{200, 200, 200, 0xff} - game.Beige = color.RGBA{0x30, 0x1c, 0x11, 0xff} + + game.AgeColor1 = color.RGBA{82, 38, 0, 0xff} + game.AgeColor2 = color.RGBA{66, 35, 0, 0xff} + game.AgeColor3 = color.RGBA{43, 27, 0, 0xff} + game.AgeColor4 = color.RGBA{25, 17, 0, 0xff} } - game.Tiles.Beige = ebiten.NewImage(game.Cellsize, game.Cellsize) game.Tiles.Black = ebiten.NewImage(game.Cellsize, game.Cellsize) game.Tiles.White = ebiten.NewImage(game.Cellsize, game.Cellsize) + game.Tiles.Old = ebiten.NewImage(game.Cellsize, game.Cellsize) + game.Tiles.Age1 = ebiten.NewImage(game.Cellsize, game.Cellsize) + game.Tiles.Age2 = ebiten.NewImage(game.Cellsize, game.Cellsize) + game.Tiles.Age3 = ebiten.NewImage(game.Cellsize, game.Cellsize) + game.Tiles.Age4 = ebiten.NewImage(game.Cellsize, game.Cellsize) cellsize := game.ScreenWidth / game.Cellsize - FillCell(game.Tiles.Beige, cellsize, game.Beige) + FillCell(game.Tiles.Black, cellsize, game.Black) FillCell(game.Tiles.White, cellsize, game.White) + FillCell(game.Tiles.Old, cellsize, game.Old) + FillCell(game.Tiles.Age1, cellsize, game.AgeColor1) + FillCell(game.Tiles.Age2, cellsize, game.AgeColor2) + FillCell(game.Tiles.Age3, cellsize, game.AgeColor3) + FillCell(game.Tiles.Age4, cellsize, game.AgeColor4) } func (game *Game) Init() { diff --git a/go.mod b/go.mod index e918b52..d93f07f 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/tlinden/gameoflife +module github.com/tlinden/golsky go 1.22 diff --git a/main.go b/main.go index 5faabbd..22405f9 100644 --- a/main.go +++ b/main.go @@ -5,14 +5,14 @@ import ( "log" "os" - "github.com/tlinden/gameoflife/rle" + "github.com/tlinden/golsky/rle" "github.com/hajimehoshi/ebiten/v2" "github.com/spf13/pflag" ) const ( - VERSION = "v0.0.4" + VERSION = "v0.0.5" Alive = 1 Dead = 0 ) @@ -64,7 +64,7 @@ func main() { pflag.Parse() if showversion { - fmt.Printf("This is gameoflife version %s\n", VERSION) + fmt.Printf("This is golsky version %s\n", VERSION) os.Exit(0) }