Так как вы забыли скобки, ваш код ...
if (extraBullets <= 12)
bulletsLeft += extraBullets;
extraBullets -= extraBullets;
... эквивалентен
if (extraBullets <= 12) {
bulletsLeft += extraBullets;
}
extraBullets -= extraBullets; // No more bullets after this!
Следующее утверждение ...
if (extraBullets >= 12)
... никогда не будет выполнено.
Я предлагаю упростить логику и сначала определить, сколько пуль нужно перенести из колоды запаса.Затем выполните передачу.
if (bulletsLeft <= 1) {
int transferBullets = extraBullets < 12 ? extraBullets : 12;
bulletsLeft += transferBullets;
extraBullets -= transferBullets;
}
Назначение с троичным выражением ...
int transferBullets = extraBullets < 12 ? extraBullets : 12;
... эквивалентно
int transferBullets;
if (extraBullets < 12) {
transferBullets = extraBullets;
} else {
transferBullets = 12;
}
Согласно @Кайл и @UnholySheep, вы также можете написать это вместо:
int transferBullets = Math.Min(12, extraBullets);