棋盘模块:

画五子棋棋盘:19条横线、19条竖线

步骤一:显示棋盘

我有一张名为chessboard.png的棋盘,位置为根目录/res/drawable/chessboard/png,现在我要显示这张图片。

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.getHeight(this);

int imgHeight = boardImg.getWidth(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.getHeight(this);

int imgHeight = boardImg.getWidth(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

{

g.drawLine(x, y+i*span_y, FWidth-x,y+i*span_y);

}

//画竖线

for(int i=0;i

{

g.drawLine(x+i*span_x, y, x+i*span_x,FHeight-y);

}

}

}

Main.java不变

运行一下

遇到的问题:

1)Eclipse不识别文件夹下的图片

问题:文件夹中有图片,但是在Eclipse项目栏中不显示

解决办法:在Eclipse中,选中根目录,F5 refresh,就显示出来了。

java五子棋盘_Java实现一个简单的两人五子棋游戏(二) 画棋盘相关推荐

  1. Java实现一个简单的两人五子棋游戏(一) 系统设计

    实现一个基本的单机五子棋功能 该五子棋棋盘大小为19*19的网格,玩家可以通过鼠标点击棋盘来落子,当出现五连珠时,提示一方胜出~ 1)模块划分 主模块:调用其他模块实现五子棋功能 棋盘模块:绘制五子棋 ...

  2. Java实现一个简单的两人五子棋游戏(六) 行棋方变换

    1)选择棋子 ✔️ 2)画棋子 ✔️ 3)判断胜负 ✔️ 4)交换行棋方 目标 前面我们已经画好棋盘和棋子,并可以自由落子,且可以判断棋盘中是否有五连珠.接下来的工作是,每次落子后交换行棋方(即将下一 ...

  3. 如何用java编写一个简单的多人PK游戏

    如何用java编写一个简单的多人PK游戏 类与对象---PK游戏的编写 素材取用----王者荣耀和BILIBILI 创建两个对战的角色(PK游戏最少需要两名角色) 创建孙尚香和Van 设置孙尚香和Va ...

  4. java 缓存方法_Java实现一个简单的缓存方法

    Java实现一个简单的缓存方法 发布时间:2020-09-07 21:39:55 来源:脚本之家 阅读:99 作者:BrightLoong 缓存是在web开发中经常用到的,将程序经常使用到或调用到的对 ...

  5. java编写服务器_java编写一个简单的回射服务器

    全部代码 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; im ...

  6. java实现堆栈_Java实现一个简单的堆栈

    堆栈(Stack)是一种常见的数据结构,符合后进先出(First In Last Out)原则,通常用于实现对象存放顺序的逆序.栈的基本操作有push(添加到堆栈),pop(从堆栈删除),peek(检 ...

  7. java 坦克重叠_Java实现支持双黑两人激战的 坦克大战源码(经典游戏)

    写这个游戏已经有一段时间了,一直在实现各种新功能,从最开始的地图上只有坦克,发子弹还是一个大问题到现在可以两个人一起玩,还是花了不少心思的,现在坦克的速度更快,电脑坦克也不会撞墙.虽然游戏性没有经典坦 ...

  8. 将Java程序变成可执行文件的一个简单方法

    将Java程序变成可执行文件的一个简单方法 运行Java程序(SWING或SWT的桌面程序)可以直接执行.class文件或将所有的.class文件及相关的其他文件压缩成.jar文件,然后使用javaw ...

  9. java计算机毕业设计vue开发一个简单音乐播放器(附源码、数据库)

    java计算机毕业设计vue开发一个简单音乐播放器(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ec ...

最新文章

  1. redis del清除缓存java_redis zset集合操作缓存.java
  2. LeetCode: 58. Length of Last Word
  3. 大话中文文本分类之fastText
  4. Redis与Memcached汇总
  5. unity android ndk的作用,Unity中编写Android下使用的so插件
  6. nginx中配置react-router参数跳转
  7. MPS(主生产计划)
  8. ASP.NET2.0中的App_Data文件的作用
  9. 利于前台开发的两大工具flex和vue
  10. 让form登录界面居中_徒手撸-登录页面(1)
  11. unix操作系统的特点
  12. svnserver配置文件详解
  13. mac刷新dns、windows刷新dns、刷新dns缓存命令
  14. Windows + CUDA + Anaconda + TensorFlow + PyCharm
  15. 关于个人求职简历的一些见解
  16. vscode下golang build tags
  17. 2D激光雷达运动畸变矫正_base里程计
  18. Android吃鸡 3dtouch,吃鸡主播为何不用3Dtouch技术操作?主播:只有新手才会用
  19. char与varchar详解
  20. 2019世界乒乓球锦标赛女单刘诗雯夺冠

热门文章

  1. win10第一次安装数据库失败解决方案
  2. 程序设计大赛—Booklet Printing
  3. 精美flash课件制作全攻略
  4. Word的文件被锁定,无法编辑的解决办法
  5. mysql8从binlog恢复数据
  6. 五金冲压连续模(级进模)设计的九大细节
  7. 熊彼特的创新理论:非连续性模型
  8. 基于ROS与optitrack的四旋翼飞机开发流程
  9. QT之QCustomPlot绘图实现8通道串口虚拟示波器
  10. openGL之API学习(一四八)3D全息眼镜HoloLens