home *** CD-ROM | disk | FTP | other *** search
/ AI Game Programming Wisdom / AIGameProgrammingWisdom.iso / SourceCode / 02 Useful Techniques / 08 Zarozinski / src / aiwisdom.fcl next >
Encoding:
Text File  |  2001-10-16  |  1.3 KB  |  51 lines

  1. (* FCL File Created From FFLL Model : Thu Sep 06 10:39:12 2001 *)
  2. FUNCTION_BLOCK
  3.  
  4. VAR_INPUT
  5.     Our_Health    REAL; (* RANGE(0 .. 100) *) 
  6.     Enemy_Health    REAL; (* RANGE(0 .. 100) *) 
  7. END_VAR
  8.  
  9. VAR_OUTPUT
  10.     Aggressiveness    REAL; (* RANGE(0 .. 4) *) 
  11. END_VAR
  12.  
  13. FUZZIFY Our_Health
  14.     TERM Near_Death := (0, 0) (0, 1) (50, 0) ;
  15.     TERM Good := (14, 0) (50, 1) (83, 0) ;
  16.     TERM Excellent := (50, 0) (100, 1) (100, 0) ;
  17. END_FUZZIFY
  18.  
  19. FUZZIFY Enemy_Health
  20.     TERM Near_Death := (0, 0) (0, 1) (50, 0) ;
  21.     TERM Good := (14, 0) (50, 1) (83, 0) ;
  22.     TERM Excellent := (50, 0) (100, 1) (100, 0) ;
  23. END_FUZZIFY
  24.  
  25. FUZZIFY Aggressiveness
  26.     TERM Run_Away := 1 ;
  27.     TERM Fight_Defensively := 2 ;
  28.     TERM All_Out_Attack := 3 ;
  29. END_FUZZIFY
  30.  
  31. DEFUZZIFY valve
  32.     METHOD: MoM;
  33. END_DEFUZZIFY
  34.  
  35. RULEBLOCK first
  36.     AND:MIN;
  37.     ACCUM:MAX;
  38.     RULE 0: IF Good AND Good THEN Fight_Defensively;
  39.     RULE 1: IF Good AND Excellent THEN Fight_Defensively;
  40.     RULE 2: IF Good AND Near_Death THEN All_Out_Attack;
  41.     RULE 3: IF Excellent AND Good THEN All_Out_Attack;
  42.     RULE 4: IF Excellent AND Excellent THEN Fight_Defensively;
  43.     RULE 5: IF Excellent AND Near_Death THEN All_Out_Attack;
  44.     RULE 6: IF Near_Death AND Good THEN Run_Away;
  45.     RULE 7: IF Near_Death AND Excellent THEN Run_Away;
  46.     RULE 8: IF Near_Death AND Near_Death THEN Fight_Defensively;
  47. END_RULEBLOCK
  48.  
  49. END_FUNCTION_BLOCK
  50.  
  51.