00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __MSHSinglePlayerPercept_h_
00009 #define __MSHSinglePlayerPercept_h_
00010
00011 #include "PlayersPercept.h"
00012
00013 class MSHPPF
00014 {
00015 public:
00016 static const unsigned int clear = 0x00000000;
00017 static const unsigned int outOfField = 0x00000001;
00018 static const unsigned int wrongSize = 0x00000002;
00019 static const unsigned int fewTrickot = 0x00000004;
00020 static const unsigned int tooMuchWhite = 0x00000008;
00021 static const unsigned int tooMuchGreen = 0x00000010;
00022 static const unsigned int tooMuchSkyBlue = 0x00000011;
00023 static const unsigned int tooMuchOrange = 0x00000012;
00024 static const unsigned int fewBrightnessChange = 0x00000014;
00025 static const unsigned int numOfFlags = 8;
00026 };
00027
00028 class MSHSinglePlayerPercept : public SinglePlayerPercept
00029 {
00030 public:
00031 MSHSinglePlayerPercept () { flags = MSHPPF::clear; };
00032
00033
00034 int lines;
00035
00036
00037 unsigned int flags;
00038
00039 double getValidity ()
00040 {
00041 int flagCount = 0;
00042 int flagCopy = flags;
00043
00044
00045 for (int i = 0; i < 32; i++)
00046 {
00047 if (flagCopy & 0x00000001)
00048 flagCount++;
00049
00050 flagCopy >>= 1;
00051 };
00052
00053 double weight;
00054
00055 if ((MSHPPF::numOfFlags - flagCount) != 0)
00056 weight = (MSHPPF::numOfFlags / (MSHPPF::numOfFlags - flagCount));
00057 else weight = 0;
00058
00059 return validity * weight;
00060 };
00061 };
00062
00063 #endif