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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? breakout.java

?? 彈球游戲 Applet 源碼
?? JAVA
字號:
import java.awt.*;
import java.applet.Applet;

public class Breakout extends Applet implements Runnable
{
  Dimension	d;
  Font 		largefont = new Font("Helvetica", Font.BOLD, 24);
  Font		smallfont = new Font("Helvetica", Font.BOLD, 14);

  FontMetrics	fmsmall, fmlarge;  
  Graphics	goff;
  Image		ii;
  Thread	thethread;

  boolean	ingame=false;

  int		player1score;
  int		ballx,bally;
  int		batpos;
  int		batdpos=0;
  int		balldx=0, balldy=0;
  int		dxval;
  int		ballsleft;
  int		count;
  boolean	showtitle=true;
  boolean[]	showbrick;
  int		bricksperline;

  final int	borderwidth=5;
  final int	batwidth=20;
  final int	ballsize=5;
  final int	batheight=5;
  final int	scoreheight=20;
  final int	screendelay=300;
  final int	brickwidth=15;
  final int     brickheight=8;
  final int	brickspace=2;
  final int	backcol=0x102040;
  final int	numlines=4;
  final int     startline=32;

  public String getAppletInfo()
  {
    return("Breakout - by Ali");
  }

  public void init()
  {
    Graphics g;
    d = size();
    setBackground(new Color(backcol));
    bricksperline=(d.width-2*borderwidth)/(brickwidth+brickspace);
    d.width=bricksperline*(brickwidth+brickspace)+(2*borderwidth);
    g=getGraphics();
    g.setFont(smallfont);
    fmsmall = g.getFontMetrics();
    g.setFont(largefont);
    fmlarge = g.getFontMetrics();

    showbrick=new boolean[bricksperline*numlines];
    GameInit();
  }

  public void GameInit()
  {
    batpos=(d.width-batwidth)/2;
    ballx=(d.width-ballsize)/2;
    bally=(d.height-ballsize-scoreheight-2*borderwidth);
    player1score=0;
    ballsleft=3;
    dxval=2;
    if (Math.random()<0.5)
      balldx=dxval;
    else
      balldx=-dxval;
    balldy=-dxval;
    count=screendelay;
    batdpos=0;
    InitBricks();
  }

  public void InitBricks()
  {
    int i;
    for (i=0; i<numlines*bricksperline; i++)
      showbrick[i]=true;
  }

  public boolean keyDown(Event e, int key)
  {
    if (ingame)
    {
      if (key == Event.LEFT)
          batdpos=-3;
      if (key == Event.RIGHT)
        batdpos=3;
      if (key == Event.ESCAPE)
        ingame=false;
    }
    else
    {
      if (key == 's' || key == 'S')
      {
        ingame=true;
        GameInit();
      }
    }
    return true;
  }

  public boolean keyUp(Event e, int key)
  {
    System.out.println("Key: "+key);
    if (key == Event.LEFT || key == Event.RIGHT)
       batdpos=0;
    return true;
  }

  public void paint(Graphics g)
  {
    String s;
    Graphics gg;

    if (goff==null && d.width>0 && d.height>0)
    {
      ii = createImage(d.width, d.height);
      goff = ii.getGraphics();
    }
    if (goff==null || ii==null)
      return;

    goff.setColor(new Color(backcol));
    goff.fillRect(0, 0, d.width, d.height);
    if (ingame)
      PlayGame();
    else
      ShowIntroScreen();
    g.drawImage(ii, 0, 0, this);
  }


  public void PlayGame()
  {
    MoveBall();
    CheckBat();
    CheckBricks();
    DrawPlayField();
    DrawBricks();
    ShowScore();
  }

  public void ShowIntroScreen()
  {
    String s;

    MoveBall();
    CheckBat();
    CheckBricks();
    BatDummyMove();
    DrawPlayField();
    DrawBricks();
    ShowScore();
    goff.setFont(largefont);
    goff.setColor(new Color(96,128,255));

    if (showtitle)
    {
      s="彈球游戲";
      goff.drawString(s,(d.width-fmlarge.stringWidth(s)) / 2, (d.height-scoreheight-borderwidth)/2 - 20);
    }
    else
    {
      goff.setFont(smallfont);
      goff.setColor(new Color(96,128,255));
      s="請按下'S'鍵開始游戲!";
      goff.drawString(s,(d.width-fmsmall.stringWidth(s))/2,(d.height-scoreheight-borderwidth)/2 - 10);
      goff.setColor(new Color(255,160,64));
      s="請使用方向鍵來控制球拍的運動";
      goff.drawString(s,(d.width-fmsmall.stringWidth(s))/2,(d.height-scoreheight-borderwidth)/2 + 20);
    }
    count--;
    if (count<=0)
    { count=screendelay; showtitle=!showtitle; }
  }


