Class Interaction

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Canvas
              |
              +--Interaction

public class Interaction
extends java.awt.Canvas
implements java.lang.Runnable, java.awt.event.KeyListener

Classe qui fait le lien entre les joueurs, le labyrinthe et les decors. Gere et definit les interactions entre les joueurs et le labyrinthe.

Version:
1.1.6
Author:
Cecile FRANCOU, Sophia GALLARDO
See Also:
Labyrinthe, Joueur, FenetreDuJeu, AffichageScores, Decors, Fille, Garcon, Labyrinthe, Serialized Form

Inner classes inherited from class java.awt.Component
java.awt.Component.AWTTreeLock
 
Field Summary
private  AffichageScores affichage_scores
          Affichage des scroes
private  Bete bete
          la "be-bete"
private  boolean bisou
          Indique si il y a eu bisou ou pas de la part du garcon
private  Decors coeur
          Le coeur qui s'affiche a la place du joueur quand celui-ci donne un "smack" a la fille
private  int compteur_jeu
          compteur de jeu dans une partie
private  java.awt.Image db
          double buffer pour mettre les images en memoire
private  java.awt.Graphics dbGC
          objet graphique qui sert a afficher tous les elements graphiques du jeu dans le meme contexte graphique
private  FenetreDuJeu fenetre
          fenetre ou se deroule le jeu
private  Fille fille
          la fille
private  Decors gant
          Le gant qui servira a la fille pour donner une gifle au garcon
private  Garcon garcon
          le garcon
private  int hauteur
          hauteur de la fenetre en pixels
private  boolean jeu_termine
          Indique si le jeu est termine
private  Labyrinthe laby
          le labyrinthe
private  int longueur
          longueur de la fenetre en pixels
private  int nb_jeux
          nombre de jeux dans une partie : 1, 3 ou 5 jeux
private  int nbcases_x
          nombre de cases dans le sens de la longueur
private  int nbcases_y
          nombre de cases dans le sens de la hauteur
private  boolean sortie
          Indique si la fille a atteint la sortie
private  int[] tableau_pour_afficher
          Tableau pour afficher les scores des joueurs et les statistiques telles que le nombre de jeux dans une partie et le numero de jeu dans la partie.
private  java.lang.Thread thread_interaction
          le thread de la classe interaction qui dessine tout
 
Fields inherited from class java.awt.Canvas
base, graphicsConfig, nameCounter, serialVersionUID
 
Fields inherited from class java.awt.Component
actionListenerK, adjustmentListenerK, appContext, assert, background, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, changeSupport, componentListener, componentListenerK, componentOrientation, componentSerializedDataVersion, containerListenerK, cursor, dropTarget, enabled, eventMask, focusListener, focusListenerK, font, foreground, hasFocus, height, incRate, inputMethodListener, inputMethodListenerK, isInc, isPacked, itemListenerK, keyListener, keyListenerK, LEFT_ALIGNMENT, locale, LOCK, minSize, mouseListener, mouseListenerK, mouseMotionListener, mouseMotionListenerK, name, nameExplicitlySet, newEventsOnly, ownedWindowK, parent, peer, peerFont, popups, prefSize, RIGHT_ALIGNMENT, serialVersionUID, textListenerK, TOP_ALIGNMENT, valid, visible, width, windowListenerK, x, y
 
Constructor Summary
Interaction(FenetreDuJeu fenetre)
          Cree le jeu.
 
