import socket
import threading
from parser import ArgError, Parser
-from game_common import World
+from game_common import World, Commander
-class Game:
+class Game(Commander):
world = World()
log_text = ''
symbol = 'm'
return symbol
- def cmd_MAP_SIZE(self, yx):
- """Set self.map_size to yx, redraw self.terrain_map as '?' cells."""
- self.world.set_map_size(yx)
- cmd_MAP_SIZE.argtypes = 'yx_tuple:nonneg'
-
- def cmd_TERRAIN_LINE(self, y, terrain_line):
- self.world.set_map_line(y, terrain_line)
- cmd_TERRAIN_LINE.argtypes = 'int:nonneg string'
-
- def cmd_THING_TYPE(self, i, type_):
- t = self.world.get_thing(i)
- t.type_ = type_
- cmd_THING_TYPE.argtypes = 'int:nonneg string'
-
- def cmd_THING_POS(self, i, yx):
- t = self.world.get_thing(i)
- t.position = list(yx)
- cmd_THING_POS.argtypes = 'int:nonneg yx_tuple:nonneg'
-
def cmd_TURN_FINISHED(self, n):
"""Do nothing. (This may be extended later.)"""
pass
self.id_ = id_
self.type_ = '?'
self.position = [0,0]
+
+
+class Commander:
+
+ def cmd_MAP_SIZE(self, yx):
+ """Set self.map_size to yx, redraw self.terrain_map as '?' cells."""
+ self.world.set_map_size(yx)
+ cmd_MAP_SIZE.argtypes = 'yx_tuple:nonneg'
+
+ def cmd_TERRAIN_LINE(self, y, terrain_line):
+ self.world.set_map_line(y, terrain_line)
+ cmd_TERRAIN_LINE.argtypes = 'int:nonneg string'
+
+ def cmd_THING_TYPE(self, i, type_):
+ t = self.world.get_thing(i)
+ t.type_ = type_
+ cmd_THING_TYPE.argtypes = 'int:nonneg string'
+
+ def cmd_THING_POS(self, i, yx):
+ t = self.world.get_thing(i)
+ t.position = list(yx)
+ cmd_THING_POS.argtypes = 'int:nonneg yx_tuple:nonneg'
import os
from parser import ArgError, Parser
from server_.game import World, GameError
+from game_common import Commander
# Avoid "Address already in use" errors.
return fib(n-1) + fib(n-2)
-class CommandHandler:
+class CommandHandler(Commander):
def __init__(self):
from multiprocessing import Pool
self.world.get_player().set_task('wait')
self.proceed()
- def cmd_MAP_SIZE(self, yx):
- self.world.set_map_size(yx)
- cmd_MAP_SIZE.argtypes = 'yx_tuple:nonneg'
-
- def cmd_TERRAIN_LINE(self, y, line):
- self.world.set_map_line(y, line)
- cmd_TERRAIN_LINE.argtypes = 'int:nonneg string'
-
- def cmd_THING_TYPE(self, i, type_):
- t = self.world.get_thing(i)
- t.type_ = type_
- cmd_THING_TYPE.argtypes = 'int:nonneg string'
-
- def cmd_THING_POS(self, i, yx):
- t = self.world.get_thing(i)
- t.position = list(yx)
- cmd_THING_POS.argtypes = 'int:nonneg yx_tuple:nonneg'
-
def cmd_GET_TURN(self, connection_id):
"""Send world.turn to caller."""
self.send_to(connection_id, str(self.world.turn))