diff --git a/app.py b/app.py new file mode 100644 index 0000000..d70bbd2 --- /dev/null +++ b/app.py @@ -0,0 +1,76 @@ +from flask import Flask, request +from flask_json import FlaskJSON, as_json_p +from flask_cors import CORS +from board import Board +import main +import random +from network import Network + +app = Flask(__name__) + + +app.config['JSON_ADD_STATUS'] = False +app.config['JSON_JSONP_OPTIONAL'] = False + +json = FlaskJSON(app) +CORS(app) + +config = main.config.copy() +config['model'] = "player_testings" +config['ply'] = "1" +config['board_representation'] = 'quack-fat' +network = Network(config, config['model']) + +network.restore_model() + + +@app.route('/get_board', methods=['GET']) +@as_json_p +def get_board(): + return {'board':'0, 2, 0, 0, 0, 0, -5, 0, -3, 0, 0, 0, 5, -5, 0, 0, 0, 3, 0, 5, 0, 0, 0, 0, -2, 0'} + + + +def check_move(prev, curr): + + # TODO: Decide on player system and implement roll properly + legal_states = Board.calculate_legal_states(tuple(prev), -1, [1,2]) + + truth_list = [list(curr) == list(ele) for ele in legal_states] + + return any(truth_list) + + + +@app.route('/bot_move', methods=['POST']) +def bot_move(): + data = request.get_json(force=True) + + board = [int(x) for x in data['board'].split(',')] + + roll = (random.randrange(1,7), random.randrange(1,7)) + print(roll) + board, _ = network.make_move(tuple(board), roll, 1) + print("Boards!:",board) + + return ",".join([str(x) for x in list(board)]) + + + +@app.route('/post_board', methods=['POST']) +def post_board(): + data = request.get_json(force=True) + + board = [int(x) for x in data['board'].split(',')] + prev_board = [int(x) for x in data['prev_board'].split(',')] + + + str_board = ",".join([str(x) for x in (board if check_move(prev_board,board) else prev_board)]) + + print(check_move(prev_board, board)) + + + return str_board + +if __name__ == '__main__': + app.run()