fixed minor oversight with crates

This commit is contained in:
Alexandre 2024-12-04 17:01:25 +01:00
parent 7ee82cce86
commit 3a1f76cb01
7 changed files with 32 additions and 24 deletions

BIN
again

Binary file not shown.

BIN
again.cmi

Binary file not shown.

BIN
again.cmx

Binary file not shown.

View File

@ -754,8 +754,9 @@ let is_a_crate_nearby (gd : game_data) (dgs : danger_map) =
let nx = gd.players.(pid).xy.x + o * (fst order.(dir))
and ny = gd.players.(pid).xy.y + o * (snd order.(dir)) in
if is_valid nx ny lines cols then begin
if gd.laby.(nx).(ny) = 2 && not dgs.explodedCrates.(nx).(ny) then begin
res := true;
if gd.laby.(nx).(ny) = 2 then begin
if not dgs.explodedCrates.(nx).(ny) then
res := true;
halt := true
end
else if gd.laby.(nx).(ny) = 1 then
@ -784,8 +785,9 @@ let sees_a_crate (gd : game_data) (dgs : danger_map) (x : int) (y : int) =
let nx = x + o * (fst order.(dir))
and ny = y + o * (snd order.(dir)) in
if is_valid nx ny lines cols then begin
if gd.laby.(nx).(ny) = 2 && not dgs.explodedCrates.(nx).(ny) then begin
res := true;
if gd.laby.(nx).(ny) = 2 then begin
if not dgs.explodedCrates.(nx).(ny) then
res := true;
halt := true
end
else if gd.laby.(nx).(ny) = 1 then

BIN
again.o

Binary file not shown.

View File

@ -1,23 +1,22 @@
180.16800000000111
164.0
2
13 21
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 4 4 4 4 4 4 4 0 0 0 6 6 6 6 6 6 6 6 5 1
1 3 1 3 1 4 1 4 1 3 1 5 1 6 1 5 1 5 1 5 1
1 3 0 3 0 4 6 6 6 3 6 5 6 6 6 6 6 6 5 5 1
1 3 1 3 1 4 1 4 1 3 1 6 1 6 1 4 1 4 1 5 1
1 3 3 3 3 4 3 3 3 3 3 3 3 3 3 6 6 6 6 6 1
1 3 1 3 1 3 1 4 1 3 1 6 1 6 1 4 1 4 1 4 1
1 6 6 6 6 6 6 4 6 3 6 6 6 6 6 6 6 6 4 4 1
1 3 1 3 1 3 1 6 1 3 1 6 1 6 1 4 1 4 1 4 1
1 6 6 3 3 3 3 3 3 3 3 6 3 3 3 4 4 4 4 4 1
1 3 1 6 1 6 1 6 1 3 1 6 1 6 1 4 1 4 1 4 1
1 6 6 6 6 3 3 6 3 3 3 6 3 6 4 4 4 4 4 4 1
1 3 3 3 3 0 0 0 0 0 0 3 3 3 3 3 3 5 5 5 1
1 3 1 3 1 0 1 6 1 6 1 3 1 3 1 0 1 5 1 5 1
1 3 3 3 3 3 0 6 0 6 5 3 5 3 3 4 5 5 5 5 1
1 3 1 3 1 3 1 6 1 6 1 6 1 4 1 6 1 4 1 5 1
1 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 3 4 0 5 1
1 6 1 6 1 3 1 6 1 6 1 6 1 6 1 6 1 4 1 0 1
1 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 0 1
1 6 1 6 1 3 1 6 1 6 1 6 1 6 1 6 1 4 1 4 1
1 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 1
1 6 1 6 1 6 1 6 1 6 1 6 1 6 1 6 1 4 1 4 1
1 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 4 4 4 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0
4
3 6 0 0 2 5 2 2
2 3 1 1 2 4 4 3
3 8 2 3 1 1 1 1
3 9 3 1 1 6 2 1
3
3 10 0 4 3 2 3 1
5 10 2 0 2 3 1 4
7 10 3 3 4 6 2 1
0

View File

@ -64,6 +64,7 @@ from tkinter import *
import os
from playsound import playsound
from threading import Thread
import sys
def attente(vitesse):
return TEMPS_BASE * 0.9**vitesse
@ -166,6 +167,7 @@ def affiche_powerup(canvas, couleurPowerup, j, k):
fill="yellow")
def affiche_plateau(canvas, plateau, plateauCouleur, bombes, joueurs, powerups):
#print('---------IN---------', file=sys.stderr)
canvas.delete(ALL)
for i in range(len(plateau)):
@ -205,7 +207,8 @@ def affiche_plateau(canvas, plateau, plateauCouleur, bombes, joueurs, powerups):
couleurPowerup = COULEURS_POWERUPS[powerups[trouve_objet(i,j, powerups)][PU_NATURE]]
affiche_powerup(canvas, couleurPowerup, j, i)
#canvas.create_polygon(j*TAILLE_TUILE+TAILLE_TUILE/2, i*TAILLE_TUILE, j*TAILLE_TUILE, i*TAILLE_TUILE+TAILLE_TUILE/2, j*TAILLE_TUILE+TAILLE_TUILE/2, (i+1)*TAILLE_TUILE, (j+1)*TAILLE_TUILE, i*TAILLE_TUILE + TAILLE_TUILE/2, fill=couleurPowerup)
#print('---------OUT---------', file=sys.stderr)
def trace_bomberman(canvas, x, y, couleur):
canvas.create_oval(x+15, y+15, x+TAILLE_TUILE-15, y+TAILLE_TUILE, fill=couleur)
canvas.create_oval(x+10, y, x+TAILLE_TUILE-10, y+TAILLE_TUILE-20, fill=couleur)
@ -237,6 +240,7 @@ def affiche_empires(canvas, joueurs, plateauCouleur):
canvas.create_text(X0_EMPIRES + X_LARGEUR_EMPIRES/2, Y0_EMPIRES + k*Y_STEP_CLAIMS, text=str(scores[k]), fill=COULEURS_JOUEURS[k])
def affiche_infos(canvas, joueurs, plateauCouleur):
#print('---------IN2---------', file=sys.stderr)
canvas.delete(ALL)
scores = list(reversed((sorted(zip(compte_couleur(plateauCouleur, len(joueurs)), range(len(joueurs)))))))
for k in range(len(scores)):
@ -312,6 +316,7 @@ def affiche_infos(canvas, joueurs, plateauCouleur):
else:
couleur = "gray"
trace_bomberman(canvas, 0, HAUTEUR_JOUEUR*k,couleur)
#print('---------OUT2---------', file=sys.stderr)
def ajoute_evenement(evenements, evenement):
@ -500,19 +505,22 @@ def decision(programme, indiceJoueur, plateau, plateauCouleur, bombes, joueurs,
direction, b = sortie.readline().split()
action = int(b)
return int(direction), action
def simulation(strategies):
def pas_de_jeu():
if len(joueurs) - joueurs.count(None) > 0:
evenement = evenements.pop(0)
if evenement[0]>TEMPS_PARTIE:
return
#print('---------', file=sys.stderr)
execute_evenement(evenements, evenement, plateau, plateauCouleur, bombes, joueurs, powerups, pieges)
affiche_plateau(canvas, plateau, plateauCouleur, bombes, joueurs, powerups)
affiche_infos(canvasInfosJoueurs, joueurs, plateauCouleur)
affiche_empires(canvasInfosJoueurs, joueurs, plateauCouleur) # very laggy for some reason # not anymore
temps = int((evenements[0][0]-evenement[0])/3*200)
#print(temps)
if temps != 0:
#print('+++++++++', file=sys.stderr)
fenetre.after(temps, pas_de_jeu)
else:
pas_de_jeu()
@ -520,7 +528,6 @@ def simulation(strategies):
dimensions = 13,21
positionsInitiales=[(1, 1), (dimensions[0]-2, dimensions[1]-2), (1, dimensions[1]-2), (dimensions[0]-2, 1)]
plateau = cree_plateau_initial(dimensions[0]-2, dimensions[1]-2, 20)
plateauCouleur = [[-1 for j in range(dimensions[1])] for i in range(dimensions[0])]