tetris: enable to run on android, run v fmt (#8136)
parent
371730f8a8
commit
4044abef0e
|
@ -53,15 +53,15 @@ const (
|
||||||
]
|
]
|
||||||
// Each tetro has its unique color
|
// Each tetro has its unique color
|
||||||
colors = [
|
colors = [
|
||||||
gx.rgb(0, 0, 0), // unused ?
|
gx.rgb(0, 0, 0), /* unused ? */
|
||||||
gx.rgb(255, 242, 0), // yellow quad
|
gx.rgb(255, 242, 0), /* yellow quad */
|
||||||
gx.rgb(174, 0, 255), // purple triple
|
gx.rgb(174, 0, 255), /* purple triple */
|
||||||
gx.rgb(60, 255, 0), // green short topright
|
gx.rgb(60, 255, 0), /* green short topright */
|
||||||
gx.rgb(255, 0, 0), // red short topleft
|
gx.rgb(255, 0, 0), /* red short topleft */
|
||||||
gx.rgb(255, 180, 31), // orange long topleft
|
gx.rgb(255, 180, 31), /* orange long topleft */
|
||||||
gx.rgb(33, 66, 255), // blue long topright
|
gx.rgb(33, 66, 255), /* blue long topright */
|
||||||
gx.rgb(74, 198, 255), // lightblue longest
|
gx.rgb(74, 198, 255), /* lightblue longest */
|
||||||
gx.rgb(0, 170, 170), // unused ?
|
gx.rgb(0, 170, 170), /* unused ? */
|
||||||
]
|
]
|
||||||
background_color = gx.white
|
background_color = gx.white
|
||||||
ui_color = gx.rgba(255, 0, 0, 210)
|
ui_color = gx.rgba(255, 0, 0, 210)
|
||||||
|
@ -83,46 +83,42 @@ enum GameState {
|
||||||
struct Game {
|
struct Game {
|
||||||
mut:
|
mut:
|
||||||
// Score of the current game
|
// Score of the current game
|
||||||
score int
|
score int
|
||||||
// Lines of the current game
|
// Lines of the current game
|
||||||
lines int
|
lines int
|
||||||
// State of the current game
|
// State of the current game
|
||||||
state GameState
|
state GameState
|
||||||
// Position of the current tetro
|
// Position of the current tetro
|
||||||
pos_x int
|
pos_x int
|
||||||
pos_y int
|
pos_y int
|
||||||
// field[y][x] contains the color of the block with (x,y) coordinates
|
// field[y][x] contains the color of the block with (x,y) coordinates
|
||||||
// "-1" border is to avoid bounds checking.
|
// "-1" border is to avoid bounds checking.
|
||||||
// -1 -1 -1 -1
|
// -1 -1 -1 -1
|
||||||
// -1 0 0 -1
|
// -1 0 0 -1
|
||||||
// -1 0 0 -1
|
// -1 0 0 -1
|
||||||
// -1 -1 -1 -1
|
// -1 -1 -1 -1
|
||||||
field [][]int
|
field [][]int
|
||||||
// TODO: tetro Tetro
|
// TODO: tetro Tetro
|
||||||
tetro []Block
|
tetro []Block
|
||||||
// TODO: tetros_cache []Tetro
|
// TODO: tetros_cache []Tetro
|
||||||
tetros_cache []Block
|
tetros_cache []Block
|
||||||
// Index of the current tetro. Refers to its color.
|
// Index of the current tetro. Refers to its color.
|
||||||
tetro_idx int
|
tetro_idx int
|
||||||
// Idem for the next tetro
|
// Idem for the next tetro
|
||||||
next_tetro_idx int
|
next_tetro_idx int
|
||||||
// Index of the rotation (0-3)
|
// Index of the rotation (0-3)
|
||||||
rotation_idx int
|
rotation_idx int
|
||||||
// gg context for drawing
|
// gg context for drawing
|
||||||
gg &gg.Context = voidptr(0)
|
gg &gg.Context = voidptr(0)
|
||||||
font_loaded bool
|
font_loaded bool
|
||||||
show_ghost bool
|
show_ghost bool
|
||||||
// frame/time counters:
|
// frame/time counters:
|
||||||
frame int
|
frame int
|
||||||
frame_old int
|
frame_old int
|
||||||
frame_sw time.StopWatch = time.new_stopwatch({})
|
frame_sw time.StopWatch = time.new_stopwatch({})
|
||||||
second_sw time.StopWatch = time.new_stopwatch({})
|
second_sw time.StopWatch = time.new_stopwatch({})
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
|
||||||
fpath = os.resource_abs_path('../assets/fonts/RobotoMono-Regular.ttf')
|
|
||||||
)
|
|
||||||
|
|
||||||
[if showfps]
|
[if showfps]
|
||||||
fn (mut game Game) showfps() {
|
fn (mut game Game) showfps() {
|
||||||
game.frame++
|
game.frame++
|
||||||
|
@ -150,7 +146,11 @@ fn main() {
|
||||||
mut game := &Game{
|
mut game := &Game{
|
||||||
gg: 0
|
gg: 0
|
||||||
}
|
}
|
||||||
game.gg = gg.new_context({
|
mut fpath := os.resource_abs_path(os.join_path('..', 'assets', 'fonts', 'RobotoMono-Regular.ttf'))
|
||||||
|
$if android {
|
||||||
|
fpath = 'fonts/RobotoMono-Regular.ttf'
|
||||||
|
}
|
||||||
|
game.gg = gg.new_context(
|
||||||
bg_color: gx.white
|
bg_color: gx.white
|
||||||
width: win_width
|
width: win_width
|
||||||
height: win_height
|
height: win_height
|
||||||
|
@ -161,7 +161,7 @@ fn main() {
|
||||||
frame_fn: frame
|
frame_fn: frame
|
||||||
event_fn: on_event
|
event_fn: on_event
|
||||||
font_path: fpath // wait_events: true
|
font_path: fpath // wait_events: true
|
||||||
})
|
)
|
||||||
game.init_game()
|
game.init_game()
|
||||||
go game.run() // Run the game loop in a new thread
|
go game.run() // Run the game loop in a new thread
|
||||||
game.gg.run() // Run the render loop in the main thread
|
game.gg.run() // Run the render loop in the main thread
|
||||||
|
@ -290,7 +290,7 @@ fn (mut g Game) delete_completed_line(y int) {
|
||||||
// Move everything down by 1 position
|
// Move everything down by 1 position
|
||||||
for yy := y - 1; yy >= 1; yy-- {
|
for yy := y - 1; yy >= 1; yy-- {
|
||||||
for x := 1; x <= field_width; x++ {
|
for x := 1; x <= field_width; x++ {
|
||||||
g.field[yy + 1][x] = g.field[yy][x]
|
g.field[yy + 1][x] = g.field[yy][x]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue