Difference between revisions of "Tutorial Project. Release 7. Class Computer1"
From wiki.visual-prolog.com
 (classInfo)  | 
				|||
| (11 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
{{  | {{Tutorial Project. Release 7. Players}}  | ||
<vip>  | |||
/******************************************  | |||
Class computer1  | |||
Predicate SuccessfullStep implementation  | |||
written by Elena Efimova  | |||
******************************************/  | |||
class computer1:player  | |||
    open core  | |||
predicates  | |||
    getPlayerDescriptor:(game::language_D)->string Descriptor.  | |||
end class computer1  | |||
implement computer1  | |||
    inherits genericComputer  | |||
open core  | |||
clauses  | |||
    new():-  | |||
        PolyLineBraneObj=polylineStrategy1::new(),  | |||
        setpolylineStrategy(PolyLineBraneObj).  | |||
clauses  | |||
   getPlayerDescriptor(game::en)=polylineStrategy1::playerDescriptorEn_C.  | |||
   getPlayerDescriptor(game::ru)=polylineStrategy1::playerDescriptorRu_C.  | |||
end implement computer1  | |||
/******************************************  | |||
  Class polylineStrategy1  | |||
******************************************/  | |||
class polylineStrategy1:polylineStrategy  | |||
    open core  | |||
constants  | |||
    playerDescriptorEn_C="Computer1: Unlimited Depth. Despair move - random".  | |||
    playerDescriptorRu_C="Computer1: Неограниченный поиск. Ход отчаяния - случайный".  | |||
end class polylineStrategy1  | |||
implement polylineStrategy1  | |||
    open core, exception  | |||
facts  | |||
    genericComputer_V:genericComputer:=erroneous.  | |||
clauses  | |||
    setGenericComputer(GenericComputerObj):-  | |||
        genericComputer_V:=GenericComputerObj.  | |||
clauses  | |||
    successfulStep(PolyLine)=BestMove:-  | |||
        genericComputer_V:stepCandidate(PolyLine, _PolyLine1,BestMove),  | |||
        list::isMember(BestMove, PolyLine),  | |||
        !.  | |||
    successfulStep(PolyLine)=Cell:-  | |||
        genericComputer_V:stepCandidate(PolyLine, PolyLine1,Cell),  | |||
            not(_=successfulStep(PolyLine1)).  | |||
clauses  | |||
    randomStep()=Cell:-  | |||
        findAll(NewCell,genericComputer_V:stepCandidate(juniourJudge::polyline_P,_Polyline1, NewCell),CellCandidateListWithDuplicates),  | |||
        CellCandidateList=list::removeDuplicates(CellCandidateListWithDuplicates),  | |||
        not(CellCandidateList=[]),  | |||
        NoOfVariants=list::length(CellCandidateList),  | |||
        ChoiceNo=math::random(NoOfVariants-1),  | |||
        Cell=list::nth(ChoiceNo+1,CellCandidateList).  | |||
end implement polylineStrategy1  | |||
</vip>  | |||
==References==  | |||
[[ru:Ползунок7. Класс Computer1]]  | [[ru:Ползунок7. Класс Computer1]]  | ||
[[Category:  | [[Category:PolyLine Evolutions]]  | ||
Latest revision as of 14:44, 6 May 2013
| Tutorial Project. Release 7 | 
|---|
/****************************************** Class computer1 Predicate SuccessfullStep implementation written by Elena Efimova ******************************************/ class computer1:player open core predicates getPlayerDescriptor:(game::language_D)->string Descriptor. end class computer1 implement computer1 inherits genericComputer open core clauses new():- PolyLineBraneObj=polylineStrategy1::new(), setpolylineStrategy(PolyLineBraneObj). clauses getPlayerDescriptor(game::en)=polylineStrategy1::playerDescriptorEn_C. getPlayerDescriptor(game::ru)=polylineStrategy1::playerDescriptorRu_C. end implement computer1 /****************************************** Class polylineStrategy1 ******************************************/ class polylineStrategy1:polylineStrategy open core constants playerDescriptorEn_C="Computer1: Unlimited Depth. Despair move - random". playerDescriptorRu_C="Computer1: Неограниченный поиск. Ход отчаяния - случайный". end class polylineStrategy1 implement polylineStrategy1 open core, exception facts genericComputer_V:genericComputer:=erroneous. clauses setGenericComputer(GenericComputerObj):- genericComputer_V:=GenericComputerObj. clauses successfulStep(PolyLine)=BestMove:- genericComputer_V:stepCandidate(PolyLine, _PolyLine1,BestMove), list::isMember(BestMove, PolyLine), !. successfulStep(PolyLine)=Cell:- genericComputer_V:stepCandidate(PolyLine, PolyLine1,Cell), not(_=successfulStep(PolyLine1)). clauses randomStep()=Cell:- findAll(NewCell,genericComputer_V:stepCandidate(juniourJudge::polyline_P,_Polyline1, NewCell),CellCandidateListWithDuplicates), CellCandidateList=list::removeDuplicates(CellCandidateListWithDuplicates), not(CellCandidateList=[]), NoOfVariants=list::length(CellCandidateList), ChoiceNo=math::random(NoOfVariants-1), Cell=list::nth(ChoiceNo+1,CellCandidateList). end implement polylineStrategy1
