java五子棋盘_Java实现一个简单的两人五子棋游戏(二) 画棋盘
棋盘模块:
画五子棋棋盘: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实现一个简单的两人五子棋游戏(二) 画棋盘相关推荐
- Java实现一个简单的两人五子棋游戏(一) 系统设计
实现一个基本的单机五子棋功能 该五子棋棋盘大小为19*19的网格,玩家可以通过鼠标点击棋盘来落子,当出现五连珠时,提示一方胜出~ 1)模块划分 主模块:调用其他模块实现五子棋功能 棋盘模块:绘制五子棋 ...
- Java实现一个简单的两人五子棋游戏(六) 行棋方变换
1)选择棋子 ✔️ 2)画棋子 ✔️ 3)判断胜负 ✔️ 4)交换行棋方 目标 前面我们已经画好棋盘和棋子,并可以自由落子,且可以判断棋盘中是否有五连珠.接下来的工作是,每次落子后交换行棋方(即将下一 ...
- 如何用java编写一个简单的多人PK游戏
如何用java编写一个简单的多人PK游戏 类与对象---PK游戏的编写 素材取用----王者荣耀和BILIBILI 创建两个对战的角色(PK游戏最少需要两名角色) 创建孙尚香和Van 设置孙尚香和Va ...
- java 缓存方法_Java实现一个简单的缓存方法
Java实现一个简单的缓存方法 发布时间:2020-09-07 21:39:55 来源:脚本之家 阅读:99 作者:BrightLoong 缓存是在web开发中经常用到的,将程序经常使用到或调用到的对 ...
- java编写服务器_java编写一个简单的回射服务器
全部代码 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; im ...
- java实现堆栈_Java实现一个简单的堆栈
堆栈(Stack)是一种常见的数据结构,符合后进先出(First In Last Out)原则,通常用于实现对象存放顺序的逆序.栈的基本操作有push(添加到堆栈),pop(从堆栈删除),peek(检 ...
- java 坦克重叠_Java实现支持双黑两人激战的 坦克大战源码(经典游戏)
写这个游戏已经有一段时间了,一直在实现各种新功能,从最开始的地图上只有坦克,发子弹还是一个大问题到现在可以两个人一起玩,还是花了不少心思的,现在坦克的速度更快,电脑坦克也不会撞墙.虽然游戏性没有经典坦 ...
- 将Java程序变成可执行文件的一个简单方法
将Java程序变成可执行文件的一个简单方法 运行Java程序(SWING或SWT的桌面程序)可以直接执行.class文件或将所有的.class文件及相关的其他文件压缩成.jar文件,然后使用javaw ...
- java计算机毕业设计vue开发一个简单音乐播放器(附源码、数据库)
java计算机毕业设计vue开发一个简单音乐播放器(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ec ...
最新文章
- redis del清除缓存java_redis zset集合操作缓存.java
- LeetCode: 58. Length of Last Word
- 大话中文文本分类之fastText
- Redis与Memcached汇总
- unity android ndk的作用,Unity中编写Android下使用的so插件
- nginx中配置react-router参数跳转
- MPS(主生产计划)
- ASP.NET2.0中的App_Data文件的作用
- 利于前台开发的两大工具flex和vue
- 让form登录界面居中_徒手撸-登录页面(1)
- unix操作系统的特点
- svnserver配置文件详解
- mac刷新dns、windows刷新dns、刷新dns缓存命令
- Windows + CUDA + Anaconda + TensorFlow + PyCharm
- 关于个人求职简历的一些见解
- vscode下golang build tags
- 2D激光雷达运动畸变矫正_base里程计
- Android吃鸡 3dtouch,吃鸡主播为何不用3Dtouch技术操作?主播:只有新手才会用
- char与varchar详解
- 2019世界乒乓球锦标赛女单刘诗雯夺冠