亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? teris.java

?? A java source code to teach you how to program a Teris game. Using swing and awt
?? JAVA
字號(hào):
import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.awt.event.*;

/**
 * <p>Title: Teris</p>
 * <p>Description: Teris Java Demo</p>
 * @author not attributable
 * @version 1.0
 */

public class Teris extends JFrame {
  private Image image = null;
  private Graphics img = null;
  private Random rand = new Random();

  //Teris Data Group
  private final int cubes_x = 110,cubes_y = 50;
  private final int cubes_height = 25;
  private final int cubes_width = 10;
  private boolean cubes[][] = null;
  private Color cubes_color[][] = null;
  private int dispose_lines = 0;
  private final int STATUS_NONE = 0;
  private final int STATUS_PLAYING = 1;
  private final int STATUS_PAUSE = 2;
  private final int STATUS_END = 3;
  private int status = STATUS_NONE;
  private int current_cube = 0;
  private int next_cube = 0;
  private int cube_direction = 0;
  private int cube_posi_x = 0;
  private int cube_posi_y = 21;

  public Teris() {
    try {
      jbInit();
      setSize(350,350);
      setVisible(true);
      image = this.createImage(400,400);
      img = image.getGraphics();

      cubes = new boolean[cubes_width][];
      for(int i = 0; i < cubes_width; i++) cubes[i] = new boolean[cubes_height];
      cubes_color = new Color[cubes_width][];
      for(int i = 0; i < cubes_width; i++) cubes_color[i] = new Color[cubes_height];

      initTeris();
      refreshImage();
      new Game().start();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }

  private void initTeris()
  {
    for(int i = 0; i < cubes_width; i ++)
      for(int j = 0; j < cubes_height; j++)
      {
        cubes[i][j] = false;
        cubes_color[i][j] = Color.blue;
      }

    dispose_lines = 0;
    current_cube = rand.nextInt(Cube.total);
    next_cube = rand.nextInt(Cube.total);
    cube_direction = 0;
    cube_posi_x = 4;
    cube_posi_y = 21;
  }

  private boolean isHit(int posix,int posiy,int rotate)
  {
    int x = this.cube_posi_x + posix;
    int y = this.cube_posi_y - posiy;
    if(y < 0) return true;
    if(x < 0) return true;

    int d = (this.cube_direction + rotate) % 4;
    if((x+Cube.cubex[this.current_cube][d]) > cubes_width) return true;
    //x = Math.min(x,this.cubes_width-Cube.cubex[this.current_cube][d]);

    y = y + Cube.cubey[current_cube][d] - 1;

    int sx = Cube.cubex[current_cube][d];
    int sy = Cube.cubey[current_cube][d];
    for(int i = 0; i < sx; i++)
      for(int j = 0; j < sy; j++)
      {
        if((y-j) < 0) return true;
        if(Cube.shapes[current_cube][d][i][j] & this.cubes[x + i][y - j])
          return true;
      }

    return false;
  }

  private void refreshImage()
  {

    img.setColor(Color.black);
    img.drawRect(cubes_x-5,cubes_y-5,8+12*cubes_width,8+12*(cubes_height-4));
    img.setColor(Color.white);
    img.fillRect(cubes_x-4,cubes_y-4,6+12*cubes_width,6+12*(cubes_height-4));

    for(int i = 0; i < cubes_width; i ++)
      for(int j = 0; j < cubes_height - 4; j++)
      {
        if(cubes[i][j] == true)
        {
          paintCube(i,j,cubes_color[i][j]);
        }
      }

    //command
    img.setColor(Color.red);
    img.drawString("UP : Rotate",10,200);
    img.drawString("LEFT : Move L",10,210);
    img.drawString("RIGHT : Move R",10,220);
    img.drawString("P : Pause",10,230);
    img.drawString("S : (re)start",10,240);

    //lines
    img.setColor(Color.black);
    img.drawRect(250,50,80,40);
    img.setColor(Color.white);
    img.fillRect(251,51,78,38);
    img.setColor(Color.blue);
    img.drawString("Lines : "+this.dispose_lines,255,75);

    //next cube
    img.setColor(Color.black);
    img.drawRect(15,50,70,100);
    img.setColor(Color.white);
    img.fillRect(16,51,68,98);
    img.setColor(Color.blue);
    img.drawString("Next",35,65);
    int x = Cube.cubex[this.next_cube][0];
    int y = Cube.cubey[this.next_cube][0];
    for(int i = 0; i < x; i++)
      for(int j = 0; j < y; j++)
      {
        if(Cube.shapes[next_cube][0][i][j])
        {
          img.setColor(Color.black);
          img.drawRect(25+i*12,80+j*12,10,10);
          img.setColor(Cube.colors[next_cube]);
          img.fillRect(27+i*12,82+j*12,8,8);
        }
      }

    //current_cube
    x = Cube.cubex[current_cube][cube_direction];
    y = Cube.cubey[current_cube][cube_direction];
    for(int i = 0; i < x; i++)
      for(int j = 0; j < y; j++)
      {
        if(Cube.shapes[current_cube][cube_direction][i][j])
        {
          int p = cube_posi_y+y-1-j;
          if((p) >=0 & (p) <= 20)
            paintCube(cube_posi_x+i,p,Cube.colors[current_cube]);
        }
      }

    //ENDING GAME
    if(status == STATUS_END)
    {
      img.setColor(Color.black);
      img.drawRect(cubes_x+10,cubes_y+100,100,50);
      img.setColor(Color.yellow);
      img.fillRect(cubes_x+11,cubes_y+101,98,48);
      img.setColor(Color.red);
      img.drawString("END GAME!!!",cubes_x+21,cubes_y+131);
    }
    else if(status == STATUS_PAUSE)
    {
      img.setColor(Color.black);
      img.drawRect(cubes_x+10,cubes_y+100,100,50);
      img.setColor(Color.yellow);
      img.fillRect(cubes_x+11,cubes_y+101,98,48);
      img.setColor(Color.red);
      img.drawString("PAUSE!!!",cubes_x+41,cubes_y+131);
    }

    this.repaint();
  }

  private void paintCube(int x, int y, Color c)
  {
    img.setColor(Color.black);
    img.drawRect(cubes_x + x*12, cubes_y+12*(cubes_height-5-y),10,10);
    img.setColor(c);
    img.fillRect(cubes_x + x*12 + 2, cubes_y+12*(cubes_height-5-y)+2,8,8);
  }

  public void paint(Graphics g)
  {
    if(image != null)
    {
      g.drawImage(image,0,0,null);
    }

  }

  public static void main(String[] args) {
    Teris teris = new Teris();
  }
  private void jbInit() throws Exception {
    this.getContentPane().setBackground(Color.white);
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.setResizable(false);
    this.setTitle("Teris");
    this.addKeyListener(new Teris_this_keyAdapter(this));
  }

  class Game extends Thread
  {
    public boolean run = true;
    private long time = 0;
    private long sec = 0;
    private long bt;


    public void run()
    {
      bt = time;
//      status = STATUS_PLAYING;
//      try{
        while (run) {
STATUS:   switch (status) {
            case STATUS_NONE:
            case STATUS_END:
              switch(KeyQ.get())
              {
                case KeyEvent.VK_S:
                  initTeris();
                  bt = time;
                  status = STATUS_PLAYING;
                  break STATUS;
              }
              break;
            case STATUS_PAUSE:
              switch(KeyQ.get())
              {
                case KeyEvent.VK_P:
                  status = STATUS_PLAYING;
                  break STATUS;
              }
              refreshImage();
              break;
            case STATUS_PLAYING:
              switch(KeyQ.get())
              {
                case KeyEvent.VK_P:
                  status = STATUS_PAUSE;
                  break STATUS;
                case KeyEvent.VK_RIGHT:
                  if(isHit(1,0,0) == false)
                  {
                    cube_posi_x++;
                  }
                  break;
                case KeyEvent.VK_LEFT:
                  if(isHit(-1,0,0) == false)
                  {
                    cube_posi_x--;
                  }
                  break;
                case KeyEvent.VK_UP:
                  if(isHit(0,0,3) == false)
                  {
                    cube_direction = (cube_direction+3)%4;
                  }
                  break;
                case KeyEvent.VK_S:
                  initTeris();
                  bt = time;
                  status = STATUS_PLAYING;
                  break STATUS;
              }

              long t = System.currentTimeMillis();
              time++;

              if((time-bt)>20)
              {
                if(isHit(0,1,0))
                {
                  int sx = Cube.cubex[current_cube][cube_direction];
                  int sy = Cube.cubey[current_cube][cube_direction];

                  if((cube_posi_y+sy-1)>=21)
                  {
                    status = STATUS_END;
                  }

                  for(int i = 0; i < sx; i++)
                    for(int j = 0; j < sy; j++)
                    {
                      if(Cube.shapes[current_cube][cube_direction][i][j])
                      {
                        cubes[i + cube_posi_x][cube_posi_y+sy-1 - j] = true;
                        cubes_color[i + cube_posi_x][cube_posi_y+sy-1 - j]
                          = Cube.colors[current_cube];
                      }
                    }

                  int p = 0;
                  for(int j = 0; j < cubes_height; j++)
                  {
                    int i;
                    for(i = 0; i < cubes_width; i++)
                      if(cubes[i][j] == false) break;
                    if(i < cubes_width)
                    {
                      if(j > p)
                      {
                        for(i = 0; i < cubes_width; i++)
                        {
                          cubes[i][p] = cubes[i][j];
                          cubes_color[i][p] = cubes_color[i][j];
                        }
                      }
                      p++;
                    }
                    else dispose_lines++;
                  }
                  for(int j = p; j < cubes_height; j++)
                    for(int i = 0; i < cubes_width; i++)
                      cubes[i][j] = false;

                  current_cube = next_cube;
                  next_cube = rand.nextInt(Cube.total);
                  cube_posi_y = 21;
                  cube_posi_x = 4;
                }
                else cube_posi_y--;
              }

              refreshImage();
              long t1 = System.currentTimeMillis();
              //if((t1 - t) < 30) sleep(t1-t);
              break;
          }
          try{sleep(100);}catch(Exception ex){}
        }
/*      }
      catch(Exception ex)
      {
        JOptionPane.showMessageDialog(null,ex.toString(),"ERROR",
                                      JOptionPane.ERROR_MESSAGE);
      }*/
    }
  }

  static private class Cube
  {
    static private final boolean shapes[][][][] =
      {
        {
          {{true},{true},{true},{true}},
          {{true,true,true,true}},
          {{true},{true},{true},{true}},
          {{true,true,true,true}}
        },
        {
          {{true,false,false},{true,true,true}},
          {{false,true},{false,true},{true,true}},
          {{true,true,true},{false,false,true}},
          {{true,true},{true,false},{true,false}}
        },
        {
          {{true,true,true},{true,false,false}},
          {{true,false},{true,false},{true,true}},
          {{false,false,true},{true,true,true}},
          {{true,true},{false,true},{false,true}}
        },
        {
          {{true,true},{true,true}},
          {{true,true},{true,true}},
          {{true,true},{true,true}},
          {{true,true},{true,true}}
        },
        {
          {{true,true,false},{false,true,true}},
          {{false,true},{true,true},{true,false}},
          {{true,true,false},{false,true,true}},
          {{false,true},{true,true},{true,false}}
        },
        {
          {{false,true,true},{true,true,false}},
          {{true,false},{true,true},{false,true}},
          {{false,true,true},{true,true,false}},
          {{true,false},{true,true},{false,true}}
        }
      };
    static private final int cubex[][] = {{4,1,4,1},{2,3,2,3},{2,3,2,3},
        {2,2,2,2},{2,3,2,3},{2,3,2,3}};
    static private final int cubey[][] = {{1,4,1,4},{3,2,3,2},{3,2,3,2},
        {2,2,2,2},{3,2,3,2},{3,2,3,2}};
    static private final Color colors[] = {Color.red,Color.blue,Color.cyan,Color.green,
      Color.darkGray,Color.yellow};
    static public final int total = 6;
  }

  void this_keyTyped(KeyEvent e) {
  }

  static class KeyQ{
    private static int[] q = new int[10];
    private static int f = 0;
    private static int b = 0;

    static int get()
    {
      if(f == b) return 0;
      int ans = q[f++];
      f = f%10;
      return ans;
    }

    static void push(int key)
    {
      if(((b+1)%10) == f) return;
      q[b] = key;
      b = (b+1)%10;
    }

    static void clearAll()
    {
      b = f;
    }
  }

  void this_keyPressed(KeyEvent e) {
    KeyQ.push(e.getKeyCode());
  }

}

class Teris_this_keyAdapter extends java.awt.event.KeyAdapter {
  Teris adaptee;

