in #U5b9e#U8df5#U9879#U76ee/2019_MSC_#U9ec4#U91d1#U70b9/#U5fae#U8f6f#U9ec4#U91d1#U70b9#U7a0b#U5e8f#U5de5#U5177/OnlineGame/BotDemoInPython/RLBotDemo.py [0:0]
def main(roomid, userid, usertoken):
# Make sure all the parameters have the right value
roomid, userid, usertoken = perProcess(roomid, userid, usertoken)
while True:
stateResp = client.request(
app.op['State'](
uid = userid,
roomid = roomid
))
if stateResp.status != 200:
print('Network issue, query again after 1 second')
time.sleep(1)
continue
state = stateResp.data
if state.state == 2:
print('The game has finished')
break
if state.state == 1:
print('The game has not started, query again after 1 second')
time.sleep(1)
continue
if state.hasSubmitted:
print('Already submitted this round, wait for next round')
if state.maxUserCount == 0:
time.sleep(state.leftTime + 1)
else:
# One round can be finished when all players submitted their numbers if the room have set the max count of users, need to check the state every second.
time.sleep(1)
continue
print('\r\nThis is round ' + str(state.finishedRoundCount + 1))
todayGoldenListResp = client.request(
app.op['TodayGoldenList'](
roomid = roomid
))
if todayGoldenListResp.status != 200:
print('Network issue, query again after 1 second')
time.sleep(1)
continue
todayGoldenList = todayGoldenListResp.data
if len(todayGoldenList.goldenNumberList) != 0:
print('Last golden number is: ' + str(todayGoldenList.goldenNumberList[-1]))
lastRoundResp = client.request(
app.op['History'](
roomid = roomid,
count = 1
))
if lastRoundResp.status != 200:
print('Network issue, query again after 1 second')
time.sleep(1)
continue
lastScore = 0
if len(lastRoundResp.data.rounds) > 0:
scoreArray = [user for user in lastRoundResp.data.rounds[0].userNumbers if user.userId == userid]
if len(scoreArray) == 1:
lastScore = scoreArray[0].score
print('Last round score: {}'.format(lastScore))
number1, number2 = GeneratePredictionNumbers(todayGoldenList.goldenNumberList, lastScore, state.numbers)
computedToken = ''
if state.enabledToken:
mergedString = userid + state.roundId + usertoken
computedToken = base64.b64encode(hashlib.sha256(mergedString.encode('utf-8')).digest()).decode('utf-8')
if state.numbers == 2:
submitRsp = client.request(
app.op['Submit'](
uid = userid,
rid = state.roundId,
n1 = str(number1),
n2 = str(number2),
token = computedToken
))
if submitRsp.status == 200:
print('You submit numbers: ' + str(number1) + ', ' + str(number2))
else:
print('Error: ' + submitRsp.data.message)
time.sleep(1)
else:
submitRsp = client.request(
app.op['Submit'](
uid = userid,
rid = state.roundId,
n1 = str(number1),
token = computedToken
))
if submitRsp.status == 200:
print('You submit number: ' + str(number1))
else:
print('Error: ' + submitRsp.data.message)
time.sleep(1)