最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java Swing實(shí)現(xiàn)五子棋游戲

 更新時(shí)間:2020年12月10日 11:47:53   作者:四原色  
這篇文章主要為大家詳細(xì)介紹了java Swing實(shí)現(xiàn)五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java實(shí)現(xiàn)五子棋項(xiàng)目,供大家參考,具體內(nèi)容如下

運(yùn)行結(jié)果

視頻經(jīng)過(guò)壓縮畫(huà)質(zhì)略顯粗糙。

標(biāo)題

1)繪制網(wǎng)格棋盤(pán):

重寫(xiě)JPanel的paint(Graphics g)方法,繪制16*16網(wǎng)格。
如圖:

2)代碼如下(僅包含部分代碼):

public class Board extends JPanel{
 int width = Toolkit.getDefaultToolkit().getScreenSize().width;
 int height = Toolkit.getDefaultToolkit().getScreenSize().height;

 public HashMap<Point,Color> points=new HashMap<>();//存放已出的所有其中,方便繪圖和計(jì)算結(jié)果
 Board(){
  this.setVisible(true);
  drawBoard();
 }

 public int starX=300,starY=40,step=40,piecesR=28;
 BufferedImage buf;

 @Override
 public void paint(Graphics g){
  g.drawImage(buf, 0, 0,this);
 }

 void drawL(Point p,Graphics2D g1,int length,int bound){
  int x1=p.x-bound;
  int x2=p.x-bound-length;
  int x3=p.x+bound;
  int x4=p.x+bound+length;
  int y1=p.y-bound;
  int y2=p.y-bound-length;
  int y3=p.y+bound;
  int y4=p.y+bound+length;
  g1.drawLine(x1,y1,x2,y1);
  g1.drawLine(x1,y1,x1,y2);
  g1.drawLine(x1,y3,x2,y3);
  g1.drawLine(x1,y3,x1,y4);
  g1.drawLine(x3,y3,x3,y4);
  g1.drawLine(x3,y3,x4,y3);
  g1.drawLine(x3,y1,x4,y1);
  g1.drawLine(x3,y1,x3,y2);
 }

 public void drawBoard(){
  int Max=step*15;
  buf = new BufferedImage(this.width, this.height, BufferedImage.TYPE_INT_RGB);
  Graphics2D g1 = buf.createGraphics(); // 創(chuàng)建畫(huà)筆

  g1.addRenderingHints((Map)(Toolkit.getDefaultToolkit().getDesktopProperty("awt.font.desktophints")));

  g1.setColor(new Color(46,139,87));//60,179,113//0,255,127
  g1.fillRect(0,0,this.width,this.height);

  g1.setColor(new Color(106,90,205));
  g1.fill3DRect(starX, starY, Max, Max, true);


  for (int i = 0; i <=15; i++) {
   g1.setColor(Color.WHITE);

   g1.drawLine(starX, starY+i*step, Max+starX, starY+i*step); //畫(huà)棋盤(pán)橫線
   g1.drawLine(starX+i*step, starY, starX+i*step, Max+starY); //畫(huà)棋盤(pán)豎線

   g1.setColor(Color.black);
   g1.setFont(new Font("楷體",Font.BOLD,15));
   g1.drawString(numToCh(i),starX-((numToCh(i).length()==1)?25:35),starY+i*step+5);//縱行
   g1.drawString(numToCh(i),starX+i*step-((numToCh(i).length()==1)?5:15),starY-8);//橫行

   g1.setColor(Color.BLACK);

   g1.setStroke(new BasicStroke(2.0f));

   if(i==4) {
    drawL(new Point(starX+i*step,starY+i*step),g1,8,4);
    drawL(new Point(starX+i*step,starY+12*step),g1,8,4);
   }
   if(i==12){
    drawL(new Point(starX+i*step,starY+i*step),g1,8,4);
    drawL(new Point(starX+i*step,starY+4*step),g1,8,4);
   }

  Iterator iterator=points.entrySet().iterator();
  while(iterator.hasNext()){
   Map.Entry<Point,Color> entry=(Map.Entry)iterator.next();
   g1.setColor(entry.getValue());
   g1.fillOval(starX+(entry.getKey().x)*step-17,starY+(entry.getKey().y)*step-17,34,34);
  }

  String []str={"開(kāi)始","悔棋","投降","幫助","重來(lái)"};
  for(int i=0;i<str.length;i++) {

   g1.setColor(Color.white);
   g1.fillRect(140+190*i, starY +Max+45, 150, 50);

   g1.setColor(Color.black);

   g1.setStroke(new BasicStroke(50.0f));
   g1.setFont(new Font("宋體",Font.BOLD,35));

   g1.drawString(str[i], 180+190*i, starY +Max+80);//縱行
  }
  repaint();
 }
}

具體運(yùn)行效果

具體項(xiàng)目代碼見(jiàn):java五子棋游戲

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java Semaphore實(shí)現(xiàn)高并發(fā)場(chǎng)景下的流量控制

    Java Semaphore實(shí)現(xiàn)高并發(fā)場(chǎng)景下的流量控制

    在java開(kāi)發(fā)的工作中是否會(huì)出現(xiàn)這樣的場(chǎng)景,你需要實(shí)現(xiàn)一些異步運(yùn)行的任務(wù),該任務(wù)可能存在消耗大量?jī)?nèi)存的情況,所以需要對(duì)任務(wù)進(jìn)行并發(fā)控制。本文將介紹通過(guò)Semaphore類優(yōu)雅的實(shí)現(xiàn)并發(fā)控制,感興趣的可以了解一下
    2021-12-12
  • Java構(gòu)建JDBC應(yīng)用程序的實(shí)例操作

    Java構(gòu)建JDBC應(yīng)用程序的實(shí)例操作

    在本篇文章里小編給大家整理了一篇關(guān)于Java構(gòu)建JDBC應(yīng)用程序的實(shí)例操作,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-03-03
  • IDEA中的HTTP Client使用教程

    IDEA中的HTTP Client使用教程

    這篇文章主要介紹了IDEA中的HTTP Client使用教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Mybatis 入門(mén)之MyBatis環(huán)境搭建(第一篇)

    Mybatis 入門(mén)之MyBatis環(huán)境搭建(第一篇)

    Mybatis的前身叫iBatis,本是apache的一個(gè)開(kāi)源項(xiàng)目, 2010年這個(gè)項(xiàng)目由apache software foundation 遷移到了google code,并且改名為MyBatis。這篇文章主要介紹了Mybatis入門(mén)第一篇之MyBaits環(huán)境搭建,需要的朋友參考下
    2016-12-12
  • 數(shù)組實(shí)現(xiàn)Java 自定義Queue隊(duì)列及應(yīng)用操作

    數(shù)組實(shí)現(xiàn)Java 自定義Queue隊(duì)列及應(yīng)用操作

    這篇文章主要介紹了數(shù)組實(shí)現(xiàn)Java 自定義Queue隊(duì)列及應(yīng)用操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 解決Mybatis-plus找不到對(duì)應(yīng)表及默認(rèn)表名命名規(guī)則的問(wèn)題

    解決Mybatis-plus找不到對(duì)應(yīng)表及默認(rèn)表名命名規(guī)則的問(wèn)題

    這篇文章主要介紹了解決Mybatis-plus找不到對(duì)應(yīng)表及默認(rèn)表名命名規(guī)則的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • spring boot 日志/頁(yè)面處理、實(shí)體類構(gòu)建、后臺(tái)管理功能的實(shí)現(xiàn)

    spring boot 日志/頁(yè)面處理、實(shí)體類構(gòu)建、后臺(tái)管理功能的實(shí)現(xiàn)

    這篇文章主要介紹了spring boot 日志/頁(yè)面處理、實(shí)體類構(gòu)建、后臺(tái)管理功能的實(shí)現(xiàn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • 關(guān)于Java?CPU或內(nèi)存使用率過(guò)高問(wèn)題定位

    關(guān)于Java?CPU或內(nèi)存使用率過(guò)高問(wèn)題定位

    Spring?cloud微服務(wù)廣泛應(yīng)用后,服務(wù)的監(jiān)控和運(yùn)維壓力也與日俱增,經(jīng)常有服務(wù)出現(xiàn)CPU或者內(nèi)存使用率過(guò)高的告警,那么遇到這樣的問(wèn)題我們?cè)撊绾闻挪槟??我們可以借助哪些工具?lái)定位問(wèn)題呢?本文將介紹一下遇到此類問(wèn)題的解決思路和方法
    2024-10-10
  • springmvc+spring+mybatis實(shí)現(xiàn)用戶登錄功能(上)

    springmvc+spring+mybatis實(shí)現(xiàn)用戶登錄功能(上)

    這篇文章主要為大家詳細(xì)介紹了springmvc+spring+mybatis實(shí)現(xiàn)用戶登錄功能,比較基礎(chǔ)的學(xué)習(xí)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • java編寫(xiě)一個(gè)花名隨機(jī)抽取器的實(shí)現(xiàn)示例

    java編寫(xiě)一個(gè)花名隨機(jī)抽取器的實(shí)現(xiàn)示例

    這篇文章主要介紹了java編寫(xiě)一個(gè)花名隨機(jī)抽取器的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03

最新評(píng)論

呼伦贝尔市| 永仁县| 日喀则市| 会同县| 德安县| 洪洞县| 黔东| 定日县| 威宁| 华阴市| 朝阳县| 彭泽县| 六安市| 德格县| 盐边县| 漳州市| 黄浦区| 大同市| 台湾省| 无为县| 峨边| 土默特右旗| 惠东县| 铜梁县| 洛阳市| 六枝特区| 青川县| 子长县| 化州市| 佛冈县| 杂多县| 岗巴县| 泉州市| 伊金霍洛旗| 芮城县| 米脂县| 呈贡县| 永济市| 永州市| 海伦市| 宣威市|