FORGE PONG

⚡ Powered by the FORGE Language Runtime
Player 1
0
Player 2
0
W / S — Player 1
/ — Player 2
Space — Pause
▶ Playing

🔮 Equivalent FORGE Code

// FORGE Pong — @parallel physics engine
module Pong {
    struct Ball { x: i32, y: i32, vx: i32, vy: i32 }
    struct Paddle { y: i32, score: i32 }
    struct GameState {
        ball: Ball,
        left: Paddle,
        right: Paddle,
        frame: i32
    }

    fn init_game() -> GameState {
        return GameState{
            ball: Ball{ x: 40, y: 12, vx: 1, vy: 1 },
            left: Paddle{ y: 10, score: 0 },
            right: Paddle{ y: 10, score: 0 },
            frame: 0
        }
    }

    @parallel
    fn update_physics(state: GameState) -> GameState {
        let nx: i32 = state.ball.x + state.ball.vx
        let ny: i32 = state.ball.y + state.ball.vy
        // Wall bounce, paddle hit, scoring...
        // Auto-parallelised across CPU cores
        return GameState{ ... }
    }

    fn render_frame(state: GameState) -> void {
        // Terminal render (80x25)
        print("Left: {d}  Right: {d}",
              state.left.score, state.right.score)
    }

    fn run_loop() -> void {
        let game = init_game()
        while true {
            render_frame(game)
            game = update_physics(game)
        }
    }
}
← forgelang.dev  ·  Built with FORGE  ·  Open Source