ebiten으로 필드 생성
7798 단어 Go
유저가 이동할 필드를 하드코딩하였지만, 더욱 효과적으로 생성할 수 있습니다.
생성 필드
문자열에서 필드를 간단하게 생성합니다.참조goo-inovation 방법.
소스 코드
전체 차이는 다음과 같다.
package field
const Field_data_1 = `+ +
+ +
+ +
+ ++++++++++++++ +
+ + +
+ + ++ +
+ + + +++++ +
+ + + +
+ +++++++++ +
+ +++ + +
+ +
+ ++ +
+ P +
++++++++++++++++++++++++++++++++++++++++++
`
package field
import (
"strings"
"github.com/hajimehoshi/ebiten"
"github.com/zenwerk/go-pixelman3/sprite"
)
const (
width = 17
height = 17
blockMark = "+"
playerMark = "P"
)
type Field struct {
Player *sprite.Player
Sprites []sprite.Sprite
}
func NewField(fieldData string) *Field {
field := new(Field)
for indexY, line := range strings.Split(fieldData, "\n") {
for indexX, str := range line {
switch string(str) {
case blockMark:
block := sprite.NewBlock()
block.Position.X = indexX * width
block.Position.Y = indexY * height
field.Sprites = append(field.Sprites, block)
case playerMark:
player := sprite.NewPlayer()
player.Position.X = indexX * width
player.Position.Y = indexY * height
field.Player = player
}
}
}
return field
}
func (f *Field) DrawImage(screen *ebiten.Image, viewport sprite.Position) {
for _, sprite := range f.Sprites {
sprite.DrawImage(screen, viewport)
}
}
field_data.go
에 정의된 문자열은 필드의 생성원입니다.field.go
의 NewField
에서 문자열을 순환하여 특정 문자가 나타날 때 해당하는 Sprite를 생성합니다.실행 결과
총결산
수동으로 좌표를 지정하는 것보다 훨씬 수월하다.
Reference
이 문제에 관하여(ebiten으로 필드 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/zenwerk/items/0bbb900d2150da5daf38텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)