Method Summary
 void activer_threads()
          Activer les threads : interaction et joueurs
 void AddCompteur_de_jeu()
          Incremente le compteur de jeu.
 void afficher()
          On veut afficher les joueurs, le numero du jeu, le nombre de jeu total et le nombre de jeu gagne par chacun des joueurs.
 boolean choc_mur(int x, int y)
          Indique si il y a un mur selon les coordonnees x et y.
 boolean contact_possible()
          Indique si une claque ou un bisou sont possibles.
 void demarrer(int nb_cases_x, int nb_cases_y, int nb_jeux_gagnes_fille, int nb_jeux_gagnes_garcon)
          On demarre le jeu.
 void desactiver_threads()
          Desactiver les threads : interaction et joueurs
 void fille_est_sortie()
          La fille gagne le jeu : on tue les threads et on elle gagne une jeu de plus.
 void fille_fou_baffe()
          La fille donne une claque au garcon.
 boolean fille_gagne()
          Indique si la fille a gagne.
 void fille_peut_baffer()
          La fille peut donner une gifle.
 boolean fille_sur_gant()
          Indique que la la fille est sur la case ou se trouve le gant.
 boolean fille_sur_sortie()
          Indique si la fille est sur la case de la sortie.
 boolean garcon_gagne()
          Indique si le garcon a gagne.
 void garcon_valse()
          le garcon est envoye n'importe ou dans le labyrinthe sauf dans une case deja occupee.
 void genererBete(Cell position)
           
 void genererFille(Cell position)
          Creation de la fille : on lui attribut des touches et une position initiale.
 void genererGant(Cell position)
          Creation du gant a une certaine position.
 void genererGarcon(Cell position)
          Creation du garcon : on lui attribut des touches et une position initiale.
 void genererLaby(int nb_cases_x, int nb_cases_y)
          Creation du labyrinthe avec un certain nombre de cases en hauteur et en longueur.
 AffichageScores getAffichage()
          Renvoi l'affichage pour les scores.
 boolean getBisou()
          Indique si le garcon a fait le bisou a la fille.
 int getCompteur_jeu()
          Renvoie le compteur de jeu.
 int getHauteurcase()
          Renvoie la hauteur d'une case.
 int getLongueurcase()
          Renvoie la longueur d'une case.
 java.awt.Dimension getMinimumSize()
          Renvoie la dimension de la fenetre.
 int getNb_jeux()
          Renvoie le nombre de jeux totaux dans la partie.
 java.awt.Dimension getPreferredSize()
          Renvoie la dimension de la fenetre.
 boolean getSortie()
          Indique si la fille est sortie.
 java.lang.Thread getThread()
          Renvoie le thread "interaction".
 void initCompteur_de_jeu()
          Intialialise le compteur de jeu a 1.
 void initJeu()
          Initialisation du jeu.
 boolean jeu_fini()
          Indique si le jeu est fini.
 void keyPressed(java.awt.event.KeyEvent keyevent)
          On definit les evenements sur les touches claviers.
 void keyReleased(java.awt.event.KeyEvent keyevent)
           
 void keyTyped(java.awt.event.KeyEvent keyevent)
           
 boolean meme_case(Cell position1, Cell position2)
          Est ce que les 2 elements passes en parametre sont sur la meme case.
 void modifier_look_labyrinthe(java.lang.String chemin_images, java.awt.Color couleur_chemin)
          Modifie le theme du labyrinthe : montagne, traditionnel, mer ou "brique".
 void nouveau_jeu()
          Genere un nouveau jeu.
 void paint(java.awt.Graphics g)
          Dessine notre labyrinthe avec les joueurs et les decors.
 boolean partie_finie()
          Indique si la partie est finie.
 void run()
          Run : Procedure executee continuellement si le thread est actif.
 void setBisou(boolean bisou)
          Modifie la variable qui indique si le bisou a ete fait ou pas.
 void setNb_jeux(int nb_jeux)
          Modifie le nombre de jeux dans la partie.
 void traitement_fin_de_jeu()
          Traite la fin du jeu.
 void tuer_threads()
          On tue les threads qui sont actifs.
 void update(java.awt.Graphics g)
          Surcharge le update, car le update efface tout et l'affichage clignote.
 
