Code Royale - Puzzle Discussion

Hi, can anyone help with my python 3 code, here is a sample:

minimo = []
for i in range(num_sites):
    minimo.append(sites[i].dist_site)
minimo = sorted(minimo)
 

for x in sites:
    if x.dist_site == minimo[0] and x.owner != 0:
        msg = "BUILD " +  str(x.site_id) + " BARRACKS-KNIGHT"

I created a class Sites for storing sites info and status. I calculate the nearest site and send the queen to build but she keeps rebuilding it instead of going for the next nearest site. It looks like the sites info arent updated every turn, but since the updates are inside the game loop, I dont understand why not.

usually, when this kind of thing happens to me, it’s because I forgot to clear my list. Difficult to say though with your snippet.

This happend because i keep the minimum distance site a site that i already have, i just changed the condition to add the minimum distance always to a site that is not mine. Thanks for the help!

1 Like

Hello, sometimes when I run my code this error comes:
Code failed: nothing should be sent to the output before reaching the main entry point for your language.
Read: [Error occurred during initialization of VM]
But I don’t send anything to the output before the first round.
My Bot is written in Java. Does anybody else have this problem?

sorry about this. The issue has been fixed: https://www.codingame.com/forum/t/java-random-error-occurred-during-initialization-of-vm/120354/9

The number of turns keep changing randomly. now it is less than 10 turns all the time, it is even 3-4 turn!!!
in the code of the game I can see “theGameManager.maxTurns = 200”
But it is not valid.
Any idea how to handle this?

Are you sure your games are not ending because of a timeout ?
This causes an immediate loss whenever it happens.

Never mind made very silly mistake.

I have just started Code Royale. This is very basic, but I was just wondering what the command to build a barrack at the queen’s closest building site is. Many thanks.

All needed information can be found in the statement below the viewer:

Yeah, I found it. Thanks

Hi, I’m not sure if I’m missing something, but in the description it says that the response time for the first move is 1s. I’d like this second to calculate the best route between structures, but I don’t know on where my queen is until the first turn
 is there any way to know on which side I start before the game loop?

it seems there isn’t, although, if you look at the referee, you could get an idea:
https://github.com/csj/code-royale/blob/master/src/main/kotlin/com/codingame/game/Referee.kt

but, the first iteration of the while loop is the first turn, so you can use the time there, can’t you?

2 Likes

Ah obviously, that makes sense.

I know this is an old puzzle, but if anyone can help that’d be great.

I’ve got everything working (at least, I think it does) for the first level in ruby
 but the code is taking longer than the allowed time. I’m still pretty new to this stuff in general, and don’t know much about optimizing.

Can anyone give some advice on ways to get this moving fast enough?

Hi!
If any one could help me please

I am trying to submit my first version in wood league and whatever I write in the first output line, I get the error “Couldn’t process siteId:” :scream: :scream:

cg1

cg2

I suppose it has already been said but there is an error in the description of a game turn input. At least, in French.
It says
“Ligne 1: Un entier gold reprĂ©sentant l’or disponible du joueur.
Ligne 2: Un entier touchedSite reprĂ©sentant l’identifiant du site de construction en contact avec la Reine s’il existe, -1 sinon.”

Both the integers are sent on the same line, separated by a blank space.

Hi, I just started doing Code Royale and am still getting the basic idea of it.

I have run into an issue, I am trying to find the closest site that I can build a tower. To do this I have to find the position of my queen. I am looping through the variable numUnits to find my queens position. This should work, but when I print it out numUnits = 0. I don’t think it should be 0 because there are two queens on the field and it says:

"numUnits: Number of total active units, including Queens”

The key part of the code is:

var numUnits int
fmt.Scan(&numUnits)

/*
The print below will mess up the code and cause and error, but 
I am using it for testing purposes
*/

fmt.Println(numUnits, "numUnits")

Line 1 and 2: Two integers gold touchedSite


Next numSites lines: Seven integers siteId gold maxMineSize structureType owner param1 param2


Next Line: numUnits: Number of total active units, including Queens

You’ve deleted the lines that read the “next numSites lines” that come between the gold and numUnits. Probably best to make a copy of your code and reset to the default and make sure you don’t remove any input statements.

1 Like

Thank You! I didn’t realize that changing that would make a big difference!