Files @ 077600f0c5f8
Branch filter:

Location: OneEye/src/util.py

Laman
engine v1 mostly finished
import random
import multiprocessing
import logging as log


EMPTY=0
BLACK=1
WHITE=-1

colorNames={BLACK:"B",WHITE:"W"}


class MsgQueue:
	def __init__(self,handler=None):
		self._queue=multiprocessing.Queue()
		self._event=multiprocessing.Event()
		self._handleEvent=handler

	def send(self,actionName,args=tuple(),kwargs=None):
		if kwargs is None: kwargs=dict()
		self._queue.put((actionName,args,kwargs))
		self._event.set()

	def listen(self,handleEvent=None):
		if handleEvent is not None: self._handleEvent=handleEvent

		while True:
			self._event.wait()
			msg=self._queue.get()
			if self._queue.empty():
				self._event.clear()
			log.info(msg)
			if msg[0]=="!kill": break
			self._handleEvent(msg)

	def setHandler(self,handler):
		self._handleEvent=handler


rand=random.Random()
rand.seed(361)
zobristNums=tuple(
	tuple(
		tuple(rand.getrandbits(32) for i in range(3)) for c in range(19)
	) for r in range(19)
)

def hashBoard(board):
	res=0
	for (r,row) in enumerate(board):
		for (c,item) in enumerate(row):
			res^=zobristNums[r][c][item+1]
	return res