本文整理汇总了Golang中github.com/JoelOtter/termloop.NewBaseLevel函数的典型用法代码示例。如果您正苦于以下问题:Golang NewBaseLevel函数的具体用法?Golang NewBaseLevel怎么用?Golang NewBaseLevel使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewBaseLevel函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: BuildLevel
// TODO need to be able to build multiple levels
// maybe look at adding a 'R' key during debug to reload/refresh level
func BuildLevel(g *tl.Game, w, h, score int) {
maze := generateMaze(w, h)
l := tl.NewBaseLevel(tl.Cell{})
l.SetOffset(30, 15)
g.Screen().SetLevel(l)
g.Log("Building level with width %d and height %d", w, h)
scoretext := tl.NewText(0, 1, "Pengo", tl.ColorWhite, tl.ColorBlack)
g.Screen().AddEntity(scoretext)
for i, row := range maze {
for j, path := range row {
if path == '*' {
// check if the iceblock is a wall and set its color to white.
var blockcolor = tl.ColorBlue
if (i <= 1 || j <= 1) || (i >= 15 || j >= 17) {
blockcolor = tl.ColorWhite
}
l.AddEntity(NewIceBlock(i, j, g, blockcolor))
} else if path == 'P' {
// it's Pengo
l.AddEntity(NewPengo(i, j, g))
} else if path == 'S' {
// it's a Snobee
l.AddEntity(NewSnobee(i, j, g))
}
// 'R' it's a Diamond iceblock
// 's' it's a snobee egg iceblock
}
}
}
示例2: NewSnake
func NewSnake(game *tl.Game) *Snake {
snake := new(Snake)
snake.head = tl.NewEntity(1, 1, 1, 1)
snake.px = 1
snake.py = 0
snake.head.SetPosition(snake.px, snake.py)
snake.head.SetCell(0, 0, &tl.Cell{Fg: tl.ColorRed, Ch: '#'})
snake.dir = KeyArrowRight
snake.stop = false
snake.update = time.Now()
snake.level = tl.NewBaseLevel(tl.Cell{
Bg: tl.ColorCyan,
})
snake.level.AddEntity(snake)
snake.body = make([]*Body, 10)
snake.size = 0
// create food
snake.food = NewFood()
snake.level.AddEntity(snake.food)
return snake
}
示例3: main
func main() {
// create game object
game := tl.NewGame()
// create cell
cell := tl.Cell{
Bg: tl.ColorGreen,
Fg: tl.ColorBlack,
Ch: 'v',
}
// create level filled with cell
level := tl.NewBaseLevel(cell)
// create body of water
level.AddEntity(tl.NewRectangle(10, 10, 50, 20, tl.ColorBlue))
// create player
player := Player{
entity: tl.NewEntity(1, 1, 1, 1),
level: level,
}
player.entity.SetCell(0, 0, &tl.Cell{Fg: tl.ColorRed, Ch: '@'})
// add player to level
level.AddEntity(&player)
// set level of screen
game.Screen().SetLevel(level)
// start the game
game.Start()
}
示例4: buildLevel
func (g *Game) buildLevel(gameLevel int) {
level := tl.NewBaseLevel(tl.Cell{})
// TODO: Remove this abomination
width := boardWidth*squareWidth + (boardWidth+1)*borderWidth
height := boardHeight*squareHeight + (boardHeight+1)*borderHeight
level.AddEntity(tl.NewRectangle(1, 1, width, height, tl.ColorGreen))
for i := 0; i < boardHeight; i++ {
for j := 0; j < boardWidth; j++ {
x := offsetX + borderWidth + (j * squareWidth) + j*borderWidth
y := offsetY + borderHeight + (i * squareHeight) + i*borderHeight
level.AddEntity(tl.NewRectangle(x, y, squareWidth, squareHeight, tl.ColorBlue))
}
}
g.board.populateBoard(gameLevel, answersPerLevel, level)
level.AddEntity(g.player)
// Add Foes
foes := int(gameLevel/10) + 2
g.foes = g.foes[:0]
var foe *Foe
for i := 0; i < foes; i++ {
foe = NewFoe(g)
g.foes = append(g.foes, foe)
level.AddEntity(foe)
}
g.game.Screen().SetLevel(level)
g.updateStatus()
}
示例5: main
func main() {
rand.Seed(time.Now().UTC().UnixNano())
game := tl.NewGame()
level := tl.NewBaseLevel(tl.Cell{
Bg: tl.ColorWhite,
})
for i := 0; i < 4; i++ {
TilePos[i] = rand.Intn(4)
level.AddEntity(&Tile{
r: tl.NewRectangle(X+TilePos[i]*(TileWidth+BorderWidth), Y-i*(TileHeight+BorderHeight), TileWidth, TileHeight, tl.ColorBlack),
})
}
level.AddEntity(tl.NewText(X+TileWidth/2-1, Y+TileHeight, "←", tl.ColorBlack, tl.ColorWhite))
level.AddEntity(tl.NewText(X+(TileWidth+BorderWidth)+TileWidth/2-1, Y+TileHeight, "↓", tl.ColorBlack, tl.ColorWhite))
level.AddEntity(tl.NewText(X+2*(TileWidth+BorderWidth)+TileWidth/2-1, Y+TileHeight, "↑", tl.ColorBlack, tl.ColorWhite))
level.AddEntity(tl.NewText(X+3*(TileWidth+BorderWidth)+TileWidth/2-1, Y+TileHeight, "→", tl.ColorBlack, tl.ColorWhite))
level.AddEntity(&RemainingTime{
r: tl.NewText(X+4*(TileWidth+BorderWidth), 0, fmt.Sprintf("%.3f", Time), tl.ColorRed, tl.ColorDefault),
s: tl.NewText(0, 0, "0", tl.ColorRed, tl.ColorDefault),
t: Time,
m: tl.NewText(0, Y+TileHeight+1, "", tl.ColorRed, tl.ColorDefault),
e: tl.NewText(X+4*(TileWidth+BorderWidth), Y+TileHeight+1, "", tl.ColorRed, tl.ColorDefault),
})
game.Screen().SetLevel(level)
game.Start()
}
示例6: world
func world() {
game := tl.NewGame()
level := tl.NewBaseLevel(tl.Cell{
Bg: tl.ColorWhite,
Fg: tl.ColorWhite,
Ch: '_',
})
for i := -1000; i < 1000; i = i + 40 {
if i == 0 {
continue
}
for j := -1000; j < 1000; j = j + 40 {
level.AddEntity(tl.NewRectangle(i, j, 20, 10, tl.ColorBlue))
}
}
player := Player{
entity: tl.NewEntity(1, 1, 1, 1),
level: level,
}
player.entity.SetCell(0, 0, &tl.Cell{Fg: tl.ColorBlack, Ch: '옷'})
level.AddEntity(&player)
game.Screen().SetLevel(level)
go func() {
for {
player.Tick(tl.Event{})
time.Sleep(200 * time.Millisecond)
}
}()
game.Start()
}
示例7: ActivateWin
func (l *endLevel) ActivateWin() {
l.Level = tl.NewBaseLevel(tl.Cell{Bg: l.bg, Fg: l.fg})
l.Level.AddEntity(&l.gt.console)
l.win = true
moneyEarned := 1000
l.gt.stats.LevelsCompleted++
l.gt.stats.LevelsAttempted++
l.gt.stats.Dollars += moneyEarned
l.gt.stats.TotalEarned += moneyEarned
l.gt.console.SetText("")
w, h := l.gt.g.Screen().Size()
rect := tl.NewRectangle(10, 2, w-20, h-4, tl.ColorCyan)
l.AddEntity(rect)
l.endMessages = []*tl.Entity{}
l.addEndMessage("data/you_win_a.txt", w/2, 3)
l.addEndMessage("data/you_win_b.txt", w/2, 3)
l.AddEntity(l.endMessages[l.currentMessage])
l.PrintStats(moneyEarned, w/2, 13)
l.Activate()
}
示例8: ActivateFail
func (l *endLevel) ActivateFail() {
l.win = false
l.gt.stats.LevelsAttempted++
l.gt.stats.Lives--
if l.gt.stats.Lives == 0 {
l.ActivateGameOver()
return
}
l.Level = tl.NewBaseLevel(tl.Cell{Bg: l.bg, Fg: l.fg})
l.AddEntity(&l.gt.console)
l.gt.console.SetText("")
w, h := l.gt.g.Screen().Size()
rect := tl.NewRectangle(10, 2, w-20, h-4, tl.ColorCyan)
l.AddEntity(rect)
l.endMessages = []*tl.Entity{}
l.addEndMessage("data/you_loose_a.txt", w/2, 3)
l.addEndMessage("data/you_loose_b.txt", w/2, 3)
l.AddEntity(l.endMessages[l.currentMessage])
l.PrintStats(0, w/2, 13)
l.Activate()
}
示例9: refresh
func (l *storeLevel) refresh() {
l.Level = tl.NewBaseLevel(tl.Cell{Bg: l.bg, Fg: l.fg})
l.gt.store.AddEntity(&l.gt.console)
l.gt.console.SetText("")
w, h := l.gt.g.Screen().Size()
rect := tl.NewRectangle(10, 2, w-20, h-4, tl.ColorGreen)
l.AddEntity(rect)
store, _ := ioutil.ReadFile("data/store.txt")
c := tl.CanvasFromString(string(store))
l.AddEntity(tl.NewEntityFromCanvas(w/2-len(c)/2, 4, c))
msg := "Up/Down(j/k), Enter to purchase, N to return to the game"
l.AddEntity(tl.NewText(w/2-len(msg)/2, 10, msg, tl.ColorBlack, tl.ColorDefault))
msg = fmt.Sprintf("Cash: $%d", l.gt.stats.Dollars)
l.AddEntity(tl.NewText(14, 11, msg, tl.ColorBlack, tl.ColorDefault))
y := 12
for idx, i := range l.items {
i.Reset(l.gt)
x := 14
fg := tl.ColorBlack
if i.Price() > l.gt.stats.Dollars {
fg = tl.ColorRed
}
var price string
if l.currentItem == idx {
price = ">" + i.PriceDesc() + "<"
} else {
price = " " + i.PriceDesc()
}
l.AddEntity(tl.NewText(x, y, price, fg, tl.ColorDefault))
x += len(i.PriceDesc()) + 4
l.AddEntity(tl.NewText(x, y, i.Name(), tl.ColorBlue, tl.ColorDefault))
y++
}
desc := l.items[l.currentItem].Desc()
l.AddEntity(tl.NewText(14, y+1, desc, tl.ColorBlue, tl.ColorDefault))
y = 12
x := w - 30
msg = fmt.Sprintf("Goroutines: %d", len(l.gt.items))
l.AddEntity(tl.NewText(x, y, msg, tl.ColorBlue, tl.ColorDefault))
y++
msg = fmt.Sprintf("CPU Upgrades: %d", l.gt.stats.CPUUpgrades)
l.AddEntity(tl.NewText(x, y, msg, tl.ColorBlue, tl.ColorDefault))
y++
msg = fmt.Sprintf("Go Version: %0.1f", l.gt.stats.GoVersion)
l.AddEntity(tl.NewText(x, y, msg, tl.ColorBlue, tl.ColorDefault))
y++
l.gt.g.Screen().SetLevel(l)
}
示例10: main
func main() {
g := tl.NewGame()
l := tl.NewBaseLevel(tl.Cell{Bg: 76, Fg: 1})
lmap, err := ioutil.ReadFile("level.json")
checkErr(err)
parsers := make(map[string]tl.EntityParser)
parsers["Player"] = parsePlayer
err = tl.LoadLevelFromMap(string(lmap), parsers, l)
checkErr(err)
g.Screen().SetLevel(l)
g.Start()
}
示例11: createLevelBase
func createLevelBase(wallColor tl.Attr, wallWidth int, w int, h int) *tl.BaseLevel {
var level *tl.BaseLevel = tl.NewBaseLevel(tl.Cell{
Bg: tl.ColorBlack,
Fg: tl.ColorWhite,
Ch: ' ',
})
level.AddEntity(NewWall(0, 0, w+wallWidth, wallWidth, wallColor))
level.AddEntity(NewWall(0, h+wallWidth, w+wallWidth, wallWidth, tl.ColorCyan))
level.AddEntity(NewWall(0, 0, wallWidth, h+wallWidth, tl.ColorCyan))
level.AddEntity(NewWall(w+wallWidth, 0, wallWidth, h+wallWidth*2, tl.ColorCyan))
return level
}
示例12: main
func main() {
b := NewGame()
board := &Board{b, &[13][13]point{}, Point{5, 2}, false,
&[]Point{}, false, []*termloop.Text{}}
board.build()
game := termloop.NewGame()
level = termloop.NewBaseLevel(termloop.Cell{})
game.Screen().SetLevel(level)
level.AddEntity(board)
game.Start()
}
示例13: main
func main() {
g := tl.NewGame()
l := tl.NewBaseLevel(tl.Cell{
Bg: tl.ColorWhite,
})
l.AddEntity(&CollRec{
r: tl.NewRectangle(3, 3, 3, 3, tl.ColorRed),
move: true,
})
l.AddEntity(&CollRec{
r: tl.NewRectangle(7, 4, 3, 3, tl.ColorGreen),
move: false,
})
g.SetLevel(l)
g.Start()
}
示例14: GameOver
func GameOver() {
end := tl.NewBaseLevel(tl.Cell{
Bg: tl.ColorRed,
Fg: tl.ColorBlack,
})
endText := StartLevel{
message: tl.NewText(0, 0, endMessage, tl.ColorGreen, tl.ColorBlack),
instructions: tl.NewText(0, 0, endInstructions, tl.ColorGreen, tl.ColorBlack),
instructions2: tl.NewText(0, 0, "", tl.ColorGreen, tl.ColorBlack),
}
end.AddEntity(&endText)
firstPass = true
game.Screen().SetLevel(end)
}
示例15: Start
func Start(comOut chan [boardSize][boardSize]int8, comIn chan [2]int8, comHud chan string) {
game := tl.NewGame()
level := tl.NewBaseLevel(tl.Cell{
Bg: Bg,
Fg: Fg,
})
w := newWelcome(game)
level.AddEntity(w)
b := newBoard(level, game.Screen(), P1, AI2, comIn, comOut, w)
level.AddEntity(b)
h := newHud(comHud, game.Screen())
b.comHud = comHud
game.Screen().AddEntity(h)
game.Screen().SetLevel(level)
game.Start()
}