diff --git a/bytecode/src/main/java/com/iluwatar/bytecode/VirtualMachine.java b/bytecode/src/main/java/com/iluwatar/bytecode/VirtualMachine.java index 9144288ce65b..063a1efef7d9 100644 --- a/bytecode/src/main/java/com/iluwatar/bytecode/VirtualMachine.java +++ b/bytecode/src/main/java/com/iluwatar/bytecode/VirtualMachine.java @@ -67,59 +67,60 @@ public void execute(int[] bytecode) { for (var i = 0; i < bytecode.length; i++) { Instruction instruction = Instruction.getInstruction(bytecode[i]); switch (instruction) { - case LITERAL: + case LITERAL -> { // Read the next byte from the bytecode. int value = bytecode[++i]; // Push the next value to stack stack.push(value); - break; - case SET_AGILITY: + } + case SET_AGILITY -> { var amount = stack.pop(); var wizard = stack.pop(); setAgility(wizard, amount); - break; - case SET_WISDOM: + } + case SET_WISDOM -> { amount = stack.pop(); wizard = stack.pop(); setWisdom(wizard, amount); - break; - case SET_HEALTH: + } + case SET_HEALTH -> { amount = stack.pop(); wizard = stack.pop(); setHealth(wizard, amount); - break; - case GET_HEALTH: + } + case GET_HEALTH -> { wizard = stack.pop(); stack.push(getHealth(wizard)); - break; - case GET_AGILITY: + } + case GET_AGILITY -> { wizard = stack.pop(); stack.push(getAgility(wizard)); - break; - case GET_WISDOM: + } + case GET_WISDOM -> { wizard = stack.pop(); stack.push(getWisdom(wizard)); - break; - case ADD: + } + case ADD -> { var a = stack.pop(); var b = stack.pop(); stack.push(a + b); - break; - case DIVIDE: + } + case DIVIDE -> { a = stack.pop(); b = stack.pop(); stack.push(b / a); - break; - case PLAY_SOUND: + } + case PLAY_SOUND -> { wizard = stack.pop(); getWizards()[wizard].playSound(); - break; - case SPAWN_PARTICLES: + } + case SPAWN_PARTICLES -> { wizard = stack.pop(); getWizards()[wizard].spawnParticles(); - break; - default: + } + default -> { throw new IllegalArgumentException("Invalid instruction value"); + } } LOGGER.info("Executed " + instruction.name() + ", Stack contains " + getStack()); }