home *** CD-ROM | disk | FTP | other *** search
/ UnrealScript Game Programming All in One / UnrealScriptGameProgrammingAllInOne.iso / UGPAIOListings / UGPAIOListingsCh15 / CH15LIST / Classes / CH15_03LIST.uc < prev    next >
Encoding:
Text File  |  2006-02-14  |  2.1 KB  |  80 lines

  1. // %PARAMETERS = "CH15LIST C:\UT2004"
  2. //Identifies the package
  3. //CH15_03LIST.uc
  4.  
  5. class CH15_03LIST extends Commandlet;
  6.  
  7. function int Main(string Args){
  8.  
  9. //#Setting up a stack as a shuttle schedule
  10. //#1 Define a passenger list
  11. const iSHUTTLEMAX = 8;
  12. local int iLength, iCtr, iShuttle, iPassengers;
  13.  
  14.  
  15. local Array<string> rgPassengers;
  16. local Array<string> rgShuttlePassengers;
  17. local string szPassengers;
  18. local string szShuttlePassenger;
  19. iShuttle = 0;
  20. iCtr = 0;
  21. iPassengers = 0;
  22. szPassengers = "Ali Mo Stu Ed Ira Abe Todd Ham " $
  23.                "Si Lil Min Lo Dli Regi Cal Hal " $
  24.                "Su Len Joy Jay Xi Chi Tan Nu";
  25.  
  26. Split(szPassengers, " ", rgPassengers);
  27.  
  28. Log (Chr(10) $"  Number of passengers: " $ rgPassengers.Length $ Chr(10));
  29.  
  30. // #2
  31. iLength = rgPassengers.Length/iSHUTTLEMAX;
  32.  while(iLength > 0){
  33.  
  34.    //The count for shuttle passengers controls block
  35.    while(iCtr < iSHUTTLEMAX){
  36.    // #3
  37.      //grow the shuttle array by one element
  38.      rgShuttlePassengers.Insert(iCtr, 1);
  39.  
  40.      //Assign passenger to last position in shuttle array
  41.      rgShuttlePassengers[iCtr] =  rgPassengers[0];
  42.  
  43.      //Remove the passenger from waiting list
  44.      rgPassengers.Remove(0,1);
  45.  
  46.      //Check the length of the waiting list
  47.      iPassengers = rgPassengers.Length;
  48.      iCtr++;
  49.    }//end inner block
  50.  
  51.    //Increase shuttle count with each group of 8
  52.    iShuttle+= 1;
  53.  
  54.    //Decrement the number of shuttles now needed
  55.    iLength--;
  56.  
  57. // #4
  58.    Log("  Board passengers for shuttle " $ iShuttle);
  59.    iCtr = 0;
  60.    //Show who is to board
  61.    //Make a list -- analogous to "popping" a stack
  62.    while(iCtr <iSHUTTLEMAX)
  63.    {
  64.       //Obtain the first element
  65.       szShuttlePassenger @= rgShuttlePassengers[0];
  66.       //Delete the first element
  67.       rgShuttlePassengers.Remove(0,1);
  68.       iCtr++;
  69.    }
  70.    //Display the list
  71.    Log("  " $ szShuttlePassenger $ Chr(10) );
  72.    //Account for remaining waiting passengers
  73.    Log("  Passengers remaining: " $ iPassengers  $ Chr(10));
  74.  
  75.    //Reset counter and display
  76.    iCtr = 0;
  77.    szShuttlePassenger = "";
  78.    }//end outer block
  79.    return 0;
  80. }