⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 circles.pl

📁 PRl教学程序 PRl教学程序 PRl教学程序
💻 PL
字号:
/********************************************************************
    Constraint-based Graphical Programming in B-Prolog
    %
    draw fancy circles
*********************************************************************/
go:-
    N=31,
    functor(T,circles,N),
    T=..[_|Circles],
    createCircles(Circles),
    %
    cgSameCenterY(Circles),
    constrainSize(T,1,N),
    constrainColor(Circles),
    %
    cgStartRecord(circles),
    cgShow(Circles),
    cgStopRecord.

createCircles([]).
createCircles([C|Cs]):-
    cgCircle(C),
    createCircles(Cs).

constrainSize(T,N0,N):-
    2*N0<N,!,
    I is 2*N0,
    J is 2*N0+1,
    arg(N0,T,C0),
    arg(I,T,C1),
    arg(J,T,C2),
    C0^diameter #= 2*C1^diameter,
    C2^diameter #= C1^diameter,
    C1^x #= C0^x, C2^x #= C0^centerX,
    N1 is N0+1,
    constrainSize(T,N1,N).
constrainSize(_T,_N0,_N).

%two circles that are of the same size must have the same color
%and two circles that are of different sizes must have different colors
constrainColor([]):-!.
constrainColor([_]):-!.
constrainColor([C|Cs]):-
    constrainColor(C,Cs),
    constrainColor(Cs).

constrainColor(_C,[]).
constrainColor(C,[C1|Cs]):-
    C^color #\= black, C^color #\= darkGray, C^color #\= gray, C^color #\= blue,
    (C^diameter #= C1^diameter) #=> C^color #= C1^color,
    (C^diameter #\= C1^diameter) #=> C^color #\= C1^color,     
     constrainColor(C,Cs).

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -