Java 鼠标运动监听器
我是Java编程的初学者。我正在尝试创建一个棋子游戏,玩家可以移动自己的棋子。问题是,当一件物品被移动时,所有人都会移动它。我真的很感谢你的帮助。谢谢 主类Java 鼠标运动监听器,java,arrays,awt,Java,Arrays,Awt,我是Java编程的初学者。我正在尝试创建一个棋子游戏,玩家可以移动自己的棋子。问题是,当一件物品被移动时,所有人都会移动它。我真的很感谢你的帮助。谢谢 主类 package Checkers_Own; import resources.DrawingBoard; import resources.Timer; public class Game { public static void main(String[] args) { Board[][] boards
package Checkers_Own;
import resources.DrawingBoard;
import resources.Timer;
public class Game {
public static void main(String[] args) {
Board[][] boards = new Board[8][8];
DrawingBoard board = new DrawingBoard(840, 640);
Timer timer = new Timer();
for(int i = 0; i < 8; i++){
for(int j = 0; j < 8; j++){
if(i % 2 == 1){
if(j % 2 == 1)boards[i][j] = new Board(true, i, j);
else boards[i][j] = new Board(false, i, j);
}
else if(i % 2 == 0){
if(j % 2 == 1)boards[i][j] = new Board(false, i, j);
else boards[i][j] = new Board(true, i, j);
}
}
}
for(int i = 5; i < 8; i++) for(int j = 0; j < 8; j++) if(!boards[j][i].isWhite) PiecesManager.add1(new Pieces(true, j, i));
for(int i = 0; i < 8; i++) for(int j = 0; j < 3; j++) if(!boards[i][j].isWhite) PiecesManager.add2(new Pieces(false, i, j));
PiecesManager.properties(board);
while(true){
board.clear();
for(int i = 0; i < 8; i++) for(int j = 0; j < 8; j++) boards[i][j].draw(board);
PiecesManager.draw(board);
PiecesManager.move();
board.repaint();
timer.pause(30);
}
}
}
董事会
计件管理器
package Checkers_Own;
import resources.DrawingBoard;
public class PiecesManager {
private static int size1, size2;
private static Pieces[] p1 = new Pieces[12];
private static Pieces[] p2 = new Pieces[12];
public static void draw(DrawingBoard board){
for(int i = 0; i < size1; i++) p1[i].draw(board);
for(int i = 0; i < size2; i++) p2[i].draw(board);
}
public static void move(){
for(int i = 0; i < p1.length; i++) if(p1[i].moved() == p1[i]) p1[i].move();
for(int i = 0; i < p2.length; i++) if(p2[i].moved() == p2[i]) p2[i].move();
}
public static void add1(Pieces piece){
p1[size1] = piece;
size1 ++;
}
public static void add2(Pieces piece){
p2[size2] = piece;
size2 ++;
}
public static void properties(DrawingBoard board){
for(int i = 0; i < p1.length; i++){
board.addMouseListener(p1[i]);
board.addMouseMotionListener(p1[i]);
}
for(int i = 0; i < p2.length; i++){
board.addMouseListener(p2[i]);
board.addMouseMotionListener(p2[i]);
}
}
}
package Checkers\u-Own;
进口资源.绘图板;
公共类分段管理器{
私有静态int size1,size2;
私有静态件[]p1=新件[12];
私有静态件[]p2=新件[12];
公共静态空隙绘制(绘图板){
对于(int i=0;i
您有一个复制粘贴错误。您的PieceManager类与game类相同,因此抱歉将修复while(true)
循环在此事件驱动GUI中没有位置。看起来您正试图将horn线性控制台代码嵌入到事件驱动GUI中,而这绝对是您不想做的事情。我不知道您的意思,我首先要看一下和。Swing使用一种被动渲染算法,对于您正在做的事情来说,这已经足够了。不要使用getGraphics
,在这种情况下,这确实不是应该做的事情
package Checkers_Own;
import java.awt.Color;
import java.awt.Graphics2D;
import resources.DrawingBoard;
public class Board {
boolean isWhite;
private int x, y;
public Board(boolean isWhite, int x, int y){
this.isWhite = isWhite;
this.x = x * 80;
this.y = y * 80;
}
public void draw(DrawingBoard board){
Graphics2D g = board.getCanvas();
if(isWhite){
g.setColor(Color.white);
g.fillRect(x, y, 80, 80);
}
else{
g.setColor(Color.black);
g.fillRect(x, y, 80, 80);
}
}
}
package Checkers_Own;
import resources.DrawingBoard;
public class PiecesManager {
private static int size1, size2;
private static Pieces[] p1 = new Pieces[12];
private static Pieces[] p2 = new Pieces[12];
public static void draw(DrawingBoard board){
for(int i = 0; i < size1; i++) p1[i].draw(board);
for(int i = 0; i < size2; i++) p2[i].draw(board);
}
public static void move(){
for(int i = 0; i < p1.length; i++) if(p1[i].moved() == p1[i]) p1[i].move();
for(int i = 0; i < p2.length; i++) if(p2[i].moved() == p2[i]) p2[i].move();
}
public static void add1(Pieces piece){
p1[size1] = piece;
size1 ++;
}
public static void add2(Pieces piece){
p2[size2] = piece;
size2 ++;
}
public static void properties(DrawingBoard board){
for(int i = 0; i < p1.length; i++){
board.addMouseListener(p1[i]);
board.addMouseMotionListener(p1[i]);
}
for(int i = 0; i < p2.length; i++){
board.addMouseListener(p2[i]);
board.addMouseMotionListener(p2[i]);
}
}
}