mirror of
https://github.com/vlang/v.git
synced 2025-09-13 14:32:26 +03:00
examples: support directly loading sokoban level files by path
This commit is contained in:
parent
4f46aa84e5
commit
d96310f07d
4 changed files with 22 additions and 14 deletions
|
@ -1,12 +1,12 @@
|
||||||
Push the boxes to the corners of the warehouse.@It is a lot of work...@Have fun.
|
Push the boxes to the corners of the warehouse.@It is a lot of work...@Have fun.
|
||||||
#########################
|
#########################
|
||||||
#@ # @#
|
#. # .#
|
||||||
# # #
|
# # #
|
||||||
# ## ### #### ####
|
# ## ### #### ####
|
||||||
# ## # # #
|
# ## # # #
|
||||||
# b # b # b # b #
|
# $ # $ # $ # $ #
|
||||||
# # # # #
|
# # # # #
|
||||||
# # # ### ####
|
# # # ### ####
|
||||||
# # # ### #
|
# # # ### #
|
||||||
#@ # p @#
|
#. # @ .#
|
||||||
#########################
|
#########################
|
||||||
|
|
|
@ -2,8 +2,8 @@ Move your player to the box and push it.@Use the arrows to move your player.
|
||||||
##############
|
##############
|
||||||
# #
|
# #
|
||||||
# #
|
# #
|
||||||
# b #
|
# $ #
|
||||||
|
# . #
|
||||||
# @ #
|
# @ #
|
||||||
# p #
|
|
||||||
# #
|
# #
|
||||||
##############
|
##############
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import os
|
||||||
import os.asset
|
import os.asset
|
||||||
import gg
|
import gg
|
||||||
import gx
|
import gx
|
||||||
|
@ -55,17 +56,20 @@ fn (mut g Game) parse_level(lnumber int) ! {
|
||||||
mut row := []rune{}
|
mut row := []rune{}
|
||||||
for x, c in line {
|
for x, c in line {
|
||||||
match c {
|
match c {
|
||||||
`#`, ` `, `@` {
|
`#`, ` ` {
|
||||||
row << c
|
row << c
|
||||||
}
|
}
|
||||||
`b` { // a normal box
|
`b`, `$` { // a normal box
|
||||||
row << ` `
|
row << ` `
|
||||||
boxes << Pos{x, y}
|
boxes << Pos{x, y}
|
||||||
}
|
}
|
||||||
`p` { // a normal player
|
`p`, `@` { // a normal player
|
||||||
row << ` `
|
row << ` `
|
||||||
player = Pos{x, y}
|
player = Pos{x, y}
|
||||||
}
|
}
|
||||||
|
`.` { // storage
|
||||||
|
row << `@`
|
||||||
|
}
|
||||||
`B` { // box on storage
|
`B` { // box on storage
|
||||||
row << `@`
|
row << `@`
|
||||||
boxes << Pos{x, y}
|
boxes << Pos{x, y}
|
||||||
|
@ -247,8 +251,12 @@ fn (mut g Game) iid(name string) !int {
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
mut g := &Game{}
|
mut g := &Game{}
|
||||||
|
if os.args.len > 1 {
|
||||||
|
g.levels = os.args[1..].map(os.read_file(it)!)
|
||||||
|
} else {
|
||||||
all_level_names := asset.read_text('/', '_all_levels.txt')!.split_into_lines()
|
all_level_names := asset.read_text('/', '_all_levels.txt')!.split_into_lines()
|
||||||
g.levels = all_level_names.map(asset.read_text('/', it)!)
|
g.levels = all_level_names.map(asset.read_text('/', it)!)
|
||||||
|
}
|
||||||
g.parse_level(0)!
|
g.parse_level(0)!
|
||||||
g.ctx = gg.new_context(
|
g.ctx = gg.new_context(
|
||||||
width: 800
|
width: 800
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
It seems tricky, but it is not ...@Be careful to not get stuck.
|
It seems tricky, but it is not ...@Be careful to not get stuck.
|
||||||
### #
|
### #
|
||||||
###### ###### #
|
###### ###### #
|
||||||
# p # #
|
# @ # #
|
||||||
## #######
|
## #######
|
||||||
# bbb # #
|
# $$$ # #
|
||||||
# @ @ @ # #
|
# . . . # #
|
||||||
# # # ### #
|
# # # ### #
|
||||||
# # ### #
|
# # ### #
|
||||||
############ #
|
############ #
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue