81 lines
2.1 KiB
Plaintext
81 lines
2.1 KiB
Plaintext
|
|
||
|
database
|
||
|
barchart(integer)
|
||
|
chartbar(integer,integer,integer,integer,integer,integer)
|
||
|
|
||
|
global predicates
|
||
|
bar(integer,integer,integer,integer,integer)-(i,i,i,i,i) language c
|
||
|
predicates
|
||
|
process(char)
|
||
|
repeat
|
||
|
retractall
|
||
|
drawbar(integer,integer,integer,integer)
|
||
|
|
||
|
goal
|
||
|
graphics(1,0,0),
|
||
|
asserta(barchart(0)),
|
||
|
makewindow(1,1,1,"Bar",0,0,20,40),
|
||
|
makewindow(2,1,1,"",20,0,4,40),
|
||
|
repeat,
|
||
|
write("Press any key to continue"), readchar(_),
|
||
|
clearwindow,
|
||
|
makewindow(1,1,1,"Bar",0,0,20,40),
|
||
|
write("m. Make a bar Chart.\n"),
|
||
|
write("s. Save your bar Chart.\n"),
|
||
|
write("l. Load your bar Chart.\n"),
|
||
|
write("d. Draw your bar Chart.\n"),
|
||
|
write("e. End\nEnter Choice: "),
|
||
|
readchar(Choice),
|
||
|
clearwindow,
|
||
|
shiftwindow(2),
|
||
|
process(Choice),
|
||
|
bios(16,reg(3,0,0,0,0,0,0,0),_).
|
||
|
|
||
|
clauses
|
||
|
process('m'):-
|
||
|
barchart(Nu),
|
||
|
retract(barchart(Nu)),
|
||
|
NewNu = Nu+1,
|
||
|
asserta(barchart(NewNu)),
|
||
|
write("Enter the number of bars: "),
|
||
|
readint(NuOfBars),clearwindow,
|
||
|
write("Enter max value on Y scale: "),
|
||
|
readint(Max),clearwindow,
|
||
|
YScale = 140/Max,
|
||
|
Width = 265/NuOfBars,
|
||
|
Start = 305-Width,
|
||
|
clearwindow,
|
||
|
drawbar(NuOfBars, Width, Start, Yscale),
|
||
|
fail.
|
||
|
process('s'):-
|
||
|
write("Enter file name of chart: "),readln(Name),
|
||
|
concat(Name,".CHT",FName),save(Fname),fail.
|
||
|
process('l'):-
|
||
|
retractall,
|
||
|
write("Enter file name of chart: "),readln(Name),
|
||
|
concat(Name,".CHT",FName),consult(FName),fail.
|
||
|
process('d'):-
|
||
|
barchart(Chart),
|
||
|
chartbar(Chart,XPosition,Ypos,Width,YBarSize,1),
|
||
|
bar(XPosition,Ypos,Width,YBarSize,1),fail.
|
||
|
process('e').
|
||
|
|
||
|
drawbar(0,_,_,_):-!.
|
||
|
drawbar(Nu,Width,XPosition,Yscale):-
|
||
|
XNuNew=Nu-1,clearwindow,
|
||
|
write("Enter the value associated bar ",Nu ,": "),
|
||
|
readint(Y),
|
||
|
YBarSize=Y*YScale,
|
||
|
Ypos=140 - YBarSize,
|
||
|
bar(XPosition,Ypos,Width,YBarSize,1),
|
||
|
barchart(Chart),
|
||
|
asserta(chartbar(Chart,XPosition,Ypos,Width,YBarSize,1)),
|
||
|
XNewPos= XPosition-Width-5,
|
||
|
drawbar(XNuNew,Width,XNewPos,Yscale).
|
||
|
|
||
|
repeat.
|
||
|
repeat:- repeat.
|
||
|
retractall:- retract(_),fail.
|
||
|
retractall.
|
||
|
|