Paddle ← → dengan PyScript
import js, asyncio
from pyodide.ffi import create_proxy
canvas = js.document.getElementById("kanvas")
ctx = canvas.getContext("2d")
# Paddle setup
pad_w, pad_h = 100, 15
pad_x = (canvas.width - pad_w) / 2
pad_y = canvas.height - pad_h - 20
step = 20
# Event handler
def on_key(evt):
global pad_x
evt.preventDefault()
if evt.key in ("ArrowLeft", "Left"):
pad_x -= step
elif evt.key in ("ArrowRight", "Right"):
pad_x += step
pad_x = max(0, min(pad_x, canvas.width - pad_w))
# Daftarkan event dengan create_proxy
js.window.addEventListener("keydown", create_proxy(on_key))
# Animasi loop
async def update():
global pad_x
while True:
ctx.clearRect(0, 0, canvas.width, canvas.height)
ctx.fillStyle = "steelblue"
ctx.fillRect(pad_x, pad_y, pad_w, pad_h)
await asyncio.sleep(0.01)
await update()