| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #!/usr/bin/python3
- """
- Competitive tetris bot example
- """
- import time
- import random
- import zmq
- import flatbuffers
- import numpy as np
- import wire_protocol.Command
- import wire_protocol.CommandRequest
- import wire_protocol.CommandResponse
- import wire_protocol.CommandResponseError
- def main():
- context = zmq.Context()
- socket = context.socket(zmq.REQ)
- res = socket.connect("tcp://localhost:5555")
- print(f"connected: {res}")
- while True:
- builder = flatbuffers.Builder()
- wire_protocol.CommandRequest.Start(builder)
- wire_protocol.CommandRequest.AddCommand(
- builder,
- random.choice([
- wire_protocol.Command.Command.ShiftLeft,
- wire_protocol.Command.Command.ShiftRight,
- wire_protocol.Command.Command.Rotate,
- #wire_protocol.Command.Command.Land,
- ]))
- req = wire_protocol.CommandRequest.End(builder)
- builder.Finish(req)
- socket.send(builder.Output())
- rsp_buf = socket.recv()
- rsp = wire_protocol.CommandResponse.CommandResponse.GetRootAs(rsp_buf)
- builder = flatbuffers.Builder()
- wire_protocol.CommandRequest.Start(builder)
- wire_protocol.CommandRequest.AddCommand(
- builder,
- wire_protocol.Command.Command.GetGameState)
- req = wire_protocol.CommandRequest.End(builder)
- builder.Finish(req)
- socket.send(builder.Output())
- rsp_buf = socket.recv()
- rsp = wire_protocol.CommandResponse.CommandResponse.GetRootAs(rsp_buf)
- cells = rsp.Playfield().CellsAsNumpy()
- cells = cells.reshape((rsp.Playfield().Rows(), rsp.Playfield().Cols()))
- print(f"cells = \n{cells}\n")
- time.sleep(0.24)
- if __name__ == "__main__":
- main()
|