使用Pascal创建图形
我试图用Pascal创建一个Kakuro,程序应该将Kakuro清空(类似于),并返回完成的(类似于)。我已经加载了数据(从一个文件)并传递到一个2d数组 我发现的问题与对角线分割的正方形有关,我不知道如何用Pascal控制台打印这个分割和每边的数字 我曾经尝试过使用Pascal图形库,但是alghoritm应该在多台具有不同编译器的计算机上运行,Pascal没有统一的库,只有crt,对此没有帮助(或者我找不到) 我还尝试了类似ASCII的方法,使用使用Pascal创建图形,pascal,graphic,Pascal,Graphic,我试图用Pascal创建一个Kakuro,程序应该将Kakuro清空(类似于),并返回完成的(类似于)。我已经加载了数据(从一个文件)并传递到一个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数组,但如果这样做,我会得到如下结果:
+---+
| |
|---|
| |
+---+
除以一半,需要对角进行,因此也不太好。对整数值使用MinWidth说明符
WriteLn(intValue:2); // displays the number with a width of 2
对于浮点值,还可以为小数位数添加一个值:
WriteLn(floatVal:5:2);
您可以在-it’s Delphi文档中找到说明符的文档,但是Delphi很久以前就在Turbo Pascal中有了它的根,Write/WriteLn
是传统的Pascal函数,没有改变
写入参数的形式为:
OutExpr[:MinWidth[:deplaces]]
其中OutExpr是一个输出表达式
MinWidth和DecPlaces是类型整数表达式:
MinWidth指定最小字段宽度,该宽度必须大于0。除非OutExpr的值必须用多个MinWidth字符表示,否则将完全写入MinWidth字符(必要时使用前导空格)。在这种情况下,将写入足够的字符来表示OutExpr的值。同样,如果省略MinWidth,则写入必要数量的字符以表示OutExpr的值
小数位数指定某个实类型的定点表示形式中的小数位数。只有当OutExpr是实类型之一,并且还指定了MinWidth时,才能指定它。指定MinWidth时,它必须大于或等于0
下面是一个快速示例:
NT = 12;
NB = -1;
WriteLn('+---+');
WriteLn('|\', NT:2, '|');
WriteLn('| \ |');
WriteLn('|', NB:2, '\|');
WriteLn('+---+');
ReadLn;
这就产生了
+---+
|\12|
| \ |
|-1\|
+---+
如果需要两个以上的输出宽度,则需要放大方框:
+-----+
|\ 120|
| \ |
| \ |
| \ |
|123 \|
+-----+
我认为现在它很好,如果它缺少什么就告诉我。你能不能也添加你写的不适合你的代码?你说你试过“类似ascii的东西”;发布你尝试过但不起作用的代码。我没有确切的代码,但我有我用Scott Hunter回复编写的代码,一分钟后我编辑了第一篇文章并添加了它,效果非常好!我插入了一个循环,并使用crt库的GoToXY函数来制作网格,唯一的问题是当Y坐标(高度)超过20像素时(我认为因为pascal屏幕大小是80*25),我将看看如何解决这个问题。谢谢你的帮助:D