Я пишу небольшой проект на Java, который похож на игру 2048 года, которая в значительной степени основана только на манипуляции с массивами. Я написал решение проблемы, которая у меня была, и она отлично работает, однако код невероятно запутан. Если кто-нибудь может помочь с его очисткой, возможно, используя другую технику или что-то в этом роде, это всего лишь несколько утверждений.Java - Очистка много операторов if
// This bit gets rid of the empty tiles between numbers.
// Eg {2,2,0,4} becomes {2,2,4,0}.
for(int i =1; i<row.length; i++) {
if(row[i-1] == 0)
{
row[i-1] = row[i];
row[i] = 0;
}
}
for(int j=row.length-1; j>=1; j--) {
if(row[j-1] == 0) {
row[j-1] = row[j];
row[j] = 0;
}
}
int nonEmpty = 0; // Count the number of non empty tiles
for(int i=0; i<row.length; i++) {
if(row[i] != 0)
nonEmpty++;
}
if(nonEmpty == 2) {
if(row[1] == row[0]) {
row[0] *= 2;
row[1] = 0;
}
}
else if(nonEmpty == 3) {
if(row[1] == row[0]) {
row[0] *= 2;
row[1] = row[2];
row[2] = 0;
}
else if(row[2] == row[1]) {
row[1] *= 2;
row[2] = 0;
}
}
else if(nonEmpty==4) {
if(row[1] == row[0]) {
row[0] *= 2;
row[1] = 0;
if(row[2] == row[3]) {
row[2] *= 2;
row[3] = 0;
}
}
else if(row[2] == row[1]) {
row[1] *= 2;
row[2] = row[3];
row[3] = 0;
}
else if(row[3] == row[2]) {
row[2] *= 2;
row[3] = 0;
}
}
// Get rid of 0s between numbers again.
for(int i =1; i<row.length; i++) {
if(row[i-1] == 0)
{
row[i-1] = row[i];
row[i] = 0;
}
}
for(int j=row.length-1; j>=1; j--) {
if(row[j-1] == 0) {
row[j-1] = row[j];
row[j] = 0;
}
}
Каждое утверждение if/else if имеет решающее значение, поскольку оно заботится обо всех ситуациях. Я не прошу кого-нибудь пройти и очистить все, но если бы у меня были просто какие-то указатели или примеры, которые были бы замечательными.
Спасибо, ребята
Выглядит хорошо для меня. Неважно, сколько у вас/else/условных операторов. – Li357
да, выглядит довольно круто для меня тоже – Leo
Вы можете использовать 'swtich()' вместо всех операторов if-else if – Aradhna