Nessuna descrizione

Zoadian d1119ad649 ui improvements 10 anni fa
.gitignore 1cba6fefd4 Initial commit 10 anni fa
LICENSE 1cba6fefd4 Initial commit 10 anni fa
README.md dc9244a6df more duc 10 anni fa
csim.pro d1119ad649 ui improvements 10 anni fa
csim.pro.user d1119ad649 ui improvements 10 anni fa
debugwidget.cpp d1119ad649 ui improvements 10 anni fa
debugwidget.h d1119ad649 ui improvements 10 anni fa
debugwidget.ui d1119ad649 ui improvements 10 anni fa
main.cpp b69ce42a7b program code added 10 anni fa
mainwindow.cpp d1119ad649 ui improvements 10 anni fa
mainwindow.h d1119ad649 ui improvements 10 anni fa
mainwindow.ui d1119ad649 ui improvements 10 anni fa
playfield.cpp d1119ad649 ui improvements 10 anni fa
playfield.h d1119ad649 ui improvements 10 anni fa
simulator.h d1119ad649 ui improvements 10 anni fa

README.md

csim

A programming game based on RoboCom.

Instructions

Command Cycles InstSet Mobile Description Failures
CREATE a, b 100+50*a+25*b+120*c 2 0 Create a new pogram with:
instSet a; b banks; c mobile
MOVE 20 0 1 Move the program one field
DIE 1 0 0 Destroy the program
TRANS a, b 14+1*numOfInst 1 0 Transfers bank a to bank b in the program in front
RTRANS a, b 14+1*numOfInst 1 0 Transfers bank afrom program in front to bank b
TURN a 8 0 0 Turn by 90°;
Turn right if a >= 0 else left
JUMP a 1 0 0 Realtive jump for a instructions
AJUMP a 1 0 0 Jump to instruction a in current bank
BJUMP a, b 2 0 0 Jump to instruction b in bank a
SCAN #a 8 1 0 Scan 1 field in front.
Set a to:
0 if empty;
1 if enemy;
2 if friend
FARSCAN #a, #b, c 10+3*c 1 0 Scan n fields in front.
Set a to:
0 if empty;
1 if enemy;
2 if friend;
Set b to distance
SET #a, b 2 0 0 #a = b
ADD #a, b 2 0 0 #a = #a + b
SUB #a, b 2 0 0 #a = #a - b
MUL #a, b 2 0 0 #a = #a * b
DIV #a, b 2 0 0 #a = #a / b
MOD #a, b 2 0 0 #a = #a % b
MIN #a, b 2 0 0 #a = min(#a, b)
MAX #a, b 2 0 0 #a = max(#a, b)
RANDOM #a, b, c 1 0 0 #a = b + (rand() % (c - b + 1))
IF a, b 2 0 0 Execute next instruction if a == b else skip it
IFN a, b 2 0 0 Execute next instruction if a != b else skip it
IFG a, b 2 0 0 Execute next instruction if a > b else skip it
IFL a, b 2 0 0 Execute next instruction if a < b else skip it
IFGE a, b 2 0 0 Execute next instruction if a >= b else skip it
IFLE a, b 2 0 0 Execute next instruction if a <= b else skip it
INIT a, b 2 0 0 Start a new task at bank a instruction b
BREAK 1 0 0 Stops other tasks, gives current task 100%
RESUME 1 0 0 Resume all other tasks suspended by SEIZE
SEIZE 1 0 0 Stops other tasks, gives current task 100% until RESUME
SLEEP a 1 0 0 Suspend current task a cycles
QUIT 1 0 0 Stops current task

Failure codes

Code Description
ET Elimination Trigger released
DH Data Hunger (Bank 1 empty and executed)
DZ Division by zero
IB Invalid bank number (e.g. in TRANS or BJUMP)
IS Higher Instruction Set required
MO Mobility required
DI DIE executed
IP Invalid parameter (e.g. CREATE x, -1, x)
UE No more tasks left in a robot (Unemployment)
ID Instruction duration too high (i.e. > MaxInstrDur)