2016-04-18 19:07:06 +00:00
|
|
|
\begin{tikzpicture}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%% ÉTATS DE JEU PRINCIPAUX %%
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
|
|
% Spécifications de l'état de jeu abstrait "niveau"
|
|
|
|
% qui est une collection d'objets
|
2016-04-18 21:43:43 +00:00
|
|
|
\umlabstract{Level}{
|
2016-04-18 19:07:06 +00:00
|
|
|
name : string\\
|
|
|
|
background : sprite\\
|
|
|
|
music : string\\
|
|
|
|
camera : vue\\
|
|
|
|
gravity\_direction : direction\\
|
|
|
|
total\_time : entier\\
|
|
|
|
players : \texttt{[Player]}\\
|
|
|
|
objects : \texttt{[Object]}\\
|
|
|
|
zone : \texttt{[vecteur]}
|
|
|
|
}{
|
|
|
|
enable() : vide\\
|
2016-04-18 21:43:43 +00:00
|
|
|
processEvent(event) : vide\\
|
2016-04-18 19:07:06 +00:00
|
|
|
load(file : string) : vide\\
|
|
|
|
save(file : string) : vide\\
|
|
|
|
\umlvirt{frame() : vide}\\
|
|
|
|
draw() : vide\\
|
|
|
|
addObject(object : \texttt{Object})\\
|
|
|
|
removeObject(object : \texttt{Object})
|
|
|
|
}
|
|
|
|
|
|
|
|
% Spécifications de l'état de jeu "éditeur" qui permet
|
|
|
|
% de modifier des niveaux de jeu
|
2016-04-18 21:43:43 +00:00
|
|
|
\umlclass[x=-6]{Editor}{
|
2016-04-18 19:07:06 +00:00
|
|
|
selection : \texttt{[Object]}
|
|
|
|
}{
|
|
|
|
enable() : vide\\
|
2016-04-18 21:43:43 +00:00
|
|
|
processEvent(event) : vide\\
|
2016-04-18 19:07:06 +00:00
|
|
|
frame() : vide\\
|
|
|
|
select(objet: \texttt{Object}) : vide\\
|
|
|
|
selectAll() : vide\\
|
|
|
|
clearSelection() : vide\\
|
|
|
|
}
|
|
|
|
\umlinherit{Level}{Editor}
|
|
|
|
|
|
|
|
% Spécifications de l'état de jeu "jeu" qui permet
|
|
|
|
% de jouer aux niveaux créés
|
2016-04-18 21:43:43 +00:00
|
|
|
\umlclass[x=6]{Game}{
|
2016-04-18 19:07:06 +00:00
|
|
|
mode : mode\\
|
|
|
|
next\_frame\_time : temps\\
|
|
|
|
pending\_kill : \texttt{[Object]}\\
|
|
|
|
time\_left : flottant
|
|
|
|
}{
|
|
|
|
enable() : vide\\
|
2016-04-18 21:43:43 +00:00
|
|
|
processEvent(event) : vide\\
|
2016-04-18 19:07:06 +00:00
|
|
|
frame() : vide\\
|
|
|
|
update() : vide\\
|
|
|
|
kill(objet : \texttt{Object}) : vide
|
|
|
|
}
|
|
|
|
\umlinherit{Level}{Game}
|
|
|
|
|
|
|
|
% Spécifications des objets du jeu
|
2016-04-18 21:43:43 +00:00
|
|
|
\umlabstract[y=-6.5]{Object}{
|
2016-04-18 19:07:06 +00:00
|
|
|
acceleration : vecteur\\
|
|
|
|
velocity : vecteur\\
|
|
|
|
position : vecteur\\
|
|
|
|
}{
|
|
|
|
\umlvirt{getForces(game : \texttt{Game}) : vecteur}\\
|
|
|
|
\umlvirt{activate(game : \texttt{Game}, object : \texttt{Object}) : vecteur}\\
|
|
|
|
\umlvirt{getAABB() : boîte}\\
|
|
|
|
\umlvirt{getRadius() : flottant}\\
|
2016-04-18 21:43:43 +00:00
|
|
|
\umlvirt{draw(level : \texttt{Level}) : vide}
|
2016-04-18 19:07:06 +00:00
|
|
|
}
|
|
|
|
\umlunicompo{Level}{Object}
|
|
|
|
|
|
|
|
% Spécifications de l'objet "joueur"
|
2016-04-18 21:43:43 +00:00
|
|
|
\umlclass[x=-4,y=-11]{Player}{
|
2016-04-18 19:07:06 +00:00
|
|
|
player\_number : entier non-signé
|
|
|
|
}{
|
|
|
|
getForces(game : \texttt{Game}) : vecteur\\
|
|
|
|
draw(level : \texttt{Level}) : vide\\
|
|
|
|
activate(game : \texttt{Game}, object : \texttt{Object}) : vecteur\\
|
|
|
|
getAABB() : boîte\\
|
|
|
|
getRadius() : flottant\\
|
|
|
|
}
|
|
|
|
\umlinherit{Object}{Player}
|
|
|
|
|
|
|
|
% Spécifications de l'objet "bloc"
|
2016-04-18 21:43:43 +00:00
|
|
|
\umlclass[x=4,y=-11]{Block}{}{
|
2016-04-18 19:07:06 +00:00
|
|
|
draw(level : \texttt{Level}) : vide\\
|
|
|
|
prepareDraw(resources : \texttt{ResourceManager}) : vide\\
|
|
|
|
activate(game : \texttt{Game}, object : \texttt{Object}) : vecteur\\
|
|
|
|
getAABB() : boîte\\
|
|
|
|
getRadius() : flottant\\
|
|
|
|
}
|
|
|
|
\umlinherit{Object}{Block}
|
|
|
|
|
|
|
|
% Spécifications de l'objet "bloc de fin" permettant
|
|
|
|
% quand il est activé de terminer le niveau
|
2016-04-18 21:43:43 +00:00
|
|
|
\umlclass[x=-2,y=-14]{FinishBlock}{}{
|
2016-04-18 19:07:06 +00:00
|
|
|
prepareDraw(resources : \texttt{ResourceManager}) : vide\\
|
|
|
|
activate(game : \texttt{Game}, object : \texttt{Object}) : vecteur
|
|
|
|
}
|
|
|
|
\umlinherit{Block}{FinishBlock}
|
|
|
|
|
|
|
|
% Spécifications de l'objet "bloc de gravité" permettant
|
|
|
|
% quand il est activé de réorienter la gravité du niveau
|
2016-04-18 21:43:43 +00:00
|
|
|
\umlclass[x=6,y=-14]{GravityBlock}{
|
2016-04-18 19:07:06 +00:00
|
|
|
gravity\_direction : direction
|
|
|
|
}{
|
|
|
|
prepareDraw(resources : \texttt{ResourceManager}) : vide\\
|
|
|
|
activate(game : \texttt{Game}, object : \texttt{Object}) : vecteur
|
|
|
|
}
|
|
|
|
\umlinherit{Block}{GravityBlock}
|
|
|
|
|
|
|
|
% Spécifications de l'objet "bloc tueur" permettant
|
|
|
|
% quand il est activé par un joueur de le tuer
|
2016-04-18 21:43:43 +00:00
|
|
|
\umlclass[x=-2,y=-16.5]{KillBlock}{}{
|
2016-04-18 19:07:06 +00:00
|
|
|
prepareDraw(resources : \texttt{ResourceManager}) : vide\\
|
|
|
|
activate(game : \texttt{Game}, object : \texttt{Object}) : vecteur
|
|
|
|
}
|
|
|
|
\umlinherit{Block}{KillBlock}
|
|
|
|
|
|
|
|
% Spécifications de l'objet "bloc d'échange" permettant
|
|
|
|
% quand il est activé par un joueur d'échanger sa charge
|
2016-04-18 21:43:43 +00:00
|
|
|
\umlclass[x=6,y=-16.5]{SwitchBlock}{}{
|
2016-04-18 19:07:06 +00:00
|
|
|
prepareDraw(resources : \texttt{ResourceManager}) : vide\\
|
|
|
|
activate(game : \texttt{Game}, object : \texttt{Object}) : vecteur
|
|
|
|
}
|
|
|
|
\umlinherit{Block}{SwitchBlock}
|
|
|
|
\end{tikzpicture}
|