Difference between revisions of "Tutorial Project. Release 7. Class Computer0"
From wiki.visual-prolog.com
(New page: {{PolyLine7.Players}}) |
(classInfo) |
||
(11 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{Tutorial Project. Release 7. Players}} | ||
<vip> | |||
/****************************************************** | |||
Class computer0 | |||
Predicate SuccessfullStep implementation | |||
Written by Elena Efimova | |||
*******************************************************/ | |||
class computer0:player | |||
open core | |||
predicates | |||
getPlayerDescriptor:(game::language_D)->string Descriptor. | |||
end class computer0 | |||
implement computer0 | |||
inherits genericComputer | |||
open core | |||
clauses | |||
new():- | |||
PolyLineBraneObj=polylineStrategy0::new(), | |||
setpolylineStrategy(PolyLineBraneObj). | |||
clauses | |||
getPlayerDescriptor(game::en)=polylineStrategy0::playerDescriptorEn_C. | |||
getPlayerDescriptor(game::ru)=polylineStrategy0::playerDescriptorRu_C. | |||
end implement computer0 | |||
/****************************************** | |||
Class polylineStrategy0 | |||
******************************************/ | |||
class polylineStrategy0:polylineStrategy | |||
open core | |||
constants | |||
playerDescriptorEn_C="Computer0: Unlimited Depth. Despair move - first possible in the list". | |||
playerDescriptorRu_C="Computer0: Неограниченный поиск. Ход отчаяния - по возможному правилу". | |||
end class polylineStrategy0 | |||
implement polylineStrategy0 | |||
open core, exception | |||
facts | |||
genericComputer_V:genericComputer:=erroneous. | |||
clauses | |||
setGenericComputer(GenericComputerObj):- | |||
genericComputer_V:=GenericComputerObj. | |||
clauses | |||
successfulStep(PolyLine)=BestMove:- | |||
BestMove=successfulStep1(PolyLine), | |||
!. | |||
successfulStep(PolyLine)=SomeMove:- | |||
genericComputer_V:stepCandidate(PolyLine, _PolyLine1,SomeMove), | |||
!. | |||
predicates | |||
successfulStep1:(juniourJudge::cell* PolyLine)->juniourJudge::cell determ. | |||
clauses | |||
successfulStep1(PolyLine)=BestMove:- | |||
genericComputer_V:stepCandidate(PolyLine, _PolyLine1,BestMove), | |||
list::isMember(BestMove, PolyLine), | |||
!. | |||
successfulStep1(PolyLine)=Cell:- | |||
genericComputer_V:stepCandidate(PolyLine, PolyLine1,Cell), | |||
not(_=successfulStep1(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 polylineStrategy0 | |||
</vip> | |||
[[ru:Ползунок7. Класс Computer0]] | |||
[[Category:PolyLine Evolutions]] |
Latest revision as of 14:36, 6 May 2013
Tutorial Project. Release 7 |
---|
/****************************************************** Class computer0 Predicate SuccessfullStep implementation Written by Elena Efimova *******************************************************/ class computer0:player open core predicates getPlayerDescriptor:(game::language_D)->string Descriptor. end class computer0 implement computer0 inherits genericComputer open core clauses new():- PolyLineBraneObj=polylineStrategy0::new(), setpolylineStrategy(PolyLineBraneObj). clauses getPlayerDescriptor(game::en)=polylineStrategy0::playerDescriptorEn_C. getPlayerDescriptor(game::ru)=polylineStrategy0::playerDescriptorRu_C. end implement computer0 /****************************************** Class polylineStrategy0 ******************************************/ class polylineStrategy0:polylineStrategy open core constants playerDescriptorEn_C="Computer0: Unlimited Depth. Despair move - first possible in the list". playerDescriptorRu_C="Computer0: Неограниченный поиск. Ход отчаяния - по возможному правилу". end class polylineStrategy0 implement polylineStrategy0 open core, exception facts genericComputer_V:genericComputer:=erroneous. clauses setGenericComputer(GenericComputerObj):- genericComputer_V:=GenericComputerObj. clauses successfulStep(PolyLine)=BestMove:- BestMove=successfulStep1(PolyLine), !. successfulStep(PolyLine)=SomeMove:- genericComputer_V:stepCandidate(PolyLine, _PolyLine1,SomeMove), !. predicates successfulStep1:(juniourJudge::cell* PolyLine)->juniourJudge::cell determ. clauses successfulStep1(PolyLine)=BestMove:- genericComputer_V:stepCandidate(PolyLine, _PolyLine1,BestMove), list::isMember(BestMove, PolyLine), !. successfulStep1(PolyLine)=Cell:- genericComputer_V:stepCandidate(PolyLine, PolyLine1,Cell), not(_=successfulStep1(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 polylineStrategy0