Guest User

Untitled

a guest
Apr 20th, 2018
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.21 KB | None | 0 0
  1. import java.awt.* ;
  2. import java.io.Console;
  3. /**
  4. * une EllipseAnime est une sorte de Ellipse qui
  5. * possede un cap
  6. * peut uniquement modifier son cap en tournant sur elle-meme
  7. * sait si, oui ou non, elle est au bord de son espace
  8. * peut avancer dans la direction de son cap
  9. * peut se dessiner : elle materialise son cap
  10. * @author (your name)
  11. * @version (a version number or a date)
  12. */
  13. public class EllipseAnime extends Ellipse {
  14. private float cap;
  15. private float capEnRadian;
  16.  
  17. public EllipseAnime() {
  18. super(5,5);
  19. this.cap=0;
  20. }
  21.  
  22. public EllipseAnime(float capInit) {
  23. this(xMax/2,yMax/2,5,5,capInit);
  24. }
  25.  
  26. public EllipseAnime(float pdInit, float gdInit, float capInit) {
  27. this(xMax/2,yMax/2,pdInit,gdInit,capInit);
  28. }
  29.  
  30.  
  31. public EllipseAnime(float xInit, float yInit, float pdInit, float gdInit, float capInit) {
  32. super(xInit,yInit,pdInit,gdInit);
  33. this.cap=capInit;
  34. }
  35.  
  36. public float getCap(){
  37. return this.cap;
  38. }
  39.  
  40. /**
  41. * une EllipseAnime sais s'il est bord de son espace
  42. * @param les bords max de l'espace
  43. * @return suis-je au bord ?
  44. */
  45. public boolean auBord(float xMax, float yMax){
  46. return (this.getX()+this.getGrandDiametre()>xMax-10 ||
  47. this.getX()-this.getGrandDiametre()<10 ||
  48. this.getY()+this.getGrandDiametre()>yMax-10 ||
  49. this.getY()-this.getGrandDiametre()<10);
  50. }
  51.  
  52. /**
  53. * une EllipseAnime peut tourner d'un certain angle
  54. * @param increment du cap
  55. */
  56. public void tourner(float deltaC){
  57. this.cap=this.cap+deltaC;
  58. }
  59.  
  60. /**
  61. * une EllipseAnime peut avancer selon son cap
  62. * s'il est au bord de son espace, il fait demi-tour
  63. * @param longueur du deplacement
  64. */
  65. public void avancer(float longueur){
  66. if (this.auBord(xMax, yMax)) this.tourner(180);
  67. capEnRadian=this.cap*(float)(Math.PI/180); // conversion degre2radian
  68. this.setX(getX()+longueur*(float)Math.cos(capEnRadian));
  69. this.setY(getY()+longueur*(float)Math.sin(capEnRadian));
  70. }
  71.  
  72. /**
  73. * une EllipseAnime peut dessiner son cap
  74. * le cap est represente par un "petit" segment de droite issu du centre
  75. * @param le contexte graphique
  76. * @param la couleur
  77. */
  78. private void dessinerCap(Graphics g, Color c){
  79. capEnRadian=this.cap*(float)(Math.PI/180);
  80. g.drawLine(Math.round(this.getX()),
  81. Math.round(this.getY()),
  82. Math.round(this.getX()+this.getPetitDiametre()*(float)Math.cos(capEnRadian)),
  83. Math.round(this.getY()+this.getPetitDiametre()*(float)Math.sin(capEnRadian))
  84. );
  85. }
  86.  
  87. /**
  88. * une EllipseAnime peut se dessiner
  89. * @param le contexte graphique
  90. * @param la couleur
  91. */
  92. public void dessiner(Graphics g, Color c){
  93. g.setColor(c);
  94. //g.drawOval(Math.round(this.getX()-this.getPetitDiametre()/2), Math.round(this.getY()-this.getGrandDiametre()/2), Math.round(this.getPetitDiametre()), Math.round(this.getGrandDiametre() ));
  95. super.dessiner(g, c);
  96. dessinerCap(g,c);
  97. }
  98. }
Add Comment
Please, Sign In to add comment