File size: 1,336 Bytes
9fd0d3c
 
3ab14b8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import gradio as gr

def snake_game():
    # This function will just return the HTML since no user input is needed for this simple demo
    return f"""
    <div id="gameCanvas" style="width:400px;height:400px;border:1px solid black;"></div>
    <script>
    // Insert the JavaScript code here (Remove the script tags as they're not needed within this context)
    let canvas = document.getElementById('gameCanvas');
    let ctx = canvas.getContext('2d');
    let snake = [{x: 10, y: 10}];
    let food = {{x: 15, y: 15}};
    let gameLoop;

    function init() {{
        gameLoop = setInterval(game, 100);
    }}

    function game() {{
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        snake.unshift({{x: snake[0].x, y: snake[0].y}});
        snake[0].x += 1;
        ctx.fillStyle = "green";
        snake.forEach(part => {{
            ctx.fillRect(part.x * 10, part.y * 10, 10, 10);
        }});

        ctx.fillStyle = "red";
        ctx.fillRect(food.x * 10, food.y * 10, 10, 10);

        if(snake[0].x == food.x && snake[0].y == food.y) {{
            food.x = Math.floor(Math.random() * 40);
            food.y = Math.floor(Math.random() * 40);
        }} else {{
            snake.pop();
        }}
    }}

    init();
    </script>
    """

with gr.Blocks() as demo:
    gr.HTML(snake_game())

demo.launch()