replace angle with keeps

This commit is contained in:
Pavel 2021-10-17 19:49:33 +02:00
parent 3b258108a0
commit ba6bc63cad
2 changed files with 27 additions and 24 deletions

View File

@ -208,27 +208,27 @@ double score(double *steps, int size)
{
int i;
double a, b, x, y, l;
double position[] = {47.5, 43.5, 0.0};
double position[3] = {steps[0], steps[1], 0.0};
struct STATE state;
state.x = 47.5;
state.y = 43.5;
state.x = steps[0];
state.y = steps[1];
state.a = 0;
state.s = 0;
state.life = 250;
state.tockens = 1;
state.boat = 0;
state.dsize = 0;
state.boat = steps[2];
state.dsize = steps[3];
state.vlast = 0;
i = 0;
for(i = 0; i < size; ++i)
for(i = 4; i < size - 3; i += 4)
{
x = steps[0 + i * 4];
a = steps[1 + i * 4];
y = steps[2 + i * 4];
b = steps[3 + i * 4];
x = steps[0 + i];
a = steps[1 + i];
y = steps[2 + i];
b = steps[3 + i];
x += a * 1e-14;
y += b * 1e-14;
a = atan2(y - position[1], x - position[0]) * 180.0 / M_PI - position[2];

View File

@ -60,7 +60,7 @@ def read_steps(buffer):
def write_steps(steps):
size = len(steps)
buffer = '\n'
buffer += 'start (x y angle boat):\n'
buffer += 'start (x y boat keeps):\n'
buffer += '%7.3f %6.3f %g %d\n' % (steps[0], steps[1], steps[2], steps[3])
buffer += '\n'
buffer += 'steps (x a y b):\n'
@ -74,7 +74,7 @@ def optimize():
buffer = text.get('1.0', 'end - 1c')
steps = read_steps(buffer)
draw_path(steps, False)
smax = state[3] + 1000 * (len(state[7]) >= 10)
smax = state[3] + 1000 * (state[9] >= 10)
size = len(steps)
kmax = -1
cmax = -1
@ -85,7 +85,7 @@ def optimize():
buffer = write_steps(steps)
steps = read_steps(buffer)
draw_path(steps, False)
s = state[3] + 1000 * (len(state[7]) >= 10)
s = state[3] + 1000 * (state[9] >= 10)
if smax < s:
smax = s
kmax = k
@ -119,7 +119,7 @@ def draw_coordinates():
def draw_state():
global canvas, map_h, state
score = state[3] + 1000 * (len(state[7]) >= 10)
score = state[3] + 1000 * (state[9] >= 10)
t = 'score: %20.15f, life: %5.1f' % (score, state[4])
canvas.create_text(4, map_h + 20, anchor = 'nw', text = t, fill = 'black', font = 'TkFixedFont')
@ -130,11 +130,13 @@ def draw_help():
def draw_path(steps, draw = True):
global state
state = [0, 0, 0, 0, 250, 1, 0, [], 0]
state = [0, 0, 0, 0, 250, 1, 0, 0, [], 0]
a1 = 0
if len(steps) >= 4:
x1, y1, a1 = steps[0:3]
state[0:3] = x1, y1, a1
state[6] = steps[3]
x1, y1 = steps[0:2]
state[0:2] = x1, y1
state[6] = steps[2]
state[9] = steps[3]
for k in range(1, len(steps) // 4):
x2, a, y2, b = steps[k * 4:(k + 1) * 4]
x2 += a * 1e-14
@ -275,26 +277,27 @@ def en_avant(l):
state[3] -= d # score
state[4] -= d # life
state[0:2] = l[k][0:2]
if c1 == 7 and not(xr in state[7]):
if c1 == 7 and not(xr in state[8]):
if state[4] >= 100:
state[4] = max(state[4] - 100, 0)
state[3] += 100
state[5] += 1
state[7].append(xr)
if c1 == 6 and xr != state[8]:
if not state[6] and len(state[7]) >= 9:
state[8].append(xr)
state[9] += 1
if c1 == 6 and xr != state[7]:
if not state[6] and state[9] >= 9:
state[6] = 1
elif state[5]:
state[4] = min(250, state[4] + 120)
state[5] -= 1
state[8] = xr
state[7] = xr
def a_droite(a): state[2] += a
coordinates = [0, 0, None]
buffer = '''
start (x y angle boat):
start (x y boat keeps):
47.500 43.500 0 0
steps (x a y b):