在Processing中绘制可调整尺寸的菱形图形问题求助
修复可调整尺寸的菱形绘制代码
问题分析
你的代码核心问题出在菱形下半部分的绘制逻辑:
- 空格循环的条件错误:
for(int j = i; j >= 1-i; j--)完全不符合居中对齐的空格计算逻辑,导致空格数量混乱。 - 下半部分循环起始值错误:从
i = ancho开始会重复绘制菱形中间的最长行,最终图形会有重复的中线。
修正后的代码
void dibujaRombo(int ancho) { // 绘制上半部分(含中间最长行) for(int i = 1; i <= ancho; i++){ // 打印前置空格 for(int j = 1; j <= ancho - i; j++){ print(" "); } // 打印星号 for(int k = 0; k < 2*i - 1; k++){ print("*"); } println(); } // 绘制下半部分(从中间行的上一行开始,避免重复) for(int i = ancho - 1; i >= 1; i--){ // 复用上半部分的空格逻辑,保证居中 for(int j = 1; j <= ancho - i; j++){ print(" "); } // 打印对应数量的星号 for(int k = 0; k < 2*i - 1; k++){ print("*"); } println(); } } void setup(){ dibujaRombo(6); }
关键修正说明
- 调整下半部分循环起始值:将
i = ancho改为i = ancho - 1,避免重复绘制菱形的中间最长行。 - 统一空格计算逻辑:下半部分的空格循环和上半部分保持一致,确保每行星号都能居中对齐,符合菱形的对称结构。
- 函数名优化:将原函数名
dibujaPiramide(金字塔绘制)改为dibujaRombo(菱形绘制),更贴合功能语义。
测试输出(输入参数为6时)
* *** ***** ******* ********* *********** ********* ******* ***** *** *
内容的提问来源于stack exchange,提问作者Danny Belloli
相关产品推荐
相关产品推荐