  public void DrawBricks()
  {
    int i,j;
    boolean nobricks=true;
    int colordelta=255/(numlines-1);

    for (j=0; j<numlines; j++)
    {
      for (i=0; i<bricksperline; i++)
      {
        if (showbrick[j*bricksperline+i])
        {
          nobricks=false;
          goff.setColor(new Color(255,j*colordelta,255-j*colordelta));
          goff.fillRect(borderwidth+i*(brickwidth+brickspace), startline+j*(brickheight+brickspace),
               brickwidth, brickheight);
        }
      }
    }
    if (nobricks)
    {
      InitBricks();
      if (ingame)
        player1score+=100;
    }
  }
   
  public void DrawPlayField()
  {
    goff.setColor(Color.white);
    goff.fillRect(0,0,d.width,borderwidth);
    goff.fillRect(0,0,borderwidth,d.height);
    goff.fillRect(d.width-borderwidth,0,borderwidth,d.height);
    goff.fillRect(batpos,d.height-2*borderwidth-scoreheight, batwidth,batheight); // 球拍
    goff.fillRect(ballx,bally,ballsize,ballsize); // 球
  }


  public void ShowScore()
  {
    String s;
    goff.setFont(smallfont);
    goff.setColor(Color.white);

    s="得分: "+player1score;
    goff.drawString(s,40,d.height-5);
    s="生命數量: "+ballsleft;
    goff.drawString(s,d.width-40-fmsmall.stringWidth(s),d.height-5);
  }


  public void MoveBall()
  {
    ballx+=balldx;
    bally+=balldy;
    if (bally<=borderwidth)
    {
      balldy=-balldy;
      bally=borderwidth;
    }
    if (bally>=(d.height-ballsize-scoreheight))
    {
      if (ingame)
      {
        ballsleft--;
        if (ballsleft<=0)
          ingame=false;
      }
      ballx=batpos+(batwidth-ballsize)/2;
      bally=startline+numlines*(brickheight+brickspace);
      balldy=dxval;
      balldx=0;
    }
    if (ballx>=(d.width-borderwidth-ballsize))
    {
      balldx=-balldx;
      ballx=d.width-borderwidth-ballsize;
    }
    if (ballx<=borderwidth)
    {
      balldx=-balldx;
      ballx=borderwidth;
    }
  }

  public void BatDummyMove()
  {
    if (ballx<(batpos+2))
      batpos-=3;
    else if (ballx>(batpos+batwidth-3))
      batpos+=3;
  }

  public void CheckBat()
  {
    batpos+=batdpos;

    if (batpos<borderwidth)
      batpos=borderwidth;
    else if (batpos>(d.width-borderwidth-batwidth))
      batpos=(d.width-borderwidth-batwidth);
 
    if (bally>=(d.height-scoreheight-2*borderwidth-ballsize) && 
        bally<(d.height-scoreheight-2*borderwidth) &&
        (ballx+ballsize)>=batpos && ballx<=(batpos+batwidth))
    {
      bally=d.height-scoreheight-ballsize-borderwidth*2;
      balldy=-dxval;
      balldx=CheckBatBounce(balldx,ballx-batpos);
    }
  }

  public int CheckBatBounce(int dy, int delta)
  {
    int sign;
    int stepsize, i=-ballsize, j=0;
    stepsize=(ballsize+batwidth)/8;

    if (dy>0)
      sign=1;
    else
      sign=-1;

    while(i<batwidth && delta>i)
    {
      i+=stepsize;
      j++;
    }
    switch(j)
    {
      case 0:
      case 1:
        return -4;
      case 2:
	return -3;
      case 7:
        return 3;
      case 3:
      case 6:
        return sign*2;
      case 4:
      case 5:
        return sign*1;
      default:
        return 4;
    }
  }