  Teris_this_keyAdapter(Teris adaptee) {
    this.adaptee = adaptee;
  }
  public void keyTyped(KeyEvent e) {
    adaptee.this_keyTyped(e);
  }
  public void keyPressed(KeyEvent e) {
    adaptee.this_keyPressed(e);
  }
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
制服.丝袜.亚洲.中文.综合| 中文字幕成人在线观看| 欧美亚洲国产bt| 972aa.com艺术欧美| 成人免费视频一区二区| 国产夫妻精品视频| 成人污污视频在线观看| 成人激情黄色小说| 91香蕉视频mp4| 一本大道av伊人久久综合| 91在线精品一区二区| 97国产一区二区| 欧美又粗又大又爽| 欧美精品 国产精品| 91精品国产综合久久精品性色| 欧美猛男男办公室激情| 欧美一区永久视频免费观看| 91麻豆精品国产| 亚洲精品一区二区三区香蕉| 久久久精品国产免大香伊| 亚洲国产精品激情在线观看| 中文字幕亚洲一区二区va在线| 亚洲欧美国产高清| 午夜精品一区二区三区免费视频 | 色中色一区二区| 在线欧美日韩精品| 欧美一区三区四区| 久久久久久久网| 中文字幕在线观看不卡视频| 亚洲精品国产第一综合99久久| 亚洲影院免费观看| 蜜臀av性久久久久蜜臀aⅴ四虎| 激情五月婷婷综合| 99久久精品免费| 欧美日韩一二三区| 久久久久久夜精品精品免费| 日韩伦理免费电影| 日韩主播视频在线| 成人听书哪个软件好| 在线亚洲人成电影网站色www| 91精品国产综合久久久久久久| 国产亚洲精品aa午夜观看| 亚洲精品网站在线观看| 日韩电影在线观看一区| 国产精品88av| 欧美日韩午夜在线视频| 久久久综合激的五月天| 亚洲综合精品自拍| 国产乱人伦偷精品视频免下载 | 久久精品视频一区二区| 一区二区在线观看视频| 精品中文字幕一区二区小辣椒 | 国产亚洲美州欧州综合国| 一区二区三区av电影| 美脚の诱脚舐め脚责91| 91日韩一区二区三区| 精品日产卡一卡二卡麻豆| 亚洲男帅同性gay1069| 久久精品国产一区二区| 欧美中文字幕一区二区三区| 26uuu国产日韩综合| 亚洲一区二区三区国产| 国产麻豆午夜三级精品| 欧美精品第1页| 亚洲欧美一区二区三区极速播放 | 精品日韩成人av| 亚洲国产视频一区二区| 精品制服美女丁香| 欧美性高清videossexo| 国产日韩精品久久久| 五月激情综合网| 色欧美片视频在线观看| 欧美国产日韩精品免费观看| 免费观看30秒视频久久| 在线免费av一区| 亚洲欧洲成人精品av97| 国产精品18久久久久久久网站| 911精品产国品一二三产区| 亚洲美女淫视频| 成人免费高清在线观看| 久久亚洲免费视频| 精品一区二区久久| 欧美日韩精品电影| 亚洲免费观看高清在线观看| 岛国精品在线播放| 久久久久88色偷偷免费 | 欧美日韩精品欧美日韩精品一综合| 亚洲欧洲成人av每日更新| 国产成人精品综合在线观看| 日韩一区二区在线播放| 午夜不卡av在线| 欧美无砖砖区免费| 亚洲另类色综合网站| 91在线精品一区二区三区| 中文字幕第一区综合| 国产精品一区一区| 久久久不卡网国产精品一区| 激情六月婷婷久久| 欧美精品一区二区三区蜜桃视频| 日本不卡一区二区三区高清视频| 7777女厕盗摄久久久| 亚洲超丰满肉感bbw| 欧美嫩在线观看| 日韩一区欧美二区| 91精品国产全国免费观看| 日韩黄色免费网站| 欧美肥胖老妇做爰| 青青草原综合久久大伊人精品| 91麻豆精品国产综合久久久久久| 视频一区二区欧美| 欧美一区中文字幕| 久久精品国产久精国产爱| 久久五月婷婷丁香社区| 国产精品12区| 中文字幕在线一区| 色婷婷激情一区二区三区| 亚洲午夜电影在线| 欧美一区二区三区在线观看| 麻豆精品视频在线观看免费| 精品成人a区在线观看| 夫妻av一区二区| 中文字幕欧美一| 欧美性xxxxxxxx| 蜜桃一区二区三区在线| 久久亚洲精品国产精品紫薇| 国产99久久久国产精品免费看| 国产欧美va欧美不卡在线| 99久久精品免费看国产免费软件| 夜色激情一区二区| 91精品国产综合久久精品app| 国内欧美视频一区二区| 国产精品剧情在线亚洲| 欧美视频在线观看一区| 免费成人结看片| 国产精品情趣视频| 欧洲亚洲精品在线| 久久不见久久见中文字幕免费| 国产日韩成人精品| 欧美亚洲另类激情小说| 精品中文字幕一区二区| |精品福利一区二区三区| 欧美色图免费看| 国产在线精品视频| 亚洲激情图片qvod| 日韩一区二区免费高清| 成人精品国产福利| 天天亚洲美女在线视频| 国产欧美精品一区| 欧美精品久久久久久久久老牛影院| 精品一区二区三区欧美| 综合中文字幕亚洲| 日韩欧美www| 一本大道av一区二区在线播放| 麻豆精品一二三| 亚洲精品成人a在线观看| 精品国产91九色蝌蚪| 91国产福利在线| 国产一区二区网址| 亚洲高清免费在线| 日本一区二区三区在线不卡 | 久久―日本道色综合久久| 91久久精品网| 国产黄色91视频| 婷婷成人综合网| 亚洲欧洲av另类| 欧美精品一区二区在线观看| 欧美性猛片xxxx免费看久爱| 国产麻豆视频精品| 日韩国产一区二| 亚洲精品va在线观看| 国产女同性恋一区二区| 欧美精品自拍偷拍| 91麻豆精品秘密| 丁香一区二区三区| 麻豆精品久久精品色综合| 亚洲一区在线播放| 国产精品久久久久精k8| 久久久久久久久久久久久夜| 欧美浪妇xxxx高跟鞋交| 色哦色哦哦色天天综合| 粉嫩在线一区二区三区视频| 九色综合国产一区二区三区| 性欧美大战久久久久久久久| 亚洲婷婷在线视频| 中文字幕 久热精品 视频在线| 欧美大尺度电影在线| 欧美日韩免费观看一区二区三区| www.爱久久.com| 国产91在线观看丝袜| 狠狠色狠狠色综合| 精品一区二区三区不卡| 日本欧美久久久久免费播放网| 亚洲一区av在线| 亚洲一区在线观看网站| 亚洲精品欧美专区| 自拍av一区二区三区| 中文字幕一区二区三区在线播放| 国产日韩欧美精品一区| 亚洲精品一区二区三区四区高清| 欧美一卡2卡3卡4卡|