MAFUS Tenes toda la razon
Tengo poco tiempo... pero me pude poner un rato y lo saqué
int main(void) {
int diag = 6;
make_board(diag+1,diag+1,' ');
// rombo
line(diag/2,0,1,1,diag/2,'a');
line(diag,diag/2,-1,1,diag/2,'b');
line(diag/2,diag,-1,-1,diag/2,'c');
line(0,diag/2,1,-1,diag/2,'d');
// linea para x=0
yblock(0,0,diag+1,'+');
//centro
yblock(0,0,1,'&');
render();
release();
return 0;
}
Uso una implementación similar a la del problema de la pirámide y la definicion de line() es esta:
// Las lineas pueden ser discontinuas con deltas <> -1,0,+1 (por diseño)
void line(int x1, int y1, int delta_x, int delta_y, int len, char c = '*'){
Otras implementaciones de lineas que me hice fueron para:
void sline(int x1,int y1, int x2, int y2, char c = '*');
void xblock(int x, int y, int len, char c = '*');
void yblock(int x, int y, int len, char c = '*')
Obviamente todo se puede hacer con line() y no se necesita más pero para lineas verticales y horizontales usar yblock() y xblock() puede ser mas comodo.
Si lo tuviera que re-hacer, dejaria un cursor en la posicion final de cada punto, linea, figura dibujada para no tener que calcular a mano ese valor de nuevo como punto de inicio de otras subsiguientes.
Obviamente el programa no compila porque no lo posté completo haciendo caso a recomendaciones del
staff