Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local modem = peripheral.wrap("right")
- modem.open(1)
- local serverId = 6660 -- Replace with your server ID
- local playerId = 1 -- Replace with 1 or 2 depending on the player
- local paddleHeight = 5 -- Height of the paddle
- local paddleWidth = 1 -- Width of the paddle
- -- Initialize paddle position
- local paddleY = 20
- -- Function to clear the terminal screen
- local function clearScreen()
- term.clear()
- term.setCursorPos(1, 1)
- end
- -- Function to render the game
- local function render(ballX, ballY, p1Y, p2Y, p1Score, p2Score)
- clearScreen()
- -- Render paddles
- for i = 0, paddleHeight - 1 do
- term.setCursorPos(2, p1Y + i)
- term.write("▓")
- term.setCursorPos(78, p2Y + i)
- term.write("▓")
- end
- -- Render ball
- term.setCursorPos(ballX, ballY)
- term.write("●")
- -- Render scores
- term.setCursorPos(5, 1)
- term.write("Player 1 Score: " .. p1Score)
- term.setCursorPos(65, 1)
- term.write("Player 2 Score: " .. p2Score)
- end
- -- Send initial presence message
- modem.transmit(1, serverId, textutils.serialize({action = "join", player = playerId}))
- while true do
- -- Handle user input
- local event, key = os.pullEvent("key")
- if key == keys.w then
- paddleY = math.max(1, paddleY - 1)
- elseif key == keys.s then
- paddleY = math.min(38 - paddleHeight + 1, paddleY + 1)
- end
- -- Send paddle movement
- modem.transmit(1, serverId, textutils.serialize({action = "move", player = playerId, y = paddleY}))
- -- Receive game state updates
- local event, side, senderId, message, distance = os.pullEvent("modem_message")
- if senderId == serverId then
- local data = textutils.unserialize(message)
- if data then
- -- Debugging output
- print("Received data: " .. message)
- -- Update the game state
- render(data.ball.x, data.ball.y, data.paddle1, data.paddle2, data.score1, data.score2)
- else
- print("Error: Data received is nil or not unserializable.")
- end
- end
- -- Sleep to control update frequency
- sleep(0.05)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement