お世話になります。以下の事象を解決したく思いまして投稿させていただきます。
Javaのプログラムです。
STPanel.java
player.setxySizeShift(150,300,32,6);
bgd.maptipSet(1);
mSize = bgd.getMapSize();
System.out.println("STPanel.mSize[0] " + mSize[0] + " " + "mSize[1] " + mSize[1]);
enemy.enemySet("テスト",500,300,32,4);
public void run() {
time++;
if(time % 2 == 0){
System.out.println("run bgd.mapSize[0] " + mSize[0] + " " + "bgd.mapSize[1] " + mSize[1]);
player.playerMove();
System.out.println("run2 bgd.mapSize[0] " + mSize[0] + " " + "bgd.mapSize[1] " + mSize[1]);
int[] pxy = player.getxySizeShift();
System.out.println("run player.pxy[0] " + pxy[0] + " " + "pxy[1] " + pxy[1]);
enemy.enemyHitCheck();
int[] pxy2 = player.getxySizeShift();
System.out.println("run player.pxy2[0] " + pxy2[0] + " " + "pxy2[1] " + pxy2[1]);
}
}
この状態でmainメソッド(STFrame.java)を実行してコンソールに表示します。
すると、player.playerMove()のmSize = bgd.getMapSize();にてBackGroundクラスのmapSizeを取得したいのですが
mSize[0] 0 mSize[1] 0となってしまい取得できません。既に3200,608を渡しているはずなのに何故なのかわかりません。
また、enemy.enemyHitCheck()のint pxy[] = player.getxySizeShift()にてPlayerクラスのxを取得したいのですが
pxy[0] 0となってしまい取得できません。既に150を渡しているはずなのに何故なのかわかりません。
ここで渡したい数値が渡せないのでプログラムが進まずに困っています。
しかしrunメソッドの中でplayer.getxySizeShift()するとしっかり値が取得されているようです。
以上、わかりにくいと思いますが、ソースコードをご覧になられてコンソールに出力されれば解ると思います。
どなたかご教授お願いします。
<STFrame.java> import java.awt.BorderLayout; import javax.swing.JFrame; public class STFrame extends JFrame { private STPanel panel = null; public STFrame() { super(); super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); super.setLayout(new BorderLayout()); panel = new STPanel(); super.setContentPane(panel); super.setVisible(true); super.pack(); super.requestFocus(); panel.requestFocus(); } public static void main(String[] args){ STFrame stFlame = new STFrame(); } } ---------------------------- <STPanel.java> import java.awt.Dimension; import java.util.TimerTask; import javax.swing.JOptionPane; import javax.swing.JPanel; public class STPanel extends JPanel { private java.util.Timer timerThis = null; private int time = 0; public Player player = null; public Enemy enemy = null; public BackGround bgd = null; private int[] mSize = null; public STPanel() { super(); try{ init(); super.setPreferredSize(new Dimension(800, 608)); super.setLayout(null); player = new Player(); enemy = new Enemy(); bgd = new BackGround(); player.setxySizeShift(150,300,32,6); bgd.maptipSet(1); mSize = bgd.getMapSize(); System.out.println("STPanel.mSize[0] " + mSize[0] + " " + "mSize[1] " + mSize[1]); enemy.enemySet("テスト",500,300,32,4); timerThis = new java.util.Timer(); timerThis.scheduleAtFixedRate(new TimerActionListener(), 1000l, 8l); }catch(Exception ex){ ex.printStackTrace(); JOptionPane.showMessageDialog(this, "ERROR : " + ex.toString()); } } public void init() { mSize = new int[4]; } private class TimerActionListener extends TimerTask { @Override public void run(){ STPanel.this.run(); } } public void run() { time++; if(time % 2 == 0){ System.out.println("run bgd.mapSize[0] " + mSize[0] + " " + "bgd.mapSize[1] " + mSize[1]); //player.keyCheck(keyPressTbl); //bgd.mapMove(1); player.playerMove(); System.out.println("run2 bgd.mapSize[0] " + mSize[0] + " " + "bgd.mapSize[1] " + mSize[1]); int[] pxy = player.getxySizeShift(); System.out.println("run player.pxy[0] " + pxy[0] + " " + "pxy[1] " + pxy[1]); enemy.enemyHitCheck(); int[] pxy2 = player.getxySizeShift(); System.out.println("run player.pxy2[0] " + pxy2[0] + " " + "pxy2[1] " + pxy2[1]); } } } ---------------------------- <Player.java> public class Player { private double x = 0; private double y = 0; private int shift = 0; private int size = 0; private int[] mSize = null; public BackGround bgd = null; public Player() { init(); } public void init() { bgd = new BackGround(); mSize = new int[4]; } public int[] getxySizeShift() { int[] xyss = {(int)x,(int)y,size,shift}; return xyss; } public void setxySizeShift(double x,double y,int size,int shift) { this.x = x; this.y = y; this.size = size; this.shift = shift; } public void playerMove() { mSize = bgd.getMapSize(); //System.out.println("playerMove x " + x + " " + "y " + y + " mSize[0] " + mSize[0]); System.out.println("playerMove mSize[0] " + mSize[0] + " " + "mSize[1] " + mSize[1]); } } ---------------------------- <Enemy.java> import java.util.ArrayList; import java.util.List; public class Enemy { private String name = null; private int shift = 0; private double x = 0; private double y = 0; public BackGround bgd = null; public Player player = null; public BlockObject bObject = null; public int moveCount = 0; private int size = 0; public List <Enemy> enemies = null; public Enemy() { init(); } public void init() { enemies = new ArrayList<>(); player = new Player(); bgd = new BackGround(); bObject = new BlockObject(); } public int[] getxySizeShift() { int[] xyss = {(int)x,(int)y,size,shift}; return xyss; } public void enemySet(String name,double x,double y,int size,int shift) { Enemy eobj = new Enemy(); eobj.name = name; eobj.x = x; eobj.y = y; eobj.size = size; eobj.shift = shift; enemies.add(eobj); } public void enemyHitCheck() { int oSize = enemies.size(); if (oSize >= 1) { int pxy[] = player.getxySizeShift(); for (int i = 0; i <= oSize-1; i++) { int exy[] = enemies.get(i).getxySizeShift(); System.out.println("enemyHitCheck oSize " + oSize + " " + "pxy[0] " + pxy[0] + " " + "exy[0] " + exy[0]); } } } } ---------------------------- <BackGround.java> public class BackGround { private double x = 0; private double y = 0; private int[] mapSize = null; public BackGround() { init(); } public void init() { mapSize = new int[4]; for (int i = 0; i <= mapSize.length-1; i++) { mapSize[i] = 0; } } public int[] getxy() { int[] xy = {(int)this.x,(int)this.y}; return xy; } public int[] getMapSize() { int[] ms = mapSize; return ms; } public void setMapSize(int stageNum) { if (stageNum == 1) { this.mapSize[0] = 3200; this.mapSize[1] = 608; } } public void maptipSet(int stageNum) { setMapSize(stageNum); } }

回答1件
あなたの回答
tips
プレビュー