Methods inherited from class java.awt.Canvas
, addNotify, constructComponentName, postsOldMouseEvents
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addPropertyChangeListener, addPropertyChangeListener, areInputMethodsEnabled, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, deliverEvent, disable, disableEvents, dispatchEvent, dispatchEventImpl, doLayout, enable, enable, enableEvents, enableInputMethods, eventEnabled, firePropertyChange, getAlignmentX, getAlignmentY, getBackground, getBounds, getBounds, getColorModel, getComponentAt, getComponentAt, getComponentOrientation, getCursor, getDropTarget, getFont_NoClientCode, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getInputContext, getInputMethodRequests, getLocale, getLocation, getLocation, getLocationOnScreen, getMaximumSize, getName, getNativeContainer, getParent_NoClientCode, getParent, getPeer, getSize, getSize, getToolkit, getToolkitImpl, getTreeLock, getWidth, getWindowForObject, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, initIDs, inside, invalidate, isDisplayable, isDoubleBuffered, isEnabled, isEnabledImpl, isFocusTraversable, isLightweight, isOpaque, isShowing, isValid, isVisible, keyDown, keyUp, layout, lightweightPrint, list, list, list, list, list, locate, location, lostFocus, minimumSize, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, paramString, postEvent, preferredSize, prepareImage, prepareImage, print, printAll, processComponentEvent, processEvent, processFocusEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, readObject, remove, removeComponentListener, removeFocusListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, reshape, resize, resize, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFont, setForeground, setLocale, setLocation, setLocation, setName, setSize, setSize, setVisible, show, show, size, toString, transferFocus, validate, writeObject
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, wait, wait, wait
 

Field Detail

bete

private Bete bete
la "be-bete"

fenetre

private FenetreDuJeu fenetre
fenetre ou se deroule le jeu

affichage_scores

private AffichageScores affichage_scores
Affichage des scroes

garcon

private Garcon garcon
le garcon

fille

private Fille fille
la fille

laby

private Labyrinthe laby
le labyrinthe

nbcases_y

private int nbcases_y
nombre de cases dans le sens de la hauteur

nbcases_x

private int nbcases_x
nombre de cases dans le sens de la longueur

longueur

private int longueur
longueur de la fenetre en pixels

hauteur

private int hauteur
hauteur de la fenetre en pixels

nb_jeux

private int nb_jeux
nombre de jeux dans une partie : 1, 3 ou 5 jeux

compteur_jeu

private int compteur_jeu
compteur de jeu dans une partie

db

private java.awt.Image db
double buffer pour mettre les images en memoire

dbGC

private java.awt.Graphics dbGC
objet graphique qui sert a afficher tous les elements graphiques du jeu dans le meme contexte graphique

thread_interaction

private java.lang.Thread thread_interaction
le thread de la classe interaction qui dessine tout

jeu_termine

private boolean jeu_termine
Indique si le jeu est termine

bisou

private boolean bisou
Indique si il y a eu bisou ou pas de la part du garcon

sortie

private boolean sortie
Indique si la fille a atteint la sortie

tableau_pour_afficher

private int[] tableau_pour_afficher
Tableau pour afficher les scores des joueurs et les statistiques telles que le nombre de jeux dans une partie et le numero de jeu dans la partie.

gant

private Decors gant
Le gant qui servira a la fille pour donner une gifle au garcon

coeur

private Decors coeur
Le coeur qui s'affiche a la place du joueur quand celui-ci donne un "smack" a la fille
Constructor Detail

Interaction

public Interaction(FenetreDuJeu fenetre)
Cree le jeu. L'objet Interaction fait le lien entre les joueurs et le labyrinthe il gere toutes les interactions entre les joueurs et le labyrinthe (ainsi qu'avec les autres objets du jeu comme le gant de boxe) Ajout de l'ecouteur dans la fenetre.
Method Detail

initJeu

public void initJeu()
Initialisation du jeu. Initialisation des compteurs.

nouveau_jeu

public void nouveau_jeu()
Genere un nouveau jeu. On initialise les variables et on demarre le jeu.

getNb_jeux

public int getNb_jeux()
Renvoie le nombre de jeux totaux dans la partie.
Returns:
int nombre de jeux dans la partie

setNb_jeux

public void setNb_jeux(int nb_jeux)
Modifie le nombre de jeux dans la partie.
Parameters:
nb_jeux - nombre de jeux dans la partie

AddCompteur_de_jeu

public void AddCompteur_de_jeu()
Incremente le compteur de jeu.

getCompteur_jeu

