Java實現(xiàn)兩人五子棋游戲(二) 畫出棋盤
本文為大家分享了java畫出五子棋游戲棋盤的方法,供大家參考,具體內(nèi)容如下
棋盤模塊:
畫五子棋棋盤:19條橫線、19條豎線
步驟一:顯示棋盤
我有一張名為chessboard.png的棋盤,位置為根目錄/res/drawable/chessboard/png,現(xiàn)在我要顯示這張圖片。

DrawChessBoard.java
package xchen.test.simpleGobang;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JPanel;
public class DrawChessBoard extends JPanel{
public Image boardImg;
public DrawChessBoard() {
boardImg = Toolkit.getDefaultToolkit().getImage("res/drawable/chessboard.png");
if(boardImg == null)
System.err.println("png do not exist");
}
@Override
protected void paintComponent(Graphics g) {
// TODO Auto-generated method stub
super.paintComponent(g);
int imgWidth = boardImg.getWidth(this);
int imgHeight = boardImg.getHeight(this);
int FWidth = getWidth();
int FHeight= getHeight();
int x=(FWidth-imgWidth)/2;
int y=(FHeight-imgHeight)/2;
g.drawImage(boardImg, x, y, null);
}
}
Main.java
package xchen.test.simpleGobang;
import java.awt.Container;
import javax.swing.JFrame;
import xchen.test.simpleGobang.DrawChessBoard;
public class Main extends JFrame{
private DrawChessBoard drawChessBoard;
public Main() {
drawChessBoard = new DrawChessBoard();
//Frame標題
setTitle("單機五子棋");
Container containerPane =getContentPane();
containerPane.add(drawChessBoard);
}
public static void main(String[] args) {
Main m = new Main();
m.setVisible(true);
}
}
運行一下

步驟二:為棋盤畫上橫豎線
DrawChessBoard.java
package xchen.test.simpleGobang;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JPanel;
public class DrawChessBoard extends JPanel{
public Image boardImg;
final private int ROWS = 19;
public DrawChessBoard() {
boardImg = Toolkit.getDefaultToolkit().getImage("res/drawable/chessboard2.png");
if(boardImg == null)
System.err.println("png do not exist");
}
@Override
protected void paintComponent(Graphics g) {
// TODO Auto-generated method stub
super.paintComponent(g);
int imgWidth = boardImg.getWidth(this);
int imgHeight = boardImg.getHeight(this);
int FWidth = getWidth();
int FHeight= getHeight();
int x=(FWidth-imgWidth)/2;
int y=(FHeight-imgHeight)/2;
g.drawImage(boardImg, x, y, null);
int margin = x;
int span_x=imgWidth/ROWS;
int span_y=imgHeight/ROWS;
//畫橫線
for(int i=0;i<ROWS;i++)
{
g.drawLine(x, y+i*span_y, FWidth-x,y+i*span_y);
}
//畫豎線
for(int i=0;i<ROWS;i++)
{
g.drawLine(x+i*span_x, y, x+i*span_x,FHeight-y);
}
}
}
Main.java不變
運行一下

遇到的問題:
1)Eclipse不識別文件夾下的圖片
問題:文件夾中有圖片,但是在Eclipse項目欄中不顯示
解決辦法:在Eclipse中,選中根目錄,F(xiàn)5 refresh,就顯示出來了。
更多有趣的經(jīng)典小游戲?qū)崿F(xiàn)專題,分享給大家:
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java中Map與對象之間互相轉(zhuǎn)換的幾種常用方式
在Java中將對象和Map相互轉(zhuǎn)換是常見的操作,可以通過不同的方式實現(xiàn)這種轉(zhuǎn)換,下面這篇文章主要給大家介紹了關(guān)于Java中Map與對象之間互相轉(zhuǎn)換的幾種常用方式,需要的朋友可以參考下2024-01-01
org.apache.ibatis.binding.BindingException異常報錯原因以及詳細解決方案
這篇文章主要給大家介紹了關(guān)于org.apache.ibatis.binding.BindingException異常報錯原因以及詳細解決方案的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-02-02
Spring6.x對調(diào)度和異步執(zhí)行的注解支持示例詳解
這篇文章主要為大家介紹了Spring6.x對調(diào)度和異步執(zhí)行的注解支持示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11
Java核心編程之文件隨機讀寫類RandomAccessFile詳解
這篇文章主要為大家詳細介紹了Java核心編程之文件隨機讀寫類RandomAccessFile,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08
springboot使用EMQX(MQTT協(xié)議)的實現(xiàn)
最近由于iot越來越火, 物聯(lián)網(wǎng)的需求越來越多, 那么理所當然的使用mqtt的場景也就越來越多,本文主要介紹了springboot使用EMQX(MQTT協(xié)議)的實現(xiàn),感興趣的可以了解一下2023-10-10

