Advertisement
xX-AAAAAAAAAA-Xx

ComputerCraft Pong Client

Aug 17th, 2024 (edited)
542
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.18 KB | None | 0 0
  1. local modem = peripheral.wrap("right")
  2. modem.open(1)
  3.  
  4. local serverId = 6660 -- Replace with your server ID
  5. local playerId = 1 -- Replace with 1 or 2 depending on the player
  6. local paddleHeight = 5 -- Height of the paddle
  7. local paddleWidth = 1 -- Width of the paddle
  8.  
  9. -- Initialize paddle position
  10. local paddleY = 20
  11.  
  12. -- Function to clear the terminal screen
  13. local function clearScreen()
  14.     term.clear()
  15.     term.setCursorPos(1, 1)
  16. end
  17.  
  18. -- Function to render the game
  19. local function render(ballX, ballY, p1Y, p2Y, p1Score, p2Score)
  20.     clearScreen()
  21.    
  22.     -- Render paddles
  23.     for i = 0, paddleHeight - 1 do
  24.         term.setCursorPos(2, p1Y + i)
  25.         term.write("▓")
  26.         term.setCursorPos(78, p2Y + i)
  27.         term.write("▓")
  28.     end
  29.    
  30.     -- Render ball
  31.     term.setCursorPos(ballX, ballY)
  32.     term.write("●")
  33.    
  34.     -- Render scores
  35.     term.setCursorPos(5, 1)
  36.     term.write("Player 1 Score: " .. p1Score)
  37.     term.setCursorPos(65, 1)
  38.     term.write("Player 2 Score: " .. p2Score)
  39. end
  40.  
  41. -- Send initial presence message
  42. modem.transmit(1, serverId, textutils.serialize({action = "join", player = playerId}))
  43.  
  44. while true do
  45.     -- Handle user input
  46.     local event, key = os.pullEvent("key")
  47.    
  48.     if key == keys.w then
  49.         paddleY = math.max(1, paddleY - 1)
  50.     elseif key == keys.s then
  51.         paddleY = math.min(38 - paddleHeight + 1, paddleY + 1)
  52.     end
  53.    
  54.     -- Send paddle movement
  55.     modem.transmit(1, serverId, textutils.serialize({action = "move", player = playerId, y = paddleY}))
  56.    
  57.     -- Receive game state updates
  58.     local event, side, senderId, message, distance = os.pullEvent("modem_message")
  59.    
  60.     if senderId == serverId then
  61.         local data = textutils.unserialize(message)
  62.         if data then
  63.             -- Debugging output
  64.             print("Received data: " .. message)
  65.            
  66.             -- Update the game state
  67.             render(data.ball.x, data.ball.y, data.paddle1, data.paddle2, data.score1, data.score2)
  68.         else
  69.             print("Error: Data received is nil or not unserializable.")
  70.         end
  71.     end
  72.    
  73.     -- Sleep to control update frequency
  74.     sleep(0.05)
  75. end
  76.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement