Tetris en Java

cs_alexmax3 Messages postés 2 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 19 avril 2012 - 19 avril 2012 à 13:02
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 19 avril 2012 à 17:03
Bonjour a tous ,

Je suis étudiant en l1 math , et j'ai pris une option Info Algo et programmation .
J'ai un projet qui consiste a faire un tetris en java .

Le prof nous a donné un programme Java qu'il a intitulé Grille qu'on ne doit pas modifier .

J'ai commencé à créer le programme où j'ai créé une pièce " la barre " elle s'affiche bien , la pièce descend , elle bouge a droite et a gauche , mais je n'arrive pas a la faire tourner correctement .

le prof ma donné quelques informations mais çà ne fonctionne toujours pas .

pour créer la pièce j'ai créé 4 points p1,p2,p3,p4 avec chaqu'un des coordonnées en x et y .

j'utilise cette formule pour tourner la pièce :

p.p1.x= (int) (Math.cos(Math.PI/2)* ( p.p1.x - p.p1.x ) - Math.sin(Math.PI/2) * ( p.p1.y - p.p1.y )+p.p1.x);
p.p1.y= (int) (Math.cos(Math.PI/2)* ( p.p1.y - p.p1.y ) - Math.sin(Math.PI/2) * ( p.p1.x - p.p1.x )+p.p1.y );
   
p.p2.x= (int) (Math.cos(Math.PI / 2)* ( p.p2.x - p.p1.x) - Math.sin(Math.PI / 2) * ( p.p2.y - p.p1.y)+ p.p2.x );
p.p2.y= (int) (Math.cos(Math.PI / 2)* ( p.p2.y - p.p1.y) + Math.sin( Math.PI / 2) * ( p.p2.x - p.p1.x)+p.p2.y );
    
p.p3.x= (int) (Math.cos(Math.PI/2)* ( p.p3.x - p.p1.x) - Math.sin( Math.PI/2) * ( p.p3.y -  p.p1.y  )+ p.p3.x );
p.p3.y= (int) (Math.cos(Math.PI/2)* ( p.p3.y -  p.p1.y ) + Math.sin(Math.PI/2) * ( p.p3.x - p.p1.x )+p.p3.y );
    
  
p.p4.x= (int) (Math.cos(Math.PI/2)* ( p.p4.x - p.p1.x) - Math.sin(Math.PI/2) * ( p.p4.y -  p.p1.y  ) + p.p4.x);
p.p4.y= (int) (Math.cos(Math.PI/2)* ( p.p4.y -  p.p1.y  ) + Math.sin(Math.PI/2) * ( p.p4.x - p.p1.x )+ p.p4.y );


Merci si quelqu'un peut m'aider .

Alexmax3

6 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
19 avril 2012 à 13:38
Salut,

Je te déconseil de faire les rotations à la main, tu peux utiliser la classe AffineTransform. Je te donne un code qui me permettait de faire tourner une barre d'attente, ca peut peut être te servir :
@Override
public void paintComponent(Graphics g){
if(image!=null){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
AffineTransform origine = g2d.getTransform();
AffineTransform nouvelle = (AffineTransform)(origine.clone());
nouvelle.rotate(Math.toRadians(angleCourant), getWidth()/2, getHeight()/2);
g2d.setTransform(nouvelle);
g2d.drawImage(image, (getWidth() - image.getWidth(this))/2, (getHeight() - image.getHeight(this))/2, this);
g2d.setTransform(origine);
}
}
0
Rejoignez-nous