설명 없음

Zoadian 04ec9d440f steamlined docu 10 년 전
.gitignore 1cba6fefd4 Initial commit 10 년 전
LICENSE 1cba6fefd4 Initial commit 10 년 전
README.md 04ec9d440f steamlined docu 10 년 전
ccsim.pro f70f83bd0a variable documentation 10 년 전
ccsim.pro.user f70f83bd0a variable documentation 10 년 전
debugwidget.cpp d1119ad649 ui improvements 10 년 전
debugwidget.h d1119ad649 ui improvements 10 년 전
debugwidget.ui d1119ad649 ui improvements 10 년 전
main.cpp b69ce42a7b program code added 10 년 전
mainwindow.cpp d1119ad649 ui improvements 10 년 전
mainwindow.h d1119ad649 ui improvements 10 년 전
mainwindow.ui d1119ad649 ui improvements 10 년 전
playfield.cpp d1119ad649 ui improvements 10 년 전
playfield.h d1119ad649 ui improvements 10 년 전
simulator.h d1119ad649 ui improvements 10 년 전

README.md

Code Contest Simulator - ccsim

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
IS, IP
MOVE 20 0 1 Move the program one field
DIE 1 0 0 Destroy the program DI
TRANS a, b 14+1*numOfInst 1 0 Transfers bank a to bank b in the program in front IS, IB
RTRANS a, b 14+1*numOfInst 1 0 Transfers bank afrom program in front to bank b IS, IB
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 IB
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
IS, IP
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 DZ
MOD #a, b 2 0 0 #a = #a % b DZ
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)) IP
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 IB
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 UE

Failure codes

Code Description
DH Data Hunger: Bank 1 empty and executed
DZ Division by zero
IB Invalid bank number
IS Higher Instruction Set required
MO Mobility required
DI DIE executed
IP Invalid parameter
UE Unemployment: No more tasks left in a program

Variables

Variable / Constant Description
#1 .. #20 The twenty all-purpose standard integers. They cannot be accessed by remote programs
#Pub Public variable which is accessible from all programs on the field
#Team Public variable which is accessible from all own programs on the field
#Active Determines if a current program is active (positive values) or not (zero or negative)
%Active Determines if a remote program is active (positive values) or not (zero or negative)
$Banks The number of banks which the current program has
%Banks The number of banks which the remote program has
$InstrSet The instruction set which the current program has
%InstrSet The instruction set which the remote program has
$Mobile Tells if the current program is mobile
%Mobile Tells if the remote program is mobile
$Age The current program's age in cycles
%Age The remote program's age in cycles
$Own The number of friendly programs on the board
$Others The number of enemy programs on the board
$Fields The size of the board
$ElimTrigger The elimination trigger setting
$Generation The generation of the current program
$ID Identifier which is equal for each program of the same team
and initialized to random when the game is started
$InstrPos The number of the current instruction (in its bank)
$Time The game time in cycles
$Timeout The automatic simulation timeout in cycles
$Tasks The number of tasks in the current program, incl. sleeping or seized tasks