使用Pascal创建图形

时间:2013-11-30 03:44:27

标签: pascal graphic

我正在尝试使用Pascal创建一个Kakuro,程序应该让Kakuro为空(类似于this)并将其返回完成(类似this)。我已经加载了数据(从文件中)并传递给一个2d数组。

我发现的问题与对角划分的方块有关,我不知道如何用Pascal控制台打印这个分区和每个边的数字。

我尝试使用Pascal图形库,但是alghoritm应该在几台具有不同编译器的计算机上运行,​​并且Pascal没有统一库​​,只有crt而且没有帮助(或者我找不到它)。

我也尝试使用ASCII这样的东西,用--和'|`创建网格但是当我用两位数字打印变形所有输出时,代码是这样的:

for c := 1 to maxc do
begin
  for f := 1 to maxf do
  begin
    WriteLn('+---+');
    WriteLn('|\',tablero[v,f,c],'|');
    WriteLn('| \ |');
    WriteLn('|', tablero[h,f,c], '  \|');
    WriteLn('+---+');
  end;
  WriteLn();
end;

输出中的问题你可以看到:

+---+
|\-1|
| \ |
|23 \|
+---+
+---+
|\0|
| \ |
|0 \|
+---+

我想在我的2d数组中创建另一个2d数组,但如果我这样做,我会得到类似的结果:

+---+
|   |
|---|
|   | 
+---+

除以一半,并且需要对角线完成,所以也不能很好地工作。

1 个答案:

答案 0 :(得分:2)

对整数值使用MinWidth说明符。

WriteLn(intValue:2);   // displays the number with a width of 2

对于浮点值,您还可以为小数位数添加一个值:

WriteLn(floatVal:5:2); 

您可以在System.Write中找到说明符的文档 - 它是Delphi文档,但Delphi很久以前就已经在Turbo Pascal中出现了,Write/WriteLn是传统的Pascal函数,并且没有改变。

  

写参数的格式为:

     

OutExpr [:MinWidth [:DecPlaces]]

     

其中OutExpr是输出表达式。

     

MinWidth和DecPlaces是类型整数表达式:

     

MinWidth指定最小字段宽度,必须大于0.写入正确的MinWidth字符(必要时使用前导空格),除非OutExpr的值必须以超过MinWidth字符表示。在这种情况下,会写入足够的字符来表示OutExpr的值。同样,如果省略MinWidth,则会写入必要的字符数来表示OutExpr的值。

     

DecPlaces指定其中一种Real类型的定点表示中的小数位数。仅当OutExpr是Real类型之一并且还指定了MinWidth时,才能指定它。指定MinWidth时,它必须大于或等于0.

以下是一个快速示例:

NT = 12;
NB = -1;

WriteLn('+---+');         
WriteLn('|\', NT:2, '|'); 
WriteLn('| \ |');         
WriteLn('|', NB:2, '\|'); 
WriteLn('+---+');         
ReadLn;

这会产生

+---+
|\12|
| \ |
|-1\|
+---+

如果你需要的输出超过两个,你需要放大你的盒子:

+-----+
|\ 120|
| \   |
|  \  |
|   \ |
|123 \|
+-----+