  public void CheckBricks()
  {
    int i,j,x,y;
    int xspeed=balldx;
    if (xspeed<0) xspeed=-xspeed;
    int ydir=balldy;

    if (bally<(startline-ballsize) || bally>(startline+numlines*(brickspace+brickheight)))
      return;
    for (j=0; j<numlines; j++)
    {
      for (i=0; i<bricksperline; i++)
      {
        if (showbrick[j*bricksperline+i])
        {
          y=startline+j*(brickspace+brickheight);
          x=borderwidth+i*(brickspace+brickwidth);
          if (bally>=(y-ballsize) && bally<(y+brickheight) &&
              ballx>=(x-ballsize) && ballx<(x+brickwidth))
          {
            showbrick[j*bricksperline+i]=false;
            if (ingame)
              player1score+=(numlines-j);
            // 敲擊磚塊的地點
            if (ballx>=(x-ballsize) && ballx<=(x-ballsize+3))
            { // 左邊
              balldx=-xspeed;
            }
            else if (ballx<=(x+brickwidth-1) && ballx>=(x+brickwidth-4))
            { // 右邊
              balldx=xspeed;
            }              
            balldy=-ydir;
          }
        }
      }
    }
  }

  public void run()
  {
    long  starttime;
    Graphics g;

    Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
    g=getGraphics();

    while(true)
    {
      starttime=System.currentTimeMillis();
      try
      {
        paint(g);
        starttime += 20;
        Thread.sleep(Math.max(0, starttime-System.currentTimeMillis()));
      }
      catch (InterruptedException e)
      {
        break;
      }
    }
  }

  public void start()
  {
    if (thethread == null) {
      thethread = new Thread(this);
      thethread.start();
    }
  }

  public void stop()
  {
    if (thethread != null) {
      thethread.stop();
      thethread = null;
    }
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产123区| 欧美成人精品3d动漫h| 717成人午夜免费福利电影| 国产午夜精品久久久久久久| 夜夜嗨av一区二区三区| 国产精品一区二区三区网站| 欧美亚洲国产怡红院影院| 国产亚洲欧美日韩在线一区| 天天综合网天天综合色| 99re视频这里只有精品| 久久久国产一区二区三区四区小说 | 欧美日韩国产不卡| 久久久噜噜噜久久中文字幕色伊伊 | av综合在线播放| 日韩精品一区二区三区视频| 一区二区三区日韩| 成人久久久精品乱码一区二区三区| 99热精品一区二区| 久久精品人人做人人综合 | 亚洲欧洲99久久| 韩国v欧美v亚洲v日本v| 欧美高清视频在线高清观看mv色露露十八 | 国产精品久久久久影院老司| 老司机午夜精品99久久| 欧美日韩激情一区二区三区| 中文字幕一区二区在线观看| 国产成人在线色| 精品免费国产一区二区三区四区| 一区二区三区精品在线| 色综合一个色综合亚洲| 中文字幕一区二区三| 丰满亚洲少妇av| 中文字幕乱码亚洲精品一区| 国产高清精品在线| 欧美国产日韩亚洲一区| 国产精品一区二区久久精品爱涩| 91精品婷婷国产综合久久性色| 一区二区在线看| 91久久人澡人人添人人爽欧美| 国产精品第13页| 91免费看视频| 亚洲成人综合网站| 538prom精品视频线放| 日韩激情视频在线观看| 日韩美女在线视频| 国产一区91精品张津瑜| 精品剧情在线观看| 国产丶欧美丶日本不卡视频| 国产精品久久久久久亚洲毛片| 国产精品资源网站| 亚洲视频每日更新| 欧美自拍丝袜亚洲| 捆绑调教一区二区三区| 久久美女高清视频| www.欧美色图| 亚洲大片一区二区三区| 日韩精品中文字幕在线一区| 国产一区二区网址| 最近日韩中文字幕| 在线播放欧美女士性生活| 麻豆91小视频| 国产精品国产馆在线真实露脸| 国产精品伊人色| 中文字幕在线不卡| 欧美日韩dvd在线观看| 韩国视频一区二区| 亚洲欧美色图小说| 日韩欧美一级二级三级久久久| 久久97超碰国产精品超碰| 亚洲欧洲av色图| 欧美一级一级性生活免费录像| 狠狠色狠狠色综合| 亚洲精品午夜久久久| 欧美大度的电影原声| 不卡高清视频专区| 日韩国产高清影视| 综合色天天鬼久久鬼色| 精品久久久久香蕉网| 色噜噜偷拍精品综合在线| 国产麻豆精品95视频| 午夜视频一区在线观看| 国产精品久久久久久久久免费桃花 | proumb性欧美在线观看| 五月综合激情日本mⅴ| 国产精品久久久久久久午夜片 | 无码av中文一区二区三区桃花岛| 制服丝袜中文字幕亚洲| 本田岬高潮一区二区三区| 美女视频一区二区| 亚洲国产乱码最新视频| 国产精品免费视频一区| 精品国产一区二区亚洲人成毛片 | 国产宾馆实践打屁股91| 日本在线不卡视频| 一区二区三区精密机械公司| 久久久www免费人成精品| 欧美日韩精品是欧美日韩精品| 国产一区二区三区在线看麻豆| 中文字幕中文字幕在线一区 | 不卡一二三区首页| 久久99久久99小草精品免视看| 日韩毛片视频在线看| 国产日本亚洲高清| 精品欧美乱码久久久久久1区2区 | 国产精品不卡一区二区三区| 精品久久久网站| 日韩欧美视频一区| 欧美一区二区三区四区五区| 欧美性大战久久久久久久 | 91看片淫黄大片一级| 成人免费观看av| 成人激情免费网站| 成人性生交大片免费看中文| 国产精品66部| 国产精品夜夜嗨| 国产成人亚洲综合色影视| 国产乱子伦一区二区三区国色天香| 香蕉乱码成人久久天堂爱免费| 亚洲精品视频一区| 亚洲乱码精品一二三四区日韩在线| 国产日本欧美一区二区| 国产精品久久久久久久岛一牛影视 | 成人综合在线观看| 在线看日本不卡| av影院午夜一区| 色婷婷综合五月| 91免费精品国自产拍在线不卡| 国产风韵犹存在线视精品| 成人午夜激情影院| 色婷婷综合激情| 欧美区一区二区三区| 日韩欧美在线影院| 久久精品一区八戒影视| |精品福利一区二区三区| 一区二区三区四区精品在线视频| 亚洲精品水蜜桃| 日韩成人一区二区三区在线观看| 亚洲成在人线免费| 久久成人久久爱| 成人黄色电影在线| 欧美色成人综合| 精品日韩一区二区三区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产精品家庭影院| 亚洲三级免费观看| 免费的国产精品| 成年人国产精品| 91福利视频在线| 精品国产一区久久| 一区二区在线免费观看| 美女视频第一区二区三区免费观看网站| 奇米影视一区二区三区小说| 国产精品一区二区不卡| 欧美中文字幕久久| 2020日本不卡一区二区视频| 国产精品久久久久久久浪潮网站| 亚洲精品v日韩精品| 久久99热99| 91一区一区三区| 精品毛片乱码1区2区3区| 亚洲欧美日韩中文播放| 精品一区二区三区欧美| 91丨porny丨国产| 久久老女人爱爱| 午夜电影久久久| 99久久99久久久精品齐齐| 91精品久久久久久久91蜜桃| 国产精品成人在线观看| 美女一区二区视频| 欧洲亚洲精品在线| 国产精品乱码一区二三区小蝌蚪| 亚洲成人第一页| 91香蕉国产在线观看软件| 欧美tk—视频vk| 亚洲第一二三四区| 91免费视频网| 中文乱码免费一区二区| 精品综合免费视频观看| 欧美日韩成人在线| 亚洲欧美日韩国产综合| 国产成人精品一区二区三区网站观看| 国产成人免费在线视频| 日韩欧美亚洲国产另类| 狂野欧美性猛交blacked| 欧美视频中文一区二区三区在线观看| 日韩一区二区三区在线| 偷拍一区二区三区四区| 色吧成人激情小说| 综合激情网...| 99在线精品视频| 国产精品乱码妇女bbbb| 国内一区二区视频| 日韩精品专区在线影院重磅| 日韩激情一二三区| 欧美精品自拍偷拍| 午夜日韩在线电影| 欧美一区二区在线免费观看| 日日夜夜免费精品视频| 91精品啪在线观看国产60岁| 亚洲成人资源在线|