begin process at 2012 02 13 21:37:21
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Javascript

 > 

Archives

 > 

AU SECOURS !!!

 > 

Tetris JAVA


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Tetris JAVA

dimanche 23 avril 2006 à 17:41:42 | Tetris JAVA

pizaiollo

Membre Club

Voila voici le code source d'un jeu en JAVA, seulement il n'y a pas de main.
pourriez vous me dire se qu'il faut mettre dans le main pour qu'il fonctionne, ou s'il manque encore quelques chose.
merci



/*
 * Tetris.java
 */

// <applet code=Tetris.class width=150 height=300> </applet>

import java.util.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics.*;
import java.util.Random;

public class Tetris extends Applet implements Runnable, KeyListener {

public int [][] grille;
public int incide;
public int sleep_time=200;
boolean tourne_piece=false;
boolean va_gauche=false;
boolean va_droite=false;


Piece p;
Thread mon_process;

Image offI;//nécessaire à la méthode de double buffering
Graphics offG;//nécessaire à la méthode de double buffering


public void init() {

  resize(150, 300);
    // 10 colonnes, 24 lignes
  grille = new int [10][24];

  for (int i=0;i<10;i++) {
   for (int j=0;j<20;j++) {
   grille [i][j]=0;
   }
  }

 

  for (int i=0;i<10;i++) {
      grille [i][20]=1;
//      grille [i][21]=1;
//      grille [i][22]=1;
//      grille [i][23]=1;
  }

  p = new Piece();
  p.cree_piece();
  p.affiche_piece(grille);
  repaint();

  // Ajout de l'écouteur de clavier
  this.addKeyListener(this);

  requestFocus();

}


// Démarrage de l'applet
public void start () {

  if (mon_process == null) {
   mon_process = new Thread(this);
   mon_process.start();
  }

}

// Arrêt de l'applet
public void stop () {

  if (mon_process != null) {
   mon_process.interrupt();
   mon_process = null;
  }

}


// double buffer

public void update(Graphics g)
{

if(offI == null)
{
offI = createImage(150, 300);
offG = offI.getGraphics();
}
offG.clearRect(0, 0, 150, 300);
paint(offG);
g.drawImage(offI, 0, 0, null);

}


public void paint (Graphics g) {

  for (int k=0;k<10;k++) {
 for (int l=0;l<20;l++) {
  if (grille[k][l]==0) {
     g.setColor(Color.white);
                   g.draw3DRect (15*k,15*l,15,15,true);
  }
  else
  {
                    switch (grille[k][l]) {
                        case 1:     g.setColor(new Color(0,192,0));       g.fill3DRect(15*k,15*l,15,15,true); break; //vert
                        case 2:     g.setColor(Color.pink);               g.fill3DRect(15*k,15*l,15,15,true); break; //rouge
                        case 3:     g.setColor(new Color(0,128,224));     g.fill3DRect(15*k,15*l,15,15,true); break; //bleu
                        case 4:     g.setColor(new Color(0,192,192));              g.fill3DRect(15*k,15*l,15,15,true); break; //cyan
                        case 5:     g.setColor(Color.orange);             g.fill3DRect(15*k,15*l,15,15,true); break; //orange
                        case 6:     g.setColor(Color.darkGray);          g.fill3DRect(15*k,15*l,15,15,true); break; //gris
                        case 7:     g.setColor(Color.magenta);            g.fill3DRect(15*k,15*l,15,15,true); break; //magenta
                    }
  }
 }
  }

}

// L'interface KeyListener.

public void keyPressed(KeyEvent e) {
 switch (e.getKeyCode()) {
  case KeyEvent.VK_LEFT : if (p != null) {
    p.gauche(grille);
    repaint();
   }
   break;
  case KeyEvent.VK_RIGHT : if (p != null) {
    p.droite(grille);
    repaint();
   }
   break;
  case KeyEvent.VK_UP : if (p != null) {
    p.tourned(grille);
    repaint();
   }
  case KeyEvent.VK_DOWN : if (p != null) {
                                p.descend(grille);
                                repaint();
   }
                break;
  default : repaint();
 }
}

public void keyReleased(KeyEvent e) {
}

public void keyTyped(KeyEvent e) {
}


// Ce que le thread mon_process exécute
public void run()
{
 // Boucle infinie (tant que mon_process existe et n'est pas interrompu)
 while ((Thread.currentThread()==mon_process) && (! mon_process.isInterrupted()))
 {
  p.descend(grille);
                //sleep_time=old_sleep_time;
                //  p.verifie_ligne(grille);
  repaint();
  try {
   Thread.sleep(sleep_time);
  }
  catch (InterruptedException e) {
   return;
  }
 }
}


}

 


