Есть ли альтернативы cprintf? - PullRequest
       21

Есть ли альтернативы cprintf?

1 голос
/ 25 декабря 2011

Я пытаюсь нарисовать елку, используя астрику "*", и наконец я смог нарисовать ее.

Проблема в том, что когда я его раскрасил, используя textattr (130) «этот цвет ЗЕЛЕНЫЙ с мигающим» и функции cprintf дерево было разбросано по всему экрану.

Я нарисовал вертикальную линию, чтобы увидеть эффект cprintf.

Я в порядке с любыми другими методами, кроме cprintf, я просто надеюсь, что дерево будет отображаться правильно и окрашено.

Мой код:

#include<stdio.h>
#include<conio.h>

int main()
 {
   clrscr();


   textattr(130);
   cprintf("*"
       "\n*"
       "\n*"
       "\n*"
       "\n*"
       "\n*"
       "\n*"
       "\n*"
       "\n*"
       "\n*");

   cprintf(
 "\n                                                      *"
 "\n                                                     * *"
 "\n                                                    *   *"
 "\n                                                   *     *"
 "\n                                                  *       *"
 "\n                                                   **   **"
 "\n                                                  *       *"
 "\n                                                 *         *"
 "\n                                                *           *"
 "\n                                                 **       **"
 "\n                                                   *      *"
 "\n                                                  *        *"
 "\n                                                 *          *"
 "\n                                                *            *"
 "\n                                               ******   ******"
 "\n                                                     * *"
 "\n                                                     * *"
 "\n                                                     * *"
 "\n                                                     * *"
 "\n                                                     ***");









 getch();
 return 0;
 }

Я надеюсь, что кто-то хотел бы помочь мне с этим.

Ответы [ 2 ]

2 голосов
/ 25 декабря 2011

Я взял вашу программу и сослался на это и предложил следующую программу.

#include <stdio.h>

#define RESET       0
#define BRIGHT      1
#define DIM         2
#define UNDERLINE   3
#define BLINK       4
#define REVERSE     7
#define HIDDEN      8

#define BLACK       0
#define RED         1
#define GREEN       2
#define YELLOW      3
#define BLUE        4
#define MAGENTA     5
#define CYAN        6
#define WHITE       7

void textcolor(int attr, int fg, int bg);
void reset_screen(void);
void print_tree(void);

int main()
{   
    textcolor(BRIGHT, RED, BLACK);  
    print_tree();
    getchar();
    reset_screen();
    return 0;
}

void textcolor(int attr, int fg, int bg)
{   
    char command[13];
    sprintf(command, "%c[%d;%d;%dm", 0x1B, attr, fg + 30, bg + 40);
    printf("%s", command);
}

void reset_screen(void)
{
    system("reset");
    return;
}

void print_tree(void)
{
    printf("                                \n");
    printf("                                \n");
    printf("               *                \n");
    printf("               *                \n");
    printf("              * *               \n");
    printf("             *   *              \n");
    printf("            *     *             \n");
    printf("           *       *            \n");
    printf("            **   **             \n");
    printf("           *       *            \n");
    printf("          *         *           \n");
    printf("         *           *          \n");
    printf("          **       **           \n");
    printf("            *      *            \n");
    printf("           *        *           \n");
    printf("          *          *          \n");
    printf("         *            *         \n");
    printf("        ******   ******         \n");
    printf("              * *               \n");
    printf("              * *               \n");
    printf("              * *               \n");
    printf("              * *               \n");
    printf("              * *               \n");
    printf("              * *               \n");
    printf("                                \n");
    printf("                                \n");
    printf("                                \n");
    printf("  M E R R Y  C H R I S T M A S  \n");
    printf("                                \n");
    printf("                                \n");

    return;
}

Счастливого Рождества !!

0 голосов
/ 06 декабря 2012

Вы можете использовать функцию setcolor (), чтобы изменить цвет вашего текста.Следующий пример программы объясняет ее использование.

#include <graphics.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
/* request auto detection */
   int gdriver = DETECT, gmode, errorcode;
   int color, midx, midy;
   char colname[35];

/* initialize graphics and local variables */
   initgraph(&gdriver, &gmode, "");

/* read result of initialization */
   errorcode = graphresult();
/* an error occurred */
   if (errorcode != grOk)
   {
      printf("Graphics error: %s\n", grapherrormsg(errorcode));
      printf("Press any key to halt:");
      getch();
/* terminate with an error code */
      exit(1);
   }

   midx = getmaxx() / 2;
   midy = getmaxy() / 2;
   setcolor(getmaxcolor());

/* for centering text on the display */
   settextjustify(CENTER_TEXT, CENTER_TEXT);

/* get the current drawing color */
   color = getcolor();

/* convert color value into a string */
   itoa(color, colname, 10);
   strcat(colname, " is the current drawing color.");

/* display a message */
   outtextxy(midx, midy, colname);

/* clean up */
   getch();
   closegraph();
   return 0;
}
...