public int getCompteur_jeu()
Renvoie le compteur de jeu. numero de jeu dans la partie courante
Returns:
int compteur de jeu

initCompteur_de_jeu

public void initCompteur_de_jeu()
Intialialise le compteur de jeu a 1.

demarrer

public void demarrer(int nb_cases_x,
                     int nb_cases_y,
                     int nb_jeux_gagnes_fille,
                     int nb_jeux_gagnes_garcon)
On demarre le jeu. On genere les joueurs, le gant et le labyrinthe et on demarre les threads.
Parameters:
longueur - longueur du labyrinthe
hauteur - hauteur du labyrinthe
nb_jeux_gagnes_fille - nombre de jeux gagnes par la fille
nb_jeux_gagnes_garcon - nombre de jeux gaggnes par le garcon

genererBete

public void genererBete(Cell position)

genererGant

public void genererGant(Cell position)
Creation du gant a une certaine position.
Parameters:
position - position du gant dans le labyrinthe.

genererGarcon

public void genererGarcon(Cell position)
Creation du garcon : on lui attribut des touches et une position initiale.
Parameters:
position - position du garcon

genererFille

public void genererFille(Cell position)
Creation de la fille : on lui attribut des touches et une position initiale.
Parameters:
position - position position de la fille

genererLaby

public void genererLaby(int nb_cases_x,
                        int nb_cases_y)
Creation du labyrinthe avec un certain nombre de cases en hauteur et en longueur.
Parameters:
longueur - longueur du labyrinthe
hauteur - hauteur du labyrinthe

afficher

public void afficher()
On veut afficher les joueurs, le numero du jeu, le nombre de jeu total et le nombre de jeu gagne par chacun des joueurs. tableau_pour_afficher[0] : numero du jeu tableau_pour_afficher[1] : score de la fille (jeux gagnes) tableau_pour_afficher[2] : score du garcon tableau_pour_afficher[3] : nombre de jeux dans la partie

getPreferredSize

public java.awt.Dimension getPreferredSize()
Renvoie la dimension de la fenetre.
Returns:
dimension dimension de la fenetre.
Overrides:
getPreferredSize in class java.awt.Component

getMinimumSize

public java.awt.Dimension getMinimumSize()
Renvoie la dimension de la fenetre.
Returns:
la dimension de la fenetre.
Overrides:
getMinimumSize in class java.awt.Component

run

public void run()
Run : Procedure executee continuellement si le thread est actif. On endort le thread "interaction" toutes les 100 ms.
Specified by:
run in interface java.lang.Runnable

getLongueurcase

public int getLongueurcase()
Renvoie la longueur d'une case.
Returns:
int longueur d'une case du labyrinthe.

getHauteurcase

public int getHauteurcase()
Renvoie la hauteur d'une case.
Returns:
int hauteur d'une case du labyrinthe.

getAffichage

public AffichageScores getAffichage()
Renvoi l'affichage pour les scores.
Returns:
Affichage affichage des scores.

paint

public void paint(java.awt.Graphics g)
Dessine notre labyrinthe avec les joueurs et les decors.
Parameters:
g - graphique.
Overrides:
paint in class java.awt.Canvas

update

public void update(java.awt.Graphics g)
Surcharge le update, car le update efface tout et l'affichage clignote.
Parameters:
g - graphique
Overrides:
update in class java.awt.Component

keyTyped

public void keyTyped(java.awt.event.KeyEvent keyevent)
Specified by:
keyTyped in interface java.awt.event.KeyListener

keyPressed

public void keyPressed(java.awt.event.KeyEvent keyevent)
On definit les evenements sur les touches claviers. On definit les evenements qui se produisent quand les joueurs pressent les touches clavier.
Specified by:
keyPressed in interface java.awt.event.KeyListener
Parameters:
keyevent - evenement associe a la touche pressee.

keyReleased

public void keyReleased(java.awt.event.KeyEvent keyevent)
Specified by:
keyReleased in interface java.awt.event.KeyListener

fille_fou_baffe

public void fille_fou_baffe()
La fille donne une claque au garcon.

fille_peut_baffer

public void fille_peut_baffer()
La fille peut donner une gifle.

