Code Wars |
Main Home About Me Guest-Globe Links Site Stats Photos Kit Car Index Geek Stuff Hardware Software 3D Scanning Code Wars Java Visuals R2 Vis R4 Vis Tutorials Feedback Forum Contact Me |
// Setup Robot colours // R,G,B format, as bytes packed into an integer DEFINE RCOLORB,255 DEFINE RCOLORF,65535 // Setup Robot Image - binary data DEFINE RIMG0,255 DEFINE RIMG1,129 DEFINE RIMG2,153 DEFINE RIMG3,255 DEFINE RIMG4,255 DEFINE RIMG5,153 DEFINE RIMG6,129 DEFINE RIMG7,255 // Setup what we have on each side... DEFINE RSIDE1,SDEYE // Front DEFINE RSIDE2,SDEYE // Right DEFINE RSIDE3,SDGUN // Back DEFINE RSIDE4,SDSHIELD // Left DEFINE OBJDIST,64 // Data register which contains the distance to the object // ------------------------------- Main Code Start : MOV_RL PCOMMAND,CMUSE2 // Look out of the right-hand side // See what we are looking at... SNE_RL PPARAM2,LROBOT GOTO_L RobotAttack // If a robot, attack it SNE_RL PPARAM2,LAMMO // If health or ammo, go and get it GOTO_L GetItem SNE_RL PPARAM2,LHEALTH GOTO_L GetItem MOV_RL PCOMMAND,CMUSE1 // Look out the front SNE_RL PPARAM2,LROBOT GOTO_L RobotFrontAttack // If we're facing the robot, shoot him SNE_RL PPARAM1,0 GOTO_L Turn // If something is blocking our way, turn // GOTO_L Step // Otherwise just move forwards Step : MOV_RL PPARAM1,8 // Get a Random number between 0 and 7 MOV_RL PCOMMAND,CMRANDOM SNE_RL PPARAM1,0 // if the number is 0, turn GOTO_L Turn MOV_RL PCOMMAND,CMMOVE // otherwise move forward GOTO_L Start Turn : MOV_RL PCOMMAND,CMLEFT // turn left GOTO_L Start // RobotFrontAttack : MOV_RL PCOMMAND,CMLEFT RobotAttack : MOV_RL PCOMMAND,CMLEFT // Turn so back faces robot CALL_L subFire // Fire at it MOV_RL PCOMMAND,CMRIGHT // Turn back to where we were GOTO_L Start // GetItem : MOV_RL PCOMMAND,CMRIGHT // Turn to face the item CALL_L subGoDirect // Go and get the item GOTO_L Start // // ---------------------------------------------------------------------------- SUBROUTINES // Go directly forwards the number of times specified in OBJDIST subGoDirect : MOV_RL PCOMMAND,CMMOVE // Move Forwards ADD_RL OBJDIST,-1 // Decrease the distance count SLT_RL OBJDIST,0 // Check distace (loop if OBJDIST>=0) GOTO_L subGoDirect // If we haven't reached it yet, move again RETURN_ // We have reached it, so go back // FIRE!!! subFire : MOV_RL PCOMMAND,CMUSE3 // Fire off 4 missiles MOV_RL PCOMMAND,CMUSE3 MOV_RL PCOMMAND,CMUSE3 MOV_RL PCOMMAND,CMUSE3 RETURN_ |
Created by and Copyright (c) Gordon Williams 2003 |