home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / tc20 / pbar.pro < prev    next >
Text File  |  1988-08-28  |  3KB  |  85 lines

  1. /*  PBAR.PRO -- sample Turbo Prolog program to be used with BAR.C
  2.  
  3.     Copyright (c) 1987,88 Borland International.  All rights reserved.
  4. */
  5.  
  6. database
  7.     barchart(integer)
  8.     chartbar(integer,integer,integer,integer,integer,integer)
  9.  
  10. global predicates
  11.  cbar(integer,integer,integer,integer,integer)-(i,i,i,i,i) language c
  12. predicates
  13.     process(char)
  14.     repeat
  15.     myretractall
  16.     drawbar(integer,integer,integer,integer)
  17.  
  18. goal
  19.     graphics(1,0,0),
  20.     asserta(barchart(0)),
  21.     makewindow(1,1,1,"Bar",0,0,20,40),
  22.     makewindow(2,1,1,"",20,0,4,40),
  23.     repeat,
  24.     write("Press any key to continue"), readchar(_),
  25.     clearwindow,
  26.     makewindow(1,1,1,"Bar",0,0,20,40),
  27.     write("m. Make a bar Chart.\n"),
  28.     write("s. Save your bar Chart.\n"),
  29.     write("l. Load your bar Chart.\n"),
  30.     write("d. Draw your bar Chart.\n"),
  31.     write("e. End\nEnter Choice: "),
  32.     readchar(Choice),
  33.     clearwindow,
  34.     shiftwindow(2),
  35.     process(Choice),
  36.     bios(16,reg(3,0,0,0,0,0,0,0),_).
  37.  
  38. clauses
  39.      process('m'):-
  40.             barchart(Nu),
  41.             retract(barchart(Nu)),
  42.             NewNu = Nu+1,
  43.             asserta(barchart(NewNu)),
  44.             write("Enter the number of bars: "),
  45.             readint(NuOfBars),clearwindow,
  46.             write("Enter max value on Y scale: "),
  47.             readint(Max),clearwindow,
  48.             YScale = 140/Max,
  49.             Width = 265/NuOfBars,
  50.             Start = 305-Width,
  51.             clearwindow,
  52.             drawbar(NuOfBars, Width, Start, Yscale),
  53.             fail.
  54.      process('s'):-
  55.             write("Enter file name of chart: "),readln(Name),
  56.             concat(Name,".CHT",FName),save(Fname),fail.
  57.      process('l'):-
  58.             myretractall,
  59.             write("Enter file name of chart: "),readln(Name),
  60.             concat(Name,".CHT",FName),consult(FName),fail.
  61.      process('d'):-
  62.              barchart(Chart),
  63.              chartbar(Chart,XPosition,Ypos,Width,YBarSize,1),
  64.              cbar(XPosition,Ypos,Width,YBarSize,1),fail.
  65.      process('e').
  66.  
  67.      drawbar(0,_,_,_):-!.
  68.      drawbar(Nu,Width,XPosition,Yscale):-
  69.             XNuNew=Nu-1,clearwindow,
  70.             write("Enter the value associated bar ",Nu ,": "),
  71.             readint(Y),
  72.             YBarSize=Y*YScale,
  73.             Ypos=140 - YBarSize,
  74.             cbar(XPosition,Ypos,Width,YBarSize,1),
  75.             barchart(Chart),
  76.             asserta(chartbar(Chart,XPosition,Ypos,Width,YBarSize,1)),
  77.             XNewPos= XPosition-Width-5,
  78.             drawbar(XNuNew,Width,XNewPos,Yscale).
  79.  
  80. repeat.
  81. repeat:- repeat.
  82. myretractall:- retract(_),fail.
  83. myretractall.
  84.  
  85.