From 4760fea4894b714be983cf2b3786eaa5df8704bb Mon Sep 17 00:00:00 2001 From: Nicolas Sauzede Date: Sat, 17 Aug 2019 01:56:09 +0200 Subject: [PATCH] examples/tetris: use better unique colors, implement game over/pause --- examples/tetris/screenshot.png | Bin 98186 -> 10230 bytes examples/tetris/tetris.v | 74 +++++++++++++++++++++++---------- vlib/glfw/glfw.v | 3 +- 3 files changed, 54 insertions(+), 23 deletions(-) diff --git a/examples/tetris/screenshot.png b/examples/tetris/screenshot.png index 67013c10116de5b755923e953bf14b5b75247f38..c6c908d8a20b28dc58a7b4a835ed322adff58641 100644 GIT binary patch literal 10230 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%0D)=JZ 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 THD7^$|7CsYY|*dR{`3C;4-f5C diff --git a/examples/tetris/tetris.v b/examples/tetris/tetris.v index fd8826fb11..796f5393ac 100644 --- a/examples/tetris/tetris.v +++ b/examples/tetris/tetris.v @@ -19,15 +19,16 @@ const ( WinWidth = BlockSize * FieldWidth WinHeight = BlockSize * FieldHeight TimerPeriod = 250 // ms + TextSize = 12 ) -const ( +const ( text_cfg = gx.TextCfg{ align:gx.ALIGN_LEFT - size:12 - color:gx.rgb(0, 0, 170) + size:TextSize + color:gx.rgb(0, 0, 0) } -) +) const ( // Tetros' 4 possible states are encoded in binaries @@ -68,15 +69,15 @@ const ( ] // Each tetro has its unique color Colors = [ - gx.rgb(0, 0, 0), - gx.rgb(253, 32, 47), - gx.rgb(0, 110, 194), - gx.rgb(34, 169, 16), - gx.rgb(170, 0, 170), - gx.rgb(0, 0, 170), - gx.rgb(0, 170, 0), - gx.rgb(170, 85, 0), - gx.rgb(0, 170, 170), + gx.rgb(0, 0, 0), // unused ? + gx.rgb(253, 32, 47), // lightred quad + gx.rgb(0, 110, 194), // lightblue triple + gx.rgb(170, 170, 0), // darkyellow short topright + gx.rgb(170, 0, 170), // purple short topleft + gx.rgb(50, 90, 110), // darkgrey long topleft + gx.rgb(0, 170, 0), // lightgreen long topright + gx.rgb(170, 85, 0), // brown longest + gx.rgb(0, 170, 170), // unused ? ] ) @@ -87,10 +88,15 @@ struct Block { y int } +enum GameState { + paused running gameover +} struct Game { mut: // Score of the current game score int + // State of the current game + state GameState // Position of the current tetro pos_x int pos_y int @@ -113,7 +119,7 @@ struct Game { gg *gg.GG // ft context for font drawing ft *freetype.Context - font_loaded bool + font_loaded bool } fn main() { @@ -141,8 +147,8 @@ fn main() { use_ortho: true font_size: 18 scale: 2 - }) - game.font_loaded = (game.ft != 0 ) + }) + game.font_loaded = (game.ft != 0 ) for { gg.clear(gx.White) game.draw_scene() @@ -173,6 +179,7 @@ fn (g mut Game) init_game() { last_row[j] = - 1 } g.score = 0 + g.state = .running } fn (g mut Game) parse_tetros() { @@ -187,8 +194,10 @@ fn (g mut Game) parse_tetros() { fn (g mut Game) run() { for { - g.move_tetro() - g.delete_completed_lines() + if g.state == .running { + g.move_tetro() + g.delete_completed_lines() + } glfw.post_empty_event() // force window redraw time.sleep_ms(TimerPeriod) } @@ -206,7 +215,7 @@ fn (g mut Game) move_tetro() { if row[x] != 0 { // The new tetro has no space to drop => end of the game if g.pos_y < 2 { - g.init_game() + g.state = .gameover return } // Drop it and generate a new one @@ -309,8 +318,15 @@ fn (g &Game) draw_field() { } fn (g &Game) draw_score() { - if g.font_loaded { - g.ft.draw_text(1, 2, 'score: ' + g.score.str(), text_cfg) + if g.font_loaded { + g.ft.draw_text(1, 2, 'score: ' + g.score.str(), text_cfg) + if g.state == .gameover { + g.ft.draw_text(1, WinHeight / 2 + 0 * TextSize, 'Game Over', text_cfg) + g.ft.draw_text(1, WinHeight / 2 + 2 * TextSize, 'SPACE to restart', text_cfg) + } else if g.state == .paused { + g.ft.draw_text(1, WinHeight / 2 + 0 * TextSize, 'Game Paused', text_cfg) + g.ft.draw_text(1, WinHeight / 2 + 2 * TextSize, 'SPACE to resume', text_cfg) + } } } @@ -354,9 +370,25 @@ fn key_down(wnd voidptr, key, code, action, mods int) { } // Fetch the game object stored in the user pointer mut game := &Game(glfw.get_window_user_pointer(wnd)) + // global keys switch key { case glfw.KEY_ESCAPE: glfw.set_should_close(wnd, true) + case GLFW_KEY_SPACE: + if game.state == .running { + game.state = .paused + } else if game.state == .paused { + game.state = .running + } else if game.state == .gameover { + game.init_game() + game.state = .running + } + } + if game.state != .running { + return + } + // keys while game is running + switch key { case glfw.KeyUp: // Rotate the tetro old_rotation_idx := game.rotation_idx diff --git a/vlib/glfw/glfw.v b/vlib/glfw/glfw.v index b3d30b479b..28dbc98346 100644 --- a/vlib/glfw/glfw.v +++ b/vlib/glfw/glfw.v @@ -35,7 +35,7 @@ import const ( ) import const ( - GLFW_KEY_ENTER + GLFW_KEY_SPACE GLFW_KEY_A GLFW_KEY_B GLFW_KEY_P @@ -49,7 +49,6 @@ import const ( GLFW_KEY_Z GLFW_KEY_UP GLFW_KEY_DOWN - GLFW_KEY_UP GLFW_KEY_LEFT GLFW_KEY_RIGHT GLFW_KEY_BACKSPACE