Я думаю, что некоторый ваш код слишком многословен и пушист, чтобы вы могли увидеть, что на самом деле происходит.Возьмем небольшой раздел:
if (foundGold1 == true)
{
if (field.alreadyFound1() == true)
{
}
else
{
robot2.addGold();
field.foundGold1();
}
}
Это можно записать так:
if (foundGold1) {
if (! field.alreadyFound1()) {
robot2.addGold();
field.foundGold1();
}
}
В зависимости от того, как этот код будет «расти» с течением времени, вы можете немного его упростить.далее:
if (foundGold1 && ! field.alreadyFound1()) {
robot2.addGold();
field.foundGold1();
}
Обратите внимание на предупреждение Мэтью Кокса: молодые программисты часто оказываются втянутыми в попытки минимизировать свой код настолько, насколько возможно (смотри, я сделал это в 2 строки кода вместо3!) - Я не спорю о переформатированном макете, потому что он меньше, а потому, что Я считаю, что это легче читать .В зависимости от сложности будущего кода, я мог бы дать совершенно противоположный совет разбить условия.Главный приоритет - написание разборчивого кода.(Компилятор может выяснить практически все, что вы ему набрасываете - вы должны быть в состоянии понять это тоже.)
Его дальнейший совет использовать массивы для foundBomb[]
, foundGold[]
, robot[]
и т. Д. Превосходны - лучше всего их использовать с использованием функции аргументы вместо написания нескольких функций.
вместо field.alreadyFound1()
, field.alreadyFound2()
и т. Д.,попробуйте: field.alreadyFound(int something)
- когда вы позвоните им, это будет field.alreadyFound(2)
.Это позволяет сократить количество функций на три (что означает, что вам не нужно исправлять ошибки по три раза в каждой функции) и упрощает расширение программы до пяти или шести полей, груд золота, бомб, роботов и т. Д.Тогда это просто параметр функции.