File size: 1,807 Bytes
01558b1
07a67c8
673fd12
07a67c8
44b4b17
673fd12
07a67c8
8fb7ddc
07a67c8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
673fd12
 
07a67c8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
01558b1
673fd12
07a67c8
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
47
48
49
import gradio as gr
from mario_gpt import MarioLM, SampleOutput

# Load the Mario GPT model
mario_lm = MarioLM()

# Define the function to generate Mario levels
def generate_mario_level(prompt, num_steps=1000, temperature=2.0):
    generated_level = mario_lm.sample(
        prompts=[prompt],
        num_steps=num_steps,
        temperature=temperature,
        use_tqdm=False
    )
    # Save the generated image to display
    generated_level.img.save("generated_level.png")
    generated_level.save("generated_level.txt")
    return generated_level.img, "generated_level.txt"

# Define the function to play the generated level
def play_generated_level(level_file):
    loaded_level = SampleOutput.load(level_file)
    loaded_level.play()
    return "Playing the level..."

# Create the Gradio interface
with gr.Blocks() as demo:
    gr.Markdown("## MARIOGPT Level Generator")
    with gr.Row():
        with gr.Column():
            prompt = gr.Textbox(lines=2, placeholder="Enter level description here...")
            num_steps = gr.Slider(400, 2000, step=100, label="Number of Steps")
            temperature = gr.Slider(0.5, 3.0, step=0.1, label="Temperature")
            generate_button = gr.Button("Generate Level")
        with gr.Column():
            level_image = gr.Image(type="pil")
            level_file = gr.File(label="Level File")
    generate_button.click(generate_mario_level, inputs=[prompt, num_steps, temperature], outputs=[level_image, level_file])
    
    gr.Markdown("## Play Generated Level")
    with gr.Row():
        with gr.Column():
            play_button = gr.Button("Play Level")
            play_result = gr.Textbox(label="Output")
    play_button.click(play_generated_level, inputs=[level_file], outputs=[play_result])

# Launch the Gradio interface
demo.launch()