setBisou

public void setBisou(boolean bisou)
Modifie la variable qui indique si le bisou a ete fait ou pas.
Parameters:
bisou - est ce que le bisou a ete fait?

getBisou

public boolean getBisou()
Indique si le garcon a fait le bisou a la fille.
Returns:
true : le garcon a fait le bisou
false : le garcon n'a pas fait le bisou

garcon_gagne

public boolean garcon_gagne()
Indique si le garcon a gagne.
Returns:
true true : le garcon a gagne le jeu
false false : le garcon n'a pas gagne le jeu

contact_possible

public boolean contact_possible()
Indique si une claque ou un bisou sont possibles. pour qu'une baffe soit possible, il faut que le garcon se trouve a une cases de la fille et qu'il n'y ait pas de buisson entre eux
Returns:
true : le bisou et/ou la claque sont possibles
false : le bisou et/ou la claque ne sont pas possibles

getSortie

public boolean getSortie()
Indique si la fille est sortie.
Returns:
true : la fille est sortie
false : la fille n'est pas sortie

choc_mur

public boolean choc_mur(int x,
                        int y)
Indique si il y a un mur selon les coordonnees x et y.
Parameters:
x - coordonnee en x
y - coordonnee en y
Returns:
true : il y a un mur(buisson) dans cette case
false : il n'y a pas de mur(buisson) dans cette case

fille_est_sortie

public void fille_est_sortie()
La fille gagne le jeu : on tue les threads et on elle gagne une jeu de plus.

fille_sur_sortie

public boolean fille_sur_sortie()
Indique si la fille est sur la case de la sortie.
Returns:
true : la fille est sur la case de la sortie
false : la fille n'est pas sur la case de la sortie

fille_gagne

public boolean fille_gagne()
Indique si la fille a gagne.
Returns:
true : la fille a gagne
false : la fille n'a pas gagne

traitement_fin_de_jeu

public void traitement_fin_de_jeu()
Traite la fin du jeu. On incremente le nombre de jeux gagnes au gagnant de ce jeu

jeu_fini

public boolean jeu_fini()
Indique si le jeu est fini. Le jeu est fini car le garcon a fait le bisou a la fille ou bien parce que la fille a atteint la sortie.
Returns:
true : le jeu est fini
false : le jeu n'est pas fini

partie_finie

public boolean partie_finie()
Indique si la partie est finie. La partie est finie si le jeu courant est le dernier jeu de la partie et si le jeu courant est fini.
Returns:
true : la partie est finie
false : la partie n'est pas finie

fille_sur_gant

public boolean fille_sur_gant()
Indique que la la fille est sur la case ou se trouve le gant. Elle a le gant quand elle passe sur la case du gant.
Returns:
true : la fille est sur la case du gant
false : la fille n'est pas sur la case du gant

modifier_look_labyrinthe

public void modifier_look_labyrinthe(java.lang.String chemin_images,
                                     java.awt.Color couleur_chemin)
Modifie le theme du labyrinthe : montagne, traditionnel, mer ou "brique". On initialise les chemins des images qui sont utiles pour definir les themes
Parameters:
chemin_images - chemin des images utiles pour construire le theme
couleur_chemin - couleur du chemin du labyrinthe

tuer_threads

public void tuer_threads()
On tue les threads qui sont actifs.

desactiver_threads

public void desactiver_threads()
Desactiver les threads : interaction et joueurs

activer_threads

public void activer_threads()
Activer les threads : interaction et joueurs

getThread

public java.lang.Thread getThread()
Renvoie le thread "interaction".
Returns:
Thread le thread qui dessine tout.

meme_case

public boolean meme_case(Cell position1,
                         Cell position2)
Est ce que les 2 elements passes en parametre sont sur la meme case.
Parameters:
element1 - un premier element
element2 - un deuxieme element
Returns:
true Les 2 elements sont sur la meme case
false les 2 elements ne sont pas sur la meme case.

garcon_valse

public void garcon_valse()
le garcon est envoye n'importe ou dans le labyrinthe sauf dans une case deja occupee.