Kod związany z klasą Tower
w głównym pliku stanowił tylko kilka wierszy, reszta kodu jest związana z generowaniem mapy.
Dlaczego lepiej używać
private int X;
@Override
public int getX() {
return X;
}
niż public int X
?
Kod funkcji generującej:
int MapX = 10;
int MapY = 5;
int[][] MapW = new int [MapX][MapY];
int[][] MapR = new int [MapX][MapY];
Random Ran = new Random();
public void Generating() {
int Y = Ran.nextInt(MapY);
int X = 0;
int KS = 0;
int KT = 0;
boolean BT = false;
for (short TB_01 = 0; TB_01 < MapX; ++TB_01) {
for (short TB_02 = 0; TB_02 < MapY; ++TB_02) MapW[TB_01][TB_02] = 0;
}
while (true){
MapW[X][Y] = 1;
if (KT == 0) MapR[X][Y] = 1;
else MapR[X][Y] = 0;
if (KS != KT){
int XT = X;
int YT = Y;
if (KT == 0) --XT;
else if (KT == 1) --YT;
else if (KT == 2) ++YT;
if (XT >= 0 && XT < MapX && YT >= 0 && YT < MapY) {
MapW[XT][YT] = 2;
if (KS == 0 && KT == 1) MapR[XT][YT] = 0;
else if (KS == 0 && KT == 2) MapR[XT][YT] = 1;
else if (KS == 1 && KT == 0) MapR[XT][YT] = 2;
else if (KS == 2 && KT == 0) MapR[XT][YT] = 3;
}
}
KS = KT;
KT = Ran.nextInt(3);
while (Check_01 (MapX, MapY, X, Y, KT, MapW, MapR)){
if (KT == 0){
BT = true;
break;
}else if (KT == 1){
KT = Ran.nextInt(2);
if (KT == 1) ++KT;
if (KT == KS) KT = 0;
}else if (KT == 2){
KT = Ran.nextInt(2);
if (KT == KS) KT = 0;
}
}
if (BT) {
if (KS != KT){
MapW[X][Y] = 2;
if (KS == 0 && KT == 1) MapR[X][Y] = 0;
else if (KS == 0 && KT == 2) MapR[X][Y] = 1;
else if (KS == 1 && KT == 0) MapR[X][Y] = 2;
else if (KS == 2 && KT == 0) MapR[X][Y] = 3;
}
break;
}
if (KT == 0) ++X;
else if (KT == 1) ++Y;
else if (KT == 2) --Y;
}
int T = Ran.nextInt(10);
for (int TB_01 = 0; TB_01 < T; ++TB_01){
int XR = Ran.nextInt(MapX);
int YR = Ran.nextInt(MapY);
if (MapW[XR][YR] == 0) {
MapW[XR][YR] = Java_B_N;
}
}
SetDraw();
}
public boolean Check_01(int MapX, int MapY, int X, int Y, int KT, int[][] MapW, int[][] MapR){
int XT = X;
int YT = Y;
if (KT == 0 && X + 1 >= MapX) return true;
if (KT == 1 && Y + 1 >= MapY) return true;
if (KT == 2 && Y <= 0) return true;
if (KT == 0) ++XT;
else if (KT == 1) ++YT;
else if (KT == 2) --YT;
if (XT >= 0 && XT < MapX && YT >= 0 && YT < MapY){
if (MapW[XT][YT] != 0) return true;
}
return false;
}