import streamlit as st import json import random # Initialize session state if 'camera_offset' not in st.session_state: st.session_state.camera_offset = {"x": 0, "y": 0} if 'objects' not in st.session_state: st.session_state.objects = [] def update_canvas(direction=None, new_x=None, new_y=None, add_object=False, drag_x=0, drag_y=0): if direction: speed = 5 if direction == "up": st.session_state.camera_offset["y"] -= speed elif direction == "down": st.session_state.camera_offset["y"] += speed elif direction == "left": st.session_state.camera_offset["x"] -= speed elif direction == "right": st.session_state.camera_offset["x"] += speed if new_x is not None and new_y is not None: st.session_state.camera_offset["x"] = int(new_x) - 300 st.session_state.camera_offset["y"] = int(new_y) - 200 if add_object: new_object = { "x": st.session_state.camera_offset["x"] + 300, "y": st.session_state.camera_offset["y"] + 200, "size": 10, "color": f"rgb({random.randint(0,255)},{random.randint(0,255)},{random.randint(0,255)})" } st.session_state.objects.append(new_object) st.session_state.camera_offset["x"] += int(drag_x) st.session_state.camera_offset["y"] += int(drag_y) def render_canvas(): state = json.dumps({ "cameraOffset": st.session_state.camera_offset, "objects": st.session_state.objects }) return f"""
Player coordinates: X: {300 + st.session_state.camera_offset['x']}, Y: {200 + st.session_state.camera_offset['y']}