【发布时间】:2016-01-06 15:28:28
【问题描述】:
我是处理/Java 的新手,我尝试制作一个小游戏...... 我已经创建了一个类来制作地图或布局之类的东西,我称之为地图类,它工作得很好,我可以使用数组/图像或仅使用对象来创建“地图”。 所以现在我想在我的游戏中添加一些单位。它们不应该如此困难或复杂。我只是想移动它们,这是我的单位类:
class Unit
{
int X;
int Y;
int Breite;
int Laenge;
boolean ausgewaelht = false;
Unit()
{
}
Unit(int x, int y, int breite, int laenge)
{
}
/---------------------------------------------- ---------------------
void create(UnitContent function)
{
function.form();
}
void move(float geschwindigkeit)
{
if(isTriggerd(X,Y,Breite,Laenge) == true){
X = X+(int)geschwindigkeit;
if(X > width)
{
X = 0;
}
}
}
void setXandY(int x , int y)
{
X = x;
Y = y;
}
void setBreiteandLaenge(int breite, int laenge)
{
Breite = breite;
Laenge = laenge;
}
/---------------------------------------------- ----------------------
int getX()
{
return X;
}
int getY()
{
return Y;
}
int getBreite()
{
return Breite;
}
int getLaenge()
{
return Laenge;
}
/---------------------------------------------- ----------------------
boolean isTriggerd(int x, int y, int breite, int laenge)
{
if(mouseX > x && mouseX < x+breite && mouseY > y && mouseY < y+laenge )
{
return true;
}
else
{
return false;
}
}
}
如果我只使用 1 个单元,它工作得很好 ^ 我可以在课堂外亲自选择我的单元在屏幕上绘制的形式...但是我如何绘制其中的 10 个?
这是我的界面 UnitContent:
interface UnitContent
{
void form();
}
这是我的 MainClass
Map testKarte;
Unit[] TestEinheit = new Unit[100];
int[][] array = {{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0}};
int a = 0;
void setup()
{
size(500,500);
testKarte = new Map(1,1,"",50,50);
for(int i = 0; i < TestEinheit.length; i++)
{
TestEinheit[i] = new Unit();
TestEinheit[i].setXandY(0,0);
TestEinheit[i].setBreiteandLaenge(50,50);
}
}
void draw()
{
background(#FFFFFF);
testKarte.setCisClickable(true);
testKarte.setIsRectOrPicture(true);
testKarte.ubdate(new MapContent(){
public void setMapContent(int a, int b, int c, int d){
// rect(a,b,c,d);
for( int i = 0; i < TestEinheit.length; i++)
{
TestEinheit[i].create(new UnitContent()
{
public void form()
{
rect(TestEinheit[i].getX(),TestEinheit[i].getY(),TestEinheit[i].getBreite(),TestEinheit[i].getLaenge());
}
});
}
}
public void setMapContentMouseOver(){
}
public void elseMapContentMouseOver()
{
// wenn die Maus nicht über dem Object ist
// ebenfalls nicht unbedingt
}});
}
void mousePressed()
{
}
当我尝试以下操作时:
for( int i = 0; i < TestEinheit.length; i++)
{
TestEinheit[i].create(new UnitContent()
{
public void form()
{
rect(TestEinheit[i].getX(),TestEinheit[i].getY(),TestEinheit[i].getBreite(),TestEinheit[i].getLaenge());
}
});
它给了我以下错误:无法引用我在封闭范围内定义的非最终局部变量 顺便说一句,public void 形式只是一个接口方法:)
有人知道如何处理这个问题吗?
【问题讨论】:
-
错误信息相当明确和具体。你有什么问题?局部类不能引用非
final局部变量。因此,您将无法在UnitContent中使用i。 -
是的,那是真的....但是我正在寻找一种方法来处理它...如果没有那个错误,我怎么能做到这一点?
标签: java class unit-testing for-loop processing