Skip to content

Commit

Permalink
working infinite maze
Browse files Browse the repository at this point in the history
  • Loading branch information
skatiyar committed Sep 10, 2018
1 parent 4c2b9aa commit e9df198
Show file tree
Hide file tree
Showing 25 changed files with 1,339 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Expand Up @@ -10,3 +10,6 @@

# Output of the go coverage tool, specifically when used with LiteIDE
*.out

# Mac
.DS_Store
6 changes: 6 additions & 0 deletions assets/fonts/arcade-n.go

Large diffs are not rendered by default.

Binary file added assets/fonts/arcade-n.ttf
Binary file not shown.
7 changes: 7 additions & 0 deletions assets/generate.go
@@ -0,0 +1,7 @@
//go:generate file2byteslice -package=images -input=./images/skin.png -output=./images/skin.go -var=SkinPng
//go:generate file2byteslice -package=images -input=./images/characters.png -output=./images/characters.go -var=CharactersPng
//go:generate file2byteslice -package=images -input=./images/powers.png -output=./images/powers.go -var=PowersPng
//go:generate file2byteslice -package=images -input=./images/walls.png -output=./images/walls.go -var=WallsPng
//go:generate file2byteslice -package=fonts -input=./fonts/arcade-n.ttf -output=./fonts/arcade-n.go -var=ArcadeTTF

package assets
6 changes: 6 additions & 0 deletions assets/images/characters.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file added assets/images/characters.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions assets/images/powers.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file added assets/images/powers.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions assets/images/skin.go

Large diffs are not rendered by default.

Binary file added assets/images/skin.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions assets/images/walls.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file added assets/images/walls.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions build/pacman/main.go
@@ -0,0 +1,16 @@
package main

import (
"github.com/skatiyar/pacman"
)

func main() {
game, gameErr := pacman.NewGame()
if gameErr != nil {
panic(gameErr)
}

if runErr := game.Run(); runErr != nil {
panic(runErr)
}
}
85 changes: 85 additions & 0 deletions characters.go
@@ -0,0 +1,85 @@
package pacman

import (
"bytes"
"image"
"image/png"

"github.com/hajimehoshi/ebiten"
"github.com/skatiyar/pacman/assets/images"
)

type Characters struct {
Pacman *ebiten.Image
Ghost1 *ebiten.Image
Ghost2 *ebiten.Image
Ghost3 *ebiten.Image
Ghost4 *ebiten.Image
}

func LoadCharacters() (*Characters, error) {
cImage, cImageErr := png.Decode(bytes.NewReader(images.CharactersPng))
if cImageErr != nil {
return nil, cImageErr
}

characters, charactersErr := ebiten.NewImageFromImage(cImage, ebiten.FilterDefault)
if charactersErr != nil {
return nil, charactersErr
}

pacman, pacmanErr := GetSprite(61, 64, 0, 0, characters)
if pacmanErr != nil {
return nil, pacmanErr
}

ghost1, ghost1Err := GetSprite(56, 64, 66, 0, characters)
if ghost1Err != nil {
return nil, ghost1Err
}

ghost2, ghost2Err := GetSprite(56, 64, 125, 0, characters)
if ghost2Err != nil {
return nil, ghost2Err
}

ghost3, ghost3Err := GetSprite(56, 64, 185, 0, characters)
if ghost3Err != nil {
return nil, ghost3Err
}

ghost4, ghost4Err := GetSprite(56, 64, 244, 0, characters)
if ghost4Err != nil {
return nil, ghost4Err
}

return &Characters{
Pacman: pacman,
Ghost1: ghost1,
Ghost2: ghost2,
Ghost3: ghost3,
Ghost4: ghost4,
}, nil
}

// Offset is from top left corner
func GetSprite(
width, height int,
xoffset, yoffset int,
src *ebiten.Image,
) (*ebiten.Image, error) {
sprite, spriteErr := ebiten.NewImage(width, height, ebiten.FilterDefault)
if spriteErr != nil {
return nil, spriteErr
}

rect := image.Rect(xoffset, yoffset, xoffset+width, yoffset+height)

ops := &ebiten.DrawImageOptions{}
ops.SourceRect = &rect
if drawErr := sprite.DrawImage(src, ops); drawErr != nil {
return nil, drawErr
}

return sprite, nil
}

0 comments on commit e9df198

Please sign in to comment.