class Piece
{

int numero;
int position = 0;
int x = 0;
int y = 0;
int x1 = 0;
int y1 = 0;

boolean b = false;


public int[][] Piece1 = { {0,1,0,0,0,1,1,0,0,0,1,0,0,0,0,0},
     {0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0},
     {0,1,0,0,0,1,1,0,0,0,1,0,0,0,0,0},
     {0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0} };
public int[][] Piece2 = { {0,2,2,0,0,2,2,0,0,0,0,0,0,0,0,0},
     {0,2,2,0,0,2,2,0,0,0,0,0,0,0,0,0},
     {0,2,2,0,0,2,2,0,0,0,0,0,0,0,0,0},
     {0,2,2,0,0,2,2,0,0,0,0,0,0,0,0,0} };
public int[][] Piece3 = { {0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0},
     {3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0},
     {0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0},
     {3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0} };
public int[][] Piece4 = { {0,0,4,0,0,4,4,0,0,4,0,0,0,0,0,0},
     {0,0,0,0,0,4,4,0,0,0,4,4,0,0,0,0},
     {0,0,4,0,0,4,4,0,0,4,0,0,0,0,0,0},
     {0,0,0,0,0,4,4,0,0,0,4,4,0,0,0,0} };
public int[][] Piece5 = { {0,5,0,0,0,5,5,0,0,5,0,0,0,0,0,0},
     {0,0,0,0,0,0,5,0,0,5,5,5,0,0,0,0},
     {0,0,0,5,0,0,5,5,0,0,0,5,0,0,0,0},
     {0,5,5,5,0,0,5,0,0,0,0,0,0,0,0,0} };                         
public int[][] Piece6 = { {0,0,6,0,0,0,6,0,0,6,6,0,0,0,0,0},
     {0,0,0,0,0,6,6,6,0,0,0,6,0,0,0,0},
     {0,6,6,0,0,6,0,0,0,6,0,0,0,0,0,0},
     {0,0,0,0,0,6,0,0,0,6,6,6,0,0,0,0} };      
public int[][] Piece7 = { {0,7,0,0,0,7,0,0,0,7,7,0,0,0,0,0},
     {0,0,0,0,0,0,0,7,0,7,7,7,0,0,0,0},
     {0,7,7,0,0,0,7,0,0,0,7,0,0,0,0,0},
     {0,0,0,0,0,7,7,7,0,7,0,0,0,0,0,0} };      

                         
public int [][] piecec =  new int [4][16];


Piece() {
 for (int i=0;i<4;i++) {
  for (int j=0;j<16;j++) {
   piecec [i][j]=0;
  }
 }
}

public void cree_piece() {

        // numero est compris entre 1 et 4
       
        numero = (int)(Math.random() * 100);
        numero = (numero % 7) + 1;
   
        numero = 1 + ((int)(Math.random()*7));

        /* Random generateur = new Random();
   
        // Get an integer
        int number = (generateur.nextInt());
       
        // Accept only up to ten
        numero = number % 4;
        if (numero < 1) numero = numero + 4; */
       
        switch (numero) {
            case 7:   for (int i=0;i<4;i++) { for (int j=0;j<16;j++) { piecec [i][j]=Piece7 [i][j]; }}; break;
            case 6:   for (int i=0;i<4;i++) { for (int j=0;j<16;j++) { piecec [i][j]=Piece6 [i][j]; }}; break;
            case 5:   for (int i=0;i<4;i++) { for (int j=0;j<16;j++) { piecec [i][j]=Piece5 [i][j]; }}; break;
            case 4:   for (int i=0;i<4;i++) { for (int j=0;j<16;j++) { piecec [i][j]=Piece4 [i][j]; }}; break;
            case 3:   for (int i=0;i<4;i++) { for (int j=0;j<16;j++) { piecec [i][j]=Piece3 [i][j]; }}; break;
            case 2:   for (int i=0;i<4;i++) { for (int j=0;j<16;j++) { piecec [i][j]=Piece2 [i][j]; }}; break;
            case 1:   for (int i=0;i<4;i++) { for (int j=0;j<16;j++) { piecec [i][j]=Piece1 [i][j]; }}; break;
 }

}

public void gauche(int[][] g) {
 efface(g);

        x--;

        if (bloque_gauche(g)) x++;
 affiche_piece(g);
}

public void droite(int[][] g) {
 efface(g);

 x++;

 if (bloque_droite(g)) x--;
 affiche_piece(g);
}


public boolean bloque_droite(int[][] g)
{
 boolean d = false;
 for (int m=0;m<16;m++) {
  // La case de la pièce est-elle remplie ?
  if (piecec[position][m] != 0) {
   int x1 = m % 4;  // colonne de la pièce
   int y1 = m / 4;  // Ligne de la pièce
   if ((x+x1) > 9) return true;
   else {
    if (g[x+x1][y+y1] != 0) return true;
   }
  }

  }

   return d;
}

public boolean bloque_gauche(int[][] g)
{
 boolean d = false;
 for (int m=0;m<16;m++) {
  // La case de la pièce est-elle remplie ?
  if (piecec[position][m] != 0) {
                   
   x1 = m % 4;  // colonne de la pièce
   y1 = m / 4;  // Ligne de la pièce
                       
                        if ((x+x1) < 0 ) return true;
   else {
    if (g[x+x1][y+y1] != 0) return true;
   }
  }

  }

   return d;
}

public void tourned(int[][] g) {
 efface(g);
 int old = position;
 position ++;
 if (position ==4) position=0;
       
        if (bloque_tourne(g)) position = old;
       
 if (bloque(g)) position = old;
 affiche_piece(g);
}

public boolean bloque_tourne(int[][] g)
{
 boolean d = false;
 for (int m=0;m<16;m++) {
  // La case de la pièce est-elle remplie ?
  if (piecec[position][m] != 0) {
                   
   x1 = m % 4;  // colonne de la pièce
   y1 = m / 4;  // Ligne de la pièce

   if ((x+x1) > 9 ) return true;
                       
                        if ((x+x1) < 0 ) return true;
   else {
    if (g[x+x1][y+y1] != 0) return true;
   }
  }

  }

   return d;
}


public void affiche_piece(int[][] g)
{

   for (int m=0;m<4;m++)
   if ( ((x+m)<10) && ((x+m)>=0) && (g[x+m][y]==0) && (piecec[position][m] != 0))
   g[x+m][y] = piecec[position][m];

   if ((y+1)<24)
   for (int m=0;m<4;m++)
   if (  ((x+m)<10)   && ((x+m)>=0) && (g[x+m][y+1]==0) && (piecec[position][m+4] != 0))
   g[x+m][y+1] = piecec[position][m+4];

   if ((y+2)<24)
   for (int m=0;m<4;m++)
   if ( ((x+m)<10)  && ((x+m)>=0) && (g[x+m][y+2]==0) && (piecec[position][m+8] != 0))
   g[x+m][y+2] = piecec[position][m+8];

   if ((y+3)<24)
   for (int m=0;m<4;m++)
   if ( ((x+m)<10)  && ((x+m)>=0) && (g[x+m][y+3]==0) && (piecec[position][m+12] != 0))
    g[x+m][y+3] = piecec[position][m+12];

}


public boolean bloque(int[][] g)
{
 boolean c = false;

        for (int m=0;m<4;m++) {
  if (((x+m)<10) && (y < 24) && ((x+m)>=0))
  if ((g[x+m][y]!=0) && (piecec[position][m]!=0)) return true;
 }
 for (int m=0;m<4;m++) {
  if (((x+m)<10) && (y < 23) && ((x+m)>=0))
  if ((g[x+m][y+1]!=0) && (piecec[position][m+4]!=0)) return true;
 }
 for (int m=0;m<4;m++) {
  if (((x+m)<10) && (y < 22) && ((x+m)>=0))
  if ((g[x+m][y+2]!=0) && (piecec[position][m+8]!=0)) return true;
 }
 for (int m=0;m<4;m++) {
  if (((x+m)<10) && (y < 21) && ((x+m)>=0))
  if ((g[x+m][y+3]!=0) && (piecec[position][m+12]!=0)) return true;
 }
   //}

   return c;
}


public void verifie_ligne(int[][] g) {

    for (int m=0;m<20;m++) {
         b=false;
         for (int n=0;n<10;n++)
            {
              if (g[n][m] == 0) b=true;
            }
        
         if (b==false) {
               for (int i=0;i<10;i++) g[i][0]=0;

             for (int t=m;t>0;t--) {
               for (int o=0;o<10;o++)
                      g[o][t]=g[o][t-1];
             }
         }
    }
}

public void efface(int[][] g) {

   for (int m=0;m<4;m++) if (piecec[position][m]!=0) g[x+m][y] = 0;
   for (int m=0;m<4;m++) if (piecec[position][m+4]!=0) g[x+m][y+1] = 0;
   for (int m=0;m<4;m++) if (piecec[position][m+8]!=0) g[x+m][y+2] = 0;
   for (int m=0;m<4;m++) if (piecec[position][m+12]!=0) g[x+m][y+3] = 0;

}

public void teste_perdu(int[][] g)
{
 
 for (int m=0;m<16;m++) {
  // La case de la pièce est-elle remplie ?
  if (piecec[position][m] != 0) {

   x1 = m % 4;  // colonne de la pièce
   y1 = m / 4;  // Ligne de la pièce

                        if (g[x+x1][y+y1] != 0) {

                              for (int i=0;i<10;i++) {
                           for (int j=0;j<20;j++) {
                   g[i][j]=1;
                                   }
                                }
                        }
  }

  }


}

 


public void descend(int[][] g)
{

  efface(g);

  y++;

   if (bloque(g)) {
    y --;
     affiche_piece(g);
                verifie_ligne(g);
     y = 0;
     x = 3;
     cree_piece();
                teste_perdu(g);
   } else affiche_piece(g);

}

}

 

dimanche 23 avril 2006 à 18:42:20 | Re : Tetris JAVA

b4ng

ton code, c'est une applet java, y a donc pas de main a priori.

Il te suffit donc de compiler ce code et ensuite d'appeler ton applet dans une page html et tu verras ce que ca donne



Cette discussion est classée dans : public, int, case, position, for


Répondre à ce message

Sujets en rapport avec ce message

Position curseur, javascript et textareas [ par sdess ] Je voudrais pouvoir récupérer la position du curseur quand je clique dans un textareas, et pouvoir positionner le curseur à un autre endroit dans le t Position de la scroll bar [ par bodrhan31 ] Salut ! Je cherche à positionner la barre de scroll sur la gauche (et donc le texte sur sa droite). Impossible d'y arriver en css ? Est-ce possible d OnMouseOver : traiter le cas pour une centaine d'image [ par Tibabou ] Bonjour/soir,J'ai une centaine d'images (img1, img2, img3...) dans ma page et je voudrais afficher une image différente lorsque la souris passe au des Formulaire [ par BioSpyke ] Bonjour, Voila j'débute et j'essai de créer un formulaire qui en gros ressemble à ça : Objet : 'liste d'objets' Quantité : 'espace où on peut ecrire' TRANSFARMATION DES VARIABLES [ par rems02 ] Comment transformer une variable texte en variable nombre ? J'ai recupère des variable dan sun formulaire (case à cocher) mais en les aditionnant je Case à cocher [ par rems02 ] Je cherche une idée pour comptabiliser le nombre de case à cocher COCHER. J'ai un formulaire avec plusieurs cases à cocher et je voudrais verifier qu Controle d'un formulaire avec plusieurs types [ par petitelarve ] Voici un formulaire avec 2 zones de textes qui sont biens controlés...OK Comment appliquer le controle sur TOUT les boutons radios ??? Ici seul le pre problème de position variable de layer [ par choinet ] Javascript:Insert_Emoticon('/imgs2/smile_question.gif');Voilà, j'ai fait une page html en 3 frames, 2 qui ne bougent pas(titre et menu) et la princip Un script avec du son [ par pledoux ] Bonjour à tous.Je commence par vous faire une présentation de ce que j'ai fait.J'ai un fichier texte dans lequel je mets des nouvelles.Le contenu de c Case à cocher [ par sebalex ] Salut à tous,J'aimerais faire un truc simple pour vous mais très rude pour moi.J'ai 4 cases à cocher1. inscription2. société3. polo4. initiationJe sou


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,560 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales