SubKorea > CYBER JAVA GAME > Å×Æ®¸®½º > ¼Ò½ººÐ¼® #1, 2

 

// ÃÖÃÊ·Î ·ÎµùÀÌ µÊ
public void init() {

 String s = getParameter("squaresize");
 sqlength = s == null ? 20 : (new Integer(s)).intValue();

 s = getParameter("columns");
 cols = s == null ? 10 : (new Integer(s)).intValue();

 s = getParameter("rows");
 rows = s == null ? 20 : (new Integer(s)).intValue();

 s = getParameter("blackwhite");
 blackwhite = s == null ? false : (new Boolean(s)).booleanValue();

 highscorehost = getParameter("highscorehost");

 s = getParameter("highscoreport");
 highscoreport = (short)(s == null ? 4711 : (new Integer(s)).intValue());

 f = new int[cols][rows+4];
 of = new int[cols][rows+4];

 resize(sqlength*cols+xoffset*2, sqlength*(rows+3));

 colors = new Color[8];
 colors[0] = new Color(40,40,40);

 if (blackwhite) {

       for(int i=1; i<8; i++) colors[i] = new Color(255, 255, 255);

     } else {

         colors[1] = new Color(255,0,0);      // red
         colors[2] = new Color(0,200,0);      // green
         colors[3] = new Color(0,200,255);    // light blue
         colors[4] = new Color(255,255,0);    // yellow
         colors[5] = new Color(255,150,0);    // orange
         colors[6] = new Color(210,0,240);    // purple
         colors[7] = new Color(40,0,240);     // dark blue

    }
 } //  À§·Î

public void start() {

     for(int i=0; i<cols; i++)

         for(int j=0; j<rows+4; j++) {
              f[i][j] = 0;
              of[i][j] = -1;
         }
 
     level = 5;
     score = 0;
     pieces= 0;
     curval = -1;

     neednewpiece = true;
     lost = false;
 
    (killme = new Thread(this)).start();

    requestFocus();    // Å°º¸µå Å°¿Í ¸¶¿ì½º¿¡ ÀÀ´ä
 
 } //  À§·Î

public synchronized void stop() {

     if (killme != null)  killme.stop();

     killme = null;
 
 } //  À§·Î

// ¸ÞÀÎ ·çÇÁ
public void run() {
 
     while (!lost) {

        try {
          int t = level ==  3 ? 600 :
                  level ==  4 ? 500 :
                  level ==  5 ? 400 :
                  level ==  6 ? 300 :
                  level ==  7 ? 250 :
                  level ==  8 ? 200 :
                  level ==  9 ? 150 :
                  level == 10 ? 100 : 75;
             ;
          Thread.sleep(t);

         } catch (InterruptedException e){}

       if (neednewpiece) {

          if(curval > 0) {
              score += curval;
              pieces++;
              level = 5 + pieces/30;
          }

          removelines();
          newpiece();
          neednewpiece = false;

       } else {

         neednewpiece = !movecurpiece(0, -1, false);
         if(!neednewpiece) curval -= 5;

       }
       repaint();
    }

     killme = null;

     if (highscorehost == null)  return;
 
 } //  À§·Î

// Å°°¡ ´­·¯Áö¸é
public boolean keyDown(java.awt.Event evt, int key) {

 if (key != 's' && lost || suspended)
     return true;

 switch(key) {

     case 's': // 's' Å°
      stop();  // °ÔÀÓÀ» ÁßÁöÇÏ°í
      start(); // »õ·Î¿î °ÔÀÓÀ» Ç϶ó
      break;

     case 'h':                   // 'h' Å°
     case java.awt.Event.LEFT:   // '¡ç'Å°
      curval -= 5;
      movecurpiece(-1, 0, false);
      neednewpiece = false;
      repaint();
      break;

     case 'k':                   // 'k' Å°
     case java.awt.Event.RIGHT:  // '¡æ'Å°
      curval -= 5;
      movecurpiece(1, 0, false);
      neednewpiece = false;
      repaint();
      break;

     case 'j':                 // 'j' Å°
     case java.awt.Event.UP:   // '¡è'Å°
      if(what!=4) {
          curval -= 5;
          movecurpiece(0, 0, true);
          repaint();
      }
      break;

     case ' ':                   // 'space bar' Å°
     case java.awt.Event.DOWN:   // '¡é'Å°
      while(movecurpiece(0, -1, false));
      repaint();
      break;

     }

     return true;
 
 } //  À§·Î


public void update(Graphics g)
    {
     justupdating = true; 
     paint(g);
 
    } //  À§·Î

// È­¸é¿¡ ±×·ÁÁÜ
public synchronized void paint(Graphics g) {
 
     g.setFont(new java.awt.Font("Helvetica", 0, 18));
     int  gx = sqlength;
     int  gy = sqlength*rows/4;

     g.clearRect(gx, gy-25, xoffset-gx, 25);
     g.drawString("µæÁ¡: " + score, gx, gy);

     gy += 30;
     g.clearRect(gx, gy-25, xoffset-gx, 25);
     g.drawString("´Ü°è: " + level, gx, gy);

     gy += 30;
     g.clearRect(gx, gy-25, xoffset-gx, 25);
     g.drawString("Â¥¹è±âÀ¯¸Ó¿¡¼­..." + level, gx, gy);

     for (int i=0; i<cols; i++)

       for (int j=0; j<rows; j++) {

          if (!justupdating || of[i][rows-1-j] == -1 || of[i][rows-1-j] != f[i][rows-1-j])
            {
             g.setColor(colors[f[i][rows-1-j]]);
             g.fill3DRect(xoffset+sqlength*i, sqlength+sqlength*j, sqlength, sqlength, true);
            }

          of[i][rows-1-j] = f[i][rows-1-j];
        }

       justupdating = false;
 
 } //  À§·Î

// ¸¶¿ì½º°¡ ´­·¯ Á³À»¶§
public boolean mouseDown(java.awt.Event evt, int x, int y) {

     if (killme == null)
         return true;

     if (suspended)
         killme.resume();
     else
         killme.suspend();

     suspended = !suspended;
     return true;
 
 } //  À§·Î

}