Nantes Université

Skip to content
Extraits de code Groupes Projets
Valider 8dd6797d rédigé par Julien COHEN's avatar Julien COHEN
Parcourir les fichiers

Clarifications.

parent 55f5cc3a
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -42,7 +42,7 @@ let init () =
}
end
(** {b Question :} D'un point de vue génie logiciel, quelle est l'utilité de forcer l'usage d'un paramètre de type [screen] dans les fonctions d'affichage ci-dessous ? *)
......@@ -65,7 +65,7 @@ let hauteur_fenetre = Params.hauteur_fenetre
(** {2 Sprites} Types de données décrivant les différents sprites. *)
type ennemi = Projectile | Vaisseau | Boss of int
type tir = Balle | Laser of int
type tir_joueur = Missile | Laser of int
let get_size_of_ennemi e =
match e with
......@@ -88,7 +88,7 @@ let affiche_ennemi s e p =
in Dessin.draw_image dessin (floatpos p)
let affiche_tir s t p = Dessin.draw_image_symH s.missile (floatpos p) (* FIXME *)
let affiche_tir_joueur s t p = Dessin.draw_image_symH s.missile (floatpos p) (* FIXME *)
let flip s =
......
......@@ -9,11 +9,9 @@
type screen
(** On doit appeler la fonction d'initialisation [init] pour obtenir une valeur du type [screen]. *)
val init : unit -> screen
(** On doit appeler la fonction d'initialisation [init] pour obtenir une valeur du type [screen].*)
(** {b Question :} D'un point de vue génie logiciel, quelle est l'utilité de forcer l'usage d'un paramètre de type [screen] dans les fonctions d'affichage ci-dessous ? *)
val init : unit -> screen
(** {2 Disctinction des joueurs } *)
......@@ -33,17 +31,17 @@ val hauteur_fenetre : int
(** {2 Sprites} Types de données décrivant les différents sprites. *)
type ennemi = Projectile | Vaisseau | Boss of int
type tir = Balle | Laser of int
type tir_joueur = Missile | Laser of int
val get_size_of_ennemi : ennemi -> int * int
val get_size_of_tir : tir -> int * int
val get_size_of_tir : tir_joueur -> int * int
val size_of_vaisseau : int * int
(** {2 Affichage } Fonctions d'affichage. *)
val affiche_vaisseau : screen -> joueur -> position -> unit
val affiche_ennemi : screen -> ennemi -> position -> unit
val affiche_tir : screen -> tir -> position -> unit
val affiche_vaisseau : screen -> joueur -> position -> unit
val affiche_ennemi : screen -> ennemi -> position -> unit
val affiche_tir_joueur : screen -> tir_joueur -> position -> unit
val flip : screen -> unit
......@@ -61,7 +59,7 @@ type commande_jeu = QuitCommand | NormalCommand of commande_joueur * commande_jo
(** @raise Quit lorsque l'utilisateur veut quitter le jeu (touche Echap, ou signal reçu par le processus). *)
(* @raise QuitCommand lorsque l'utilisateur veut quitter le jeu (touche Echap, ou signal reçu par le processus). *)
val get_actions : unit -> commande_jeu
......@@ -27,7 +27,7 @@ doc:
documentation: doc
ocamldoc -d doc -html -charset iso-8859-1 Interface.mli
ocamldoc -d doc -html -charset utf8 Interface.mli
Interface.cma: Params.cmo Utils.cmo Dessin.cmo Init.cmo Interface.cmo
......
......@@ -12,45 +12,43 @@ let traite_collisions_tirs projectiles ennemis = (ennemis, projectiles, 0)
(** IMPLEMENT-ME *)
let traite_collision_joueurs j1 j2 ennemis = None
let log (v_dir, h_dir,shoot) id =
let out =
(match id with
| A -> "J1 : "
| B -> "J2 : "
)
^ (match v_dir with
| Some Up -> "U "
| Some Down -> "D "
| None -> "_ "
)
^ (match h_dir with
| Some Right -> "R "
| Some Left -> "L "
| None -> "_ "
)
^ (if shoot then "* " else "_ ")
in print_endline out ;;
(** IMPLEMENT-ME *)
let traite_action (v_dir, h_dir,shoot) id info_j =
let _ =
print_string (match id with
| A -> "J1 : "
| B -> "J2 : "
)
in
let _ =
print_string (
match v_dir with
| Some Up -> "U "
| Some Down -> "D "
| None -> "_ "
)
in let _ =
print_string (
match h_dir with
| Some Right -> "R "
| Some Left -> "L "
| None -> "_ "
)
in let _ = print_string (if shoot then "* " else "_ ")
in ( (match id with A -> info_j + 1 | B -> info_j +2) mod hauteur_fenetre ,[])
let _ = log (v_dir, h_dir,shoot) id
in ((match id with A -> info_j + 1 | B -> info_j +2) mod hauteur_fenetre ,[]) ;;
(** IMPLEMENT-ME *)
let deplace_ennemis e proj = e
let deplace_ennemis e proj = e ;;
(** IMPLEMENT-ME *)
let affiche_jeu fen j1 j2 sc enn proj =
begin
begin (* FIX-ME *)
affiche_vaisseau fen A (j1,j1) ;
affiche_vaisseau fen B (j2,j2) ;
affiche_ennemi fen Vaisseau (400,130) ;
affiche_ennemi fen Projectile (320,150) ;
affiche_tir fen Balle (20,150) ;
affiche_ennemi fen Projectile (320,150) ;
affiche_tir_joueur fen Missile (20,150) ;
flip fen
end
end ;;
let rec gestion fenetre j1 j2 ennemis projectiles score =
......@@ -74,7 +72,6 @@ let rec gestion fenetre j1 j2 ennemis projectiles score =
| None ->
let (new_j1, projectiles_1) = traite_action action1 A j1 in
let (new_j2, projectiles_2) = traite_action action2 B j2 in
let _ = print_newline () in
let new_projectiles = projectiles_1 @ projectiles_2 @ new_projectiles in
let depl_ennemis = deplace_ennemis new_ennemis projectiles_2 in
......@@ -92,13 +89,13 @@ let rec gestion fenetre j1 j2 ennemis projectiles score =
(** Question : la fonction gestion est-elle implémentée par une récursion terminale? Pourquoi? *)
(** IMPLEMENT-ME *)
let init_j1 () = 10
let init_j1 = 10
(** IMPLEMENT-ME *)
let init_j2 () = 50
let init_j2 = 50
(** IMPLEMENT-ME *)
let init_ennemis () = [5]
let init_ennemis = [5]
let affiche_victoire s =
print_endline ("Congratulations. Your score is " ^ string_of_int s)
......@@ -113,11 +110,8 @@ let affiche_defaite j s =
(* Appel à la boucle de jeu. *)
let _ =
let s = init ()
and j1 = init_j1 ()
and j2 = init_j2 ()
and ennemis = init_ennemis()
in match gestion s j1 j2 ennemis [] 0
let scr = init ()
in match gestion scr init_j1 init_j2 init_ennemis [] 0
with
| Perdu (j, s) ->
affiche_defaite j s
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter