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

 
  Code for "better"
// 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