Skip to content
Snippets Groups Projects
Commit 04e7658f authored by Lucas Stratmann's avatar Lucas Stratmann
Browse files

Added If/Else

parent af10db76
Branches
No related tags found
No related merge requests found
No preview for this file type
No preview for this file type
/**
*
*/
package tec.letsgoing.ardublock.simulator.simcode.control;
import java.util.Vector;
import tec.letsgoing.ardublock.simulator.arduino.Arduino;
import tec.letsgoing.ardublock.simulator.simcode.SimCode;
import tec.letsgoing.ardublock.simulator.simcode.SimCodeFunction;
/**
* @author Lucas
*
*/
public class CodeElse extends SimCode {
private SimCode ifBlock;
private Vector<SimCode> codeBlocks;
public CodeElse(SimCode _ifBlock, Vector<SimCode> _vec) {
ifBlock = _ifBlock;
codeBlocks = _vec;
}
@Override
public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
boolean cond = true;
if (ifBlock instanceof CodeIf) {
cond = ((CodeIf) ifBlock).run(_arduino, functionHead).getValue();
}
if (ifBlock instanceof CodeElseIf) {
cond = ((CodeElseIf) ifBlock).run(_arduino, functionHead).getValue();
}
if (!cond) {
for (SimCode block : codeBlocks) {
block.run(_arduino, functionHead);
}
}
return null;
}
@Override
public String toString() {
return null;
}
}
/**
*
*/
package tec.letsgoing.ardublock.simulator.simcode.control;
import java.util.Vector;
import tec.letsgoing.ardublock.simulator.arduino.Arduino;
import tec.letsgoing.ardublock.simulator.simcode.SimCode;
import tec.letsgoing.ardublock.simulator.simcode.SimCodeFunction;
import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeBool;
/**
* @author Lucas
*
*/
public class CodeElseIf extends SimCode {
private CodeIf ifBlock;
private SimTypeBool condition;
private Vector<SimCode> codeBlocks;
public CodeElseIf(CodeIf _ifBlock, SimTypeBool _condition, Vector<SimCode> _vec) {
ifBlock = _ifBlock;
condition = _condition;
codeBlocks = _vec;
}
@Override
public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
if (!ifBlock.run(_arduino, functionHead).getValue()) {
if (condition.run(_arduino, functionHead).getValue()) {
// No If before and Condition met.
for (SimCode block : codeBlocks) {
block.run(_arduino, functionHead);
}
return new SimTypeBool(true);
} else {
// Condition not met and different else can execute
return new SimTypeBool(false);
}
} else {
// If already executet
return new SimTypeBool(true);
}
}
@Override
public String toString() {
return null;
}
}
/**
*
*/
package tec.letsgoing.ardublock.simulator.simcode.control;
import java.util.Vector;
import tec.letsgoing.ardublock.simulator.arduino.Arduino;
import tec.letsgoing.ardublock.simulator.simcode.SimCode;
import tec.letsgoing.ardublock.simulator.simcode.SimCodeFunction;
import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeBool;
/**
* @author Lucas
*
*/
public class CodeIf extends SimCode {
private SimTypeBool condition;
private Vector<SimCode> codeBlocks;
public CodeIf(SimTypeBool _condition, Vector<SimCode> _vec) {
condition = _condition;
codeBlocks = _vec;
}
/**
* Returns True if the Condition is met or false if it isnt
*/
public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
if (condition.run(_arduino, functionHead).getValue()) {
for (SimCode block : codeBlocks) {
block.run(_arduino, functionHead);
}
return new SimTypeBool(true);
} else {
return new SimTypeBool(false);
}
}
public String toString() {
return null;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment