Competition Code
Programmed in IC, a variant of C.
int DRIVE1 = 0;
int DRIVE2 = 1;
int DRIVE3 = 2;
int DRIVE4 = 3;
int ARM1 = 4;
int ARM2 = 5;
int COUNTER = 0;
int DUPCOUNT = 0;
int rkval=0;
int x=0;
float DELAY = 0.0;
char final='s';
void main(){
if (dip_switches()<=7){
set_ir_transmit_frequency(100); set_ir_receive_frequency(125);
}
if (dip_switches()>7){
set_ir_transmit_frequency(125); set_ir_receive_frequency(100);
}
ir_transmit_on();
while (choose_button()==0){
rkval=robo_knob();
DELAY=(float)rkval;
DELAY=DELAY/10.0;
printf("%d\n", rkval);
sleep(0.5);
}
if (dip_switches()==0){
strat0();
}
if (dip_switches()==8){
strat8();
}
if (dip_switches()==1){
strat1();
}
if (dip_switches()==9){
strat9();
}
if (dip_switches()==2){
strat2();
}
if (dip_switches()==10){
strat10();
}
}
void strat0(){
printf("WStand");
sleep(1.0);
final = 's';
quickwin();
}
void strat8(){
printf("BStand");
sleep(1.0);
final='s';
quickwin();
}
void strat1(){
printf("WMayhem");
sleep(1.0);
final='m';
quickwin();
}
void strat9(){
printf("BMayhem");
sleep(1.0);
final='m';
quickwin();
}
void strat2(){
printf("W-WAW");
if (DELAY<=1.25){
printf("INVALID DELAY");
sleep(30.0);
}
sleep(1.0);
final='w';
quickwin();
}
void strat10(){
printf("B-WAW");
if (DELAY<=1.25){
printf("INVALID DELAY");
sleep(30.0);
}
sleep(1.0);
final='w';
quickwin();
}
void quickwin(){
while (analog(20)>6){
printf("%d\n", analog(20));
sleep(0.2);
}
beep();
if (final!= 'w'){
sleep(DELAY);
}
forward_all();
while ((digital(0)==1)||(COUNTER<50)){
forward_all();
COUNTER = COUNTER + 1;
}
brake(DRIVE1);
brake(DRIVE3);
forward(ARM1);
forward(ARM2);
sleep(0.05);
brake(DRIVE4);
brake(DRIVE2);
sleep(0.05);
brake(ARM1);
brake(ARM2);
sleep(1.2);
forward(ARM1);
forward(ARM2);
sleep(0.1);
DUPCOUNT = COUNTER;
if (final=='w'){
while (DUPCOUNT > 0){
brake_all();
DUPCOUNT = DUPCOUNT - 2;
}
sleep(0.25);
brake(ARM1);
brake(ARM2);
sleep(DELAY-1.25);
}
while (COUNTER > 0){
reverse_all();
COUNTER = COUNTER - 2;
}
sleep(0.25);
brake(ARM1);
brake(ARM2);
if ((final=='s')||(final=='w')){
standard_final();
}
if (final=='m'){
mayhem_final();
}
}
void standard_final(){
stagger('b');
stagger('f');
sleep(0.4);
stagger('b');
sleep(1.0);
stagger('r');
sleep(0.5);
stagger('b');
stagger('f');
sleep(0.2);
stagger('b');
sleep(1.0);
stagger('r');
sleep(0.5);
stagger('b');
stagger('f');
sleep(0.2);
stagger('b');
stagger('r');
sleep(0.5);
stagger('b');
}
void mayhem_final(){
while (x<10){
while (digital(0)==1){
forward_all();
}
x++;
stagger('b');
stagger('r');
sleep(1.0);
stagger('b');
}
}
void forward_all(){
forward(DRIVE1);
forward(DRIVE2);
forward(DRIVE3);
forward(DRIVE4);
}
void reverse_all(){
reverse(DRIVE1);
reverse(DRIVE2);
reverse(DRIVE3);
reverse(DRIVE4);
}
void brake_all(){
brake(DRIVE1);
brake(DRIVE2);
brake(DRIVE3);
brake(DRIVE4);
}
void stagger(char direction){
if (direction=='b'){
brake(DRIVE1);
brake(DRIVE3);
sleep(0.05);
brake(DRIVE2);
brake(DRIVE4);
}
if (direction=='f'){
forward(DRIVE1);
forward(DRIVE3);
sleep(0.05);
forward(DRIVE2);
forward(DRIVE4);
}
if (direction=='r'){
reverse(DRIVE1);
reverse(DRIVE3);
sleep(0.05);
reverse(DRIVE2);
reverse(DRIVE4);
}
}
|