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

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

?? heibaiqi.java

?? Java編寫的簡易黑白翻轉棋 實現人機對戰 適合初學者學習
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class HeiBaiQi extends Applet implements MouseListener
{
    private static int BASE = 25;
    private int gamegrid[][];
    private boolean playing;
    private boolean playersMove;
    private boolean playerPlaysWhite;
    private boolean lastMoveWasWhite;
    private boolean allowPlay;

     public void init()
    {
        gamegrid = new int[8][8];
        resize(16*BASE, 16*BASE);
        this.addMouseListener(this);
    }
    public void start()
    {   //初始化棋盤(8*8),-1表示沒有放棋子,1為放黑子,0為放白子
        for(int x = 0; x < 8; x++)
        {
            for(int y = 0; y < 8; y++)
                gamegrid[x][y] = -1;
        }
        gamegrid[3][3] = 1;
        gamegrid[3][4] = 0;
        gamegrid[4][3] = 0;
        gamegrid[4][4] = 1;

        lastMoveWasWhite = false;
        playing = false;
        playersMove = true;
        playerPlaysWhite = false;
        allowPlay = true;
    }
    public void update(Graphics g)
    {
        paint(g);
    }
    public void paint(Graphics g)
    {
        Color black  = new Color(0);
        Color grey90 = new Color(0x191919);
        Color grey80 = new Color(0x333333);
        Color grey60 = new Color(0x666666);
        Color grey40 = new Color(0x999999);
        Color grey10 = new Color(0xe5e5e5);
        Color white  = new Color(0xffffff);
        Color green  = new Color(0x669966);
        Color darkgreen = new Color(0x336600);
        int radius = 20;
        //設置棋盤顏色
        g.setColor(darkgreen);
        g.fillRect(0, 0, 16 * BASE, 16 * BASE);
        //畫分隔線
        g.setColor(green);
        for(int i = 1; i < 8; i++)
        {
            g.drawLine(0, i * BASE * 2, 16 * BASE, i * BASE * 2);
            g.drawLine(i * BASE * 2, 0, i * BASE * 2, 16 * BASE);
        }
        //畫棋子
        for(int x = 0; x < 8; x++)
            for(int y = 0; y < 8; y++)
            {
                int xpos = x * BASE * 2 + BASE;
                int ypos = y * BASE * 2 + BASE;
              //畫黑棋子 ,兩次填充,形成輪廓的效果
                if(gamegrid[x][y] == 0)
                {
                    g.setColor(grey80);
                    g.fillOval((xpos - radius) + 5, (ypos - radius) + 5, 
radius * 2, radius * 2);
                    g.setColor(grey10);
                    g.fillOval(xpos - radius, ypos - radius, radius * 2, 
radius * 2);
                    g.setColor(white);
                    g.fillOval(xpos - 19, ypos - 19, 36, 36);
                    g.setColor(grey40);
                    g.fillOval(xpos - 17, ypos - 17, 36, 36);
                    g.setColor(grey10);
                    g.fillOval(xpos - 18, ypos - 18, 36, 36);
                 }
                 else  if(gamegrid[x][y] == 1)
                    {
                        g.setColor(grey80);
                        g.fillOval((xpos - radius) + 5, (ypos - radius) + 
5, radius * 2, radius * 2);
                        g.setColor(grey90);
                        g.fillOval(xpos - radius, ypos - radius, radius * 
2, radius * 2);
                        g.setColor(grey60);
                        g.fillOval(xpos - 19, ypos - 19, 36, 36);
                        g.setColor(black);
                        g.fillOval(xpos - 17, ypos - 17, 36, 36);
                        g.setColor(grey90);
                        g.fillOval(xpos - 18, ypos - 18, 36, 36);
                    }
             }
    }

    public void mouseClicked(MouseEvent e){}
    public void mouseEntered(MouseEvent e){}
    public void mouseExited (MouseEvent e) {}
    public void mousePressed(MouseEvent e){}
    public void mouseReleased(MouseEvent e)
    {
        if(!allowPlay)//如果輸了,就start()重新開始;
        {
            start();
            repaint();
            return;
        }
        int gridx =e.getX()/(BASE*2);
        int gridy =e.getY()/(BASE*2);
        if(playersMove)
        {        //在開始時,玩家放在不同的地方,則以為選擇了不同顏色的棋子
            if(!playing)
                switch(gridx)
                {
                case 2:
                       if(gridy == 3)
                       {  playerPlaysWhite = true;  playing = true; }
                       else if(gridy == 4)
                       { playerPlaysWhite = false;  playing = true; }
                       else   playing = false;
                       break;
                case 3:
                      if(gridy == 2)
                      { playerPlaysWhite = true;   playing = true;}
                      else if(gridy == 5)
                      { playerPlaysWhite = false;  playing = true; }
                      else    playing = false;
                      break;
                case 4:
                      if(gridy == 2)
                      { playerPlaysWhite = false;   playing = true;}
                      else if(gridy == 5)
                      { playerPlaysWhite = true;  playing = true; }
                      else    playing = false;
                      break;
               case 5:
                      if(gridy == 3)
                      { playerPlaysWhite = false;   playing = true;}
                      else if(gridy == 4)
                      { playerPlaysWhite = true;  playing = true; }
                      else    playing = false;
                      break;
                default:
                    playing = false;
            }
            if(moveisvalid(gridx, gridy, !playerPlaysWhite))
            {
                plantapiece(gridx, gridy, playerPlaysWhite);
                showStatus("My move.");
                playersMove = false;
                lastMoveWasWhite = playerPlaysWhite;
                nextMove();
            }
            else
            {
                showStatus("You can't move there. Try again.");
                playersMove = true;
            }
        }
    }
     private void paintsquare(int x, int y)
    {
       Rectangle r = new Rectangle(x * BASE * 2, y * BASE * 2, BASE * 2, 
BASE* 2);
       Graphics g = getGraphics();
       g.clipRect(r.x, r.y, r.width, r.height);//不這樣做的話會閃爍的。
       //hangon();//此處加上該函數會明顯看出界面的變化情況
       paint(g);
       r = null;
    }
    //若x,y位置可以放置子,就返回true
    private boolean moveisvalid(int x, int y, boolean white)
    {
         //valid表示x,y位置是否已經放子
        boolean valid = true;
        if(gamegrid[x][y] != -1)
            valid = false;
        //validway表示x,y位置是否符合能夠吃子的條件
        boolean validway = false;
        BreakUp: for(int p = -1; p < 2; p++)
            for(int q = -1; q < 2; q++)
                if(countindirection(x, y, p, q, !white) > 0)
                {
                    validway = true;
                    break BreakUp;//中斷最外層的for循環!
                }
        if(validway && valid)
            valid = true;
        else
            valid = false;
        return valid;
    }

    //這個函數是向上下左右,左上,左下,右上,右下八個方向尋找相反顏色的旗子
    private int countindirection(int x, int y, int deltax, int deltay, 
boolean black)
    {
        int returnvalue = 0;
        if( x+deltax<0 || x+deltax>7 || y+deltay<0 || y+deltay>7 )
            return 0;
        if(deltax == 0 && deltay == 0)
            return 0;
        boolean maybetrue = false;
        if(gamegrid[x + deltax][y + deltay] == 1)
            if(black)
                maybetrue = true;
            else
                return 0;
        if(gamegrid[x + deltax][y + deltay] == 0)
            if(!black)
                maybetrue = true;
            else
                return 0;
        if(gamegrid[x + deltax][y + deltay] == -1)
            return 0;
        if(maybetrue)//如果在這個方向上確定相鄰的是對方的棋子!
        {
            boolean continueloop = true;
            boolean itsopposite = false;
            int nextx = x + deltax;
            int nexty = y + deltay;
            while(continueloop)
            {
                if(gamegrid[nextx][nexty] == 1)
                    if(black){  returnvalue++; }
                    else     { itsopposite = true; continueloop = false; }
                if(gamegrid[nextx][nexty] == 0)
                    if(!black){ returnvalue++; }
                    else      { itsopposite = true; continueloop = false; }
                if(gamegrid[nextx][nexty] == -1)
                    continueloop = false;
                nextx += deltax;
                nexty += deltay;
                if(nextx < 0 || nextx > 7 || nexty < 0 || nexty > 7)
                    continueloop = false;
            }
            if(!itsopposite)
                returnvalue = 0;
        }
        return returnvalue;
    }
    //該函數輸入置子位置和玩家執子顏色,將棋盤上的異色子吃掉
    private void plantapiece(int x, int y, boolean white)
    {
        if(white)
            gamegrid[x][y] = 0;
        else
            gamegrid[x][y] = 1;
        paintsquare(x, y);

        for(int deltax = -1; deltax < 2; deltax++)
        {
            for(int deltay = -1; deltay < 2; deltay++)
                if(countindirection(x, y, deltax, deltay, white) > 0)
                {
                    int nextx = x + deltax;
                    int nexty = y + deltay;
                    for(boolean continueloop = true; continueloop; )
                    {
                        if(gamegrid[nextx][nexty] == 1)
                        {
                            if(white)
                            {
                                gamegrid[nextx][nexty] = 0;
                                paintsquare(nextx, nexty);
                            }
                            else
                            {
                                continueloop = false;
                            }
                        }
                        else
                        if(gamegrid[nextx][nexty] == 0)
                            if(!white)
                            {
                                gamegrid[nextx][nexty] = 1;
                                paintsquare(nextx, nexty);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产一级二级| 国产精品久久看| 亚洲国产成人午夜在线一区| 国产亚洲精品7777| 一区二区三区欧美亚洲| 男女男精品网站| 波多野结衣亚洲一区| 欧美巨大另类极品videosbest| 日韩欧美激情一区| 九九在线精品视频| 成人app在线| 欧美一级理论性理论a| 日韩理论在线观看| 国内精品免费**视频| 欧美视频一二三区| 国产精品久久久久婷婷二区次| 亚洲aaa精品| 成人激情免费视频| 日韩午夜在线观看| 免费精品视频在线| 国产在线视视频有精品| 色系网站成人免费| 久久这里只精品最新地址| 一区二区三区中文字幕精品精品 | 欧美日韩国产综合一区二区三区| 欧美丝袜自拍制服另类| 美女视频免费一区| 欧美日韩视频在线一区二区| 国产亚洲成av人在线观看导航| 一区二区三区国产| 成人黄页毛片网站| 精品成人一区二区三区四区| 午夜电影网一区| 色综合天天综合色综合av| 久久综合精品国产一区二区三区| 大陆成人av片| 日韩女优毛片在线| 视频一区视频二区中文| 91蝌蚪porny| 国产精品伦理在线| 久久精品噜噜噜成人av农村| 欧美日韩亚洲不卡| 一区二区三区在线观看视频| 懂色av中文字幕一区二区三区| 精品少妇一区二区三区日产乱码| 99久久精品国产麻豆演员表| 欧美精品一区二| 精品在线一区二区三区| 日韩欧美国产综合在线一区二区三区| 一区二区三区免费看视频| av一区二区三区在线| 日本一区二区视频在线| 处破女av一区二区| 国产清纯美女被跳蛋高潮一区二区久久w| 九九九久久久精品| 日韩激情一区二区| 亚洲精品乱码久久久久久日本蜜臀| 琪琪一区二区三区| 欧美videos中文字幕| 精品中文字幕一区二区小辣椒| 91精品国产一区二区| 日精品一区二区| 欧美一区二区三区在| 激情综合色丁香一区二区| 亚洲国产电影在线观看| 国产精品网站导航| 91香蕉视频黄| 首页国产欧美久久| 2023国产精品视频| 91精品福利视频| 日韩精品亚洲一区二区三区免费| 久久综合九色综合欧美就去吻| 亚洲精品中文字幕在线观看| 欧美日韩久久久久久| 国产一区二区电影| 亚洲电影在线播放| 日本午夜一区二区| 亚洲国产精品av| 欧美精品 日韩| 99re这里只有精品首页| 男女视频一区二区| 亚洲国产一区在线观看| 中文字幕精品综合| 日韩欧美色综合| 欧美影视一区在线| 成人妖精视频yjsp地址| 婷婷六月综合网| 成人午夜免费视频| 欧美日韩你懂得| 精品视频在线免费观看| 久久综合色鬼综合色| 欧美色大人视频| 欧美日韩一区二区三区高清| 一本到不卡精品视频在线观看| jlzzjlzz欧美大全| 波多野结衣在线一区| 91成人在线免费观看| 成人app软件下载大全免费| 91国偷自产一区二区三区观看| 日本vs亚洲vs韩国一区三区| 亚洲精品国产第一综合99久久| 欧美激情在线观看视频免费| 精品精品欲导航| 精品国产露脸精彩对白| 日韩午夜三级在线| 在线综合+亚洲+欧美中文字幕| 91蜜桃网址入口| 欧美日韩在线播放三区| 欧美亚洲国产怡红院影院| 欧美日韩国产在线观看| 欧美精品v国产精品v日韩精品| 911精品国产一区二区在线| 欧洲精品中文字幕| 欧美日韩国产精选| 欧美三级中文字幕在线观看| 欧美三级在线视频| 久久综合色天天久久综合图片| 国产亚洲福利社区一区| 久久久夜色精品亚洲| 精品国产一二三区| 激情综合色丁香一区二区| 国产91精品一区二区麻豆亚洲| 在线视频一区二区三区| 精品国产精品网麻豆系列| 久久天天做天天爱综合色| 欧美国产精品中文字幕| 亚洲综合在线电影| 成人性生交大片免费看视频在线| 国产sm精品调教视频网站| 91麻豆精品91久久久久久清纯 | 欧美私人免费视频| 久久精品亚洲精品国产欧美| 亚洲一区二区三区小说| 欧美一区日韩一区| 国产精品美女www爽爽爽| 美女一区二区在线观看| 99热精品一区二区| 久久久精品国产免大香伊 | 日韩理论片一区二区| 激情另类小说区图片区视频区| 欧美日韩另类国产亚洲欧美一级| 久久久精品tv| 日韩主播视频在线| 在线观看三级视频欧美| 麻豆精品在线播放| 欧美日韩大陆在线| 亚洲电影一区二区| 欧美久久一区二区| 亚洲va韩国va欧美va精品| 久久99久久久久久久久久久| jlzzjlzz亚洲女人18| 亚洲色图欧洲色图婷婷| 日韩欧美精品在线| 色综合欧美在线| 国产馆精品极品| 日本美女一区二区| 亚洲男同1069视频| 国产精品午夜电影| 亚洲成人自拍网| 国产精品日韩精品欧美在线| 欧美主播一区二区三区| 黄色日韩网站视频| 亚洲高清在线精品| 中文在线一区二区| 欧美精品一级二级三级| 国产在线视视频有精品| 亚洲国产精品一区二区久久| 精品国产乱子伦一区| 欧美视频中文字幕| 国产成人亚洲综合a∨猫咪| 一区二区三区高清| 国产精品久久久久一区二区三区共| 日韩免费观看高清完整版| 在线中文字幕一区| 91美女在线观看| aaa欧美色吧激情视频| 精品一区二区三区在线播放| 一区二区三区国产豹纹内裤在线| 国产性做久久久久久| 欧美一区二区精品久久911| 在线观看av一区| 91香蕉视频mp4| 不卡视频免费播放| 99久久精品国产观看| 成人毛片视频在线观看| 国产毛片精品国产一区二区三区| 青青草伊人久久| 午夜精品久久久久久久蜜桃app| 国产精品福利电影一区二区三区四区| 五月婷婷另类国产| 爽好多水快深点欧美视频| 首页国产欧美久久| 久久99精品久久久久| 亚洲成人精品一区二区| 丝袜诱惑制服诱惑色一区在线观看 | 国产精品传媒入口麻豆| 国产精品系列在线| 亚洲人成精品久久久久久 | 国产精品系列在线| 亚洲色图欧洲色图婷婷|