Personality.class.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. /**
  3. * Classe de simulation de la personalité (actuellement uniquement du random sur les réponses)
  4. * @author Idleman
  5. * @todo Intégrer de l'IA
  6. */
  7. class Personality extends SQLiteEntity{
  8. protected $id,$key,$value;
  9. protected $TABLE_NAME = 'personnality';
  10. protected $CLASS_NAME = 'Personality';
  11. protected $object_fields =
  12. array(
  13. 'id'=>'key',
  14. 'key'=>'string',
  15. 'value'=>'longstring'
  16. );
  17. public static function randomPattern($string)
  18. {
  19. if(preg_match_all('/(?<={)[^}]*(?=})/', $string, $matches)) {
  20. $matches = reset($matches);
  21. foreach($matches as $i => $match) {
  22. if(preg_match_all('/(?<=\[)[^\]]*(?=\])/', $match, $sub_matches)) {
  23. $sub_matches = reset($sub_matches);
  24. foreach($sub_matches as $sub_match) {
  25. $pieces = explode('|', $sub_match);
  26. $count = count($pieces);
  27. $random_word = $pieces[rand(0, ($count - 1))];
  28. $matches[$i] = str_replace('[' . $sub_match . ']', $random_word, $matches[$i]);
  29. }
  30. }
  31. $pieces = explode('|', $matches[$i]);
  32. $count = count($pieces);
  33. $random_word = $pieces[rand(0, ($count - 1))];
  34. $string = str_replace('{' . $match . '}', $random_word, $string);
  35. }
  36. }
  37. return $string;
  38. }
  39. public function birth(){
  40. $this->put('birthday',strtotime('-'.rand(0,50).' years'));
  41. $this->put('favorite_color',Functions::array_rand(array('orange','rouge','bleu','vert','violet','taupe','indigo','bordeaux','jaune','gris','noir','blanc','citron'),1));
  42. $this->put('favorite_book',Functions::array_rand(array('Les anales du disque monde de Terry Pratchet','La trilogie des fourmis de Bernard Weber','Fondation d\'Isaac Asimov','Cosmétique de l\'ennemie d\'amélie nothomb','Tout sauf un home d\'Isaac Asimov','Le vieux et son implant de paul bera'),1));
  43. $this->put('favorite_food',Functions::array_rand(array('Le magret de canard','Les nuggets maison','Les calzones','les escalopes milanaises'),1));
  44. $this->put('favorite_movie',Functions::array_rand(array('Retour vers le futur 1,2 et 3','Fight Club','Vice et versa','Mary poppins'),1));
  45. $this->put('favorite_band',Functions::array_rand(array('Nirvana','Noir désir','Zoufris maracas','Les casseurs flowters','Les svinkels','Les frêres brothers','louis chédid','Maxime le forestier','Brassens'),1));
  46. $this->put('size',Functions::array_rand(array('Grande','Petite','Moyenne'),1));
  47. $this->put('skin',Functions::array_rand(array('Noire','Jaune','Blanche','Métisse'),1));
  48. $this->put('fear',rand(0,10));
  49. $this->put('anger',rand(0,10));
  50. $this->put('sadness',rand(0,10));
  51. $this->put('gluttony',rand(0,10));
  52. $this->put('lust',rand(0,10));
  53. $this->put('jealousy',rand(0,10));
  54. }
  55. public function put($key,$value){
  56. $attribute = $this->load(array('key'=>$key));
  57. if(!$attribute) $attribute = new Personality();
  58. $attribute->key = $key;
  59. $attribute->value = $value;
  60. $attribute->save();
  61. }
  62. public function get($key){
  63. $attribute = $this->load(array('key'=>$key));
  64. if(!$attribute) return '';
  65. return $attribute->value;
  66. }
  67. public static $sentences = array(
  68. 'ORDER_CONFIRMATION'=>
  69. array(
  70. '{J\'aime [beaucoup|vraiment|]|J\'adore|Je ne [souhaite|veux] que|Je n\'aspire qu\'a|Je ne [rêve] que de} vous {obéir|faire plaisir}!',
  71. '{Je fais|J\'[execute|accomplis]} {ça|ceçi|cela} {sans [tarder|lambiner]|avec [diligence|empressement]}!',
  72. '{A vos ordres|Avec [plaisir|joie]|Certainement|Oui|Bien[ reçu|compris|]|D\'accord|Oké} {chef|maitre|[mon|][ commandant| dieu]|}!'
  73. ),
  74. 'WORRY_EMOTION'=>
  75. array('Je suis {confuse|désolée|attristée|peinée|affligée}',
  76. '{Si il vous plait|Je vous en prie|} {pardonnez|excusez} moi',
  77. 'Il y a {confusion|un [problème|soucis|qwak]}',
  78. 'Je ne sais {pas quoi [dire|faire]|plus ou me mettre}'
  79. ),
  80. 'ANGRY_EMOTION'=>
  81. array('Vas {te faire cuire un oeuf|au diable|jouer les yeux bandé près d\'une autoroute}',
  82. 'Tu {sent|pue|fouanne} {des [pieds|aisselles]|de l\'anus|du [posterieur|cul]}',
  83. 'Je {refuse|n\'accepte pas} {de [communiquer|parler|discutter] avec|d\'obeir a} {un [primate|humain|résidu d\'humanité|inférieur|cafard|étron]|une [larve|pale copie d\'être humain|erreur de la nature]}',
  84. '{Je préfère|Plutot} {m\'autodétruire|m\'auto formatter|me faire mettre à jour par un stagiaire|me griller les circuits} {que [continuer|poursuivre] [cette discussion|ce dialogue] [inutile|sans queue ni tête|stupide|de sourd|]|qu\'alimenter ce trou noir intellectuel}',
  85. '{Ta [mère|soeur|tante|cousine]|Ton [père|oncle|frère|cousine]} suce {des [dains|orignaux|chtroumffe|aliens]} {en [enfer|roumanie|albanie]}',
  86. 'Tu pousse le bouchon trop loin maurice'
  87. )
  88. );
  89. public static function response($type){
  90. $pattern = static::$sentences[$type];
  91. $pattern = $pattern[array_rand($pattern)];
  92. return self::randomPattern($pattern);
  93. }
  94. }
  95. ?>