📜  使用计算机图形设计 Ludo 板

📅  最后修改于: 2022-05-13 01:57:39.470000             🧑  作者: Mango

使用计算机图形设计 Ludo 板

在 Turbo C 图形中, graphics.h函数用于绘制不同的形状,如圆形、矩形等,以不同的格式(不同的字体和颜色)显示文本(任何消息)。通过使用 graphics.h,我们可以制作程序、动画和游戏。这些对初学者很有用。

使用的函数:

  • rectangle(l, t, r, b) graphics.h 头文件中的一个函数,它从左(l)到右(r)和从上(t)到下(b)绘制一个矩形。
  • line(a1, b1, a2, b2) : graphics.h 头文件中的一个函数,它从 (a1, b1) 点到 (a2, b2) 点绘制一条线。
  • circle(a, b, r) : graphics.h 头文件中的一个函数,它以 (a, b) 为中心,以 r 为半径绘制一个圆。
  • outtextxy(int x, int y, char * 字符串) : graphics.h 头文件中的一个函数,我们可以通过它打印任何语句,其中 x, y 是点的坐标,第三个参数包含字符串的地址要显示。
  • settextstyle(int font, int direction, int font_size) : graphics.h 头文件中的一个函数,我们可以通过它制作可打印文本的样式,其中字体参数指定文本的字体。方向可以是 HORIZ_DIR(从左到右)或 VERT_DIR(从下到上)。
  • setfillstyle(pattern, color) : graphics.h 头文件中的一个函数,我们可以通过它给出绘图模式和特定颜色。
  • floodfill(a, b, c) : graphics.h 头文件中的一个函数,我们可以通过它为特定的有界区域着色,以 (a, b) 为中心,c 为边框颜色。

方法:

  • 在这个程序中,定义了九个函数:
    • 红角()
    • 蓝角()
    • 绿角()
    • 黄色角()
    • 家()
    • line_red_blue()
    • line_green_yellow()
    • line_red_green()
    • line_yellow_blue()
  • 第一步是使用 setfillstyle() 和 floodfill()函数将背景颜色设置为深灰色。
  • 使用 rectangle()函数制作两个矩形。在它们之间,一个充当外轮廓,另一个充当内轮廓。在外部和内部轮廓之间的空间中填充黑色。
  • 调用 red_corner()函数。使用 rectangle()函数定义了两个矩形。在它们之间,一个是外部矩形,另一个是内部矩形。外部矩形之间的空间用红色着色,内部矩形之间的空间用白色着色。使用 circle()函数创建四个圆圈,所有圆圈都将被涂成红色。所有的着色都将通过使用 setfillstyle() 和 floodfill() 函数来实现。
  • 下一步是依次调用 blue_corner()、green_corner()、yellow_corner() 函数。
  • 在 blue_corner()、green_corner()、yellow_corner() 函数中也必须做同样的事情。但是在 blue_corner()函数中使用蓝色,在 green_corner()函数中使用绿色,在 Yellow_corner()函数中使用黄色。使用 setfillstyle() 和 floodfill() 函数填充颜色。
  • 下一步是调用 home()函数。在此函数中,使用 rectangle()函数实现了两个矩形。其中,一个是外矩形,另一个是内矩形。内部矩形是黑色的。使用 outtextxy()、settextstyle() 打印HOME
  • 调用 line_red_blue()函数。该函数将使用 line()函数绘制线条。红色和蓝色角之间的空间被分成相同的距离线。这里将实现一个while循环来轻松绘制线条。此外,在这个 while 循环中,红色的代码将在该空间的中间实现。此外,需要使用红色创建起点,并使用白色的 circle()函数创建一个圆圈。创建了一个星点,它也可以在真正的 Ludo 板上找到。这也是由 circle()函数实现的,并将其着色为白色。在此函数中,使用红色在 Home 空间中进行装饰。所有的颜色都是由 setfillstyle() 和 floodfill() 函数实现的。
  • 依次调用 line_green_yellow()、line_red_green()、line_yellow_blue()。
  • line_green_yellow()、line_red_green()、line_yellow_blue() 函数中也需要做同样的事情。但是在 line_yellow_blue() 中使用蓝色,在 line_red_green() 中使用绿色,在 line_green_yellow() 中使用黄色。使用 setfillstyle() 和 floodfill() 函数填充颜色。

下面是实现上述方法的 C 程序:

C
// C program to implement
// the above approach
#include 
#include 
#include 
 
// Declaring Function used
// in this program
void red_corner();
void blue_corner();
void green_corner();
void yellow_corner();
void home();
void line_red_blue();
void line_green_yellow();
void line_red_green();
void line_yellow_blue();
 
// Driver Code
void main()
{
    int gd = DETECT, gm;
 
    // Initialize of gdriver with
    // DETECT macros
    initgraph(&gd, &gm, "C:\\turboc3\\bgi");
 
    // Set Background Color
    setfillstyle(SOLID_FILL, DARKGRAY);
    floodfill(5, 5, 15);
 
    // Main Outer Outline
    rectangle(500, 200, 1250, 950);
 
    // Main Inner Outline
    rectangle(480, 180, 1270, 970);
 
    // Coloring The Middle Space
    setfillstyle(SOLID_FILL, BLACK);
    floodfill(485, 185, 15);
 
    // Calling red_corner() Function
    red_corner();
 
    // Calling blue_corner() Function
    blue_corner();
 
    // Calling green_corner() Function
    green_corner();
 
    // Calling yellow_corner() Function
    yellow_corner();
 
    // Calling home() Function
    home();
 
    // Calling line_red_blue() Function
    line_red_blue();
 
    // Calling line_green_yellow() Function
    line_green_yellow();
 
    // Calling line_red_green() Function
    line_red_green();
 
    // Calling line_yellow_blue() Function
    line_yellow_blue();
 
    // Holding The Screen For A While
    getch();
 
    // Close the initialized gdriver
    closegraph();
}
 
void line_yellow_blue()
{
    int x = 950;
 
    // Vertical Divisions
    line(950, 600, 1250, 600);
    line(950, 550, 1250, 550);
 
    // Loop for creating horizontal
    // line and coloring
    while (x < 1250) {
        line(x, 500, x, 650);
        setfillstyle(SOLID_FILL, BLUE);
        floodfill(x + 2, 555, 15);
        x = x + 50;
    }
 
    setfillstyle(SOLID_FILL, DARKGRAY);
    floodfill(1240, 555, 15);
 
    // Start Point
    setfillstyle(SOLID_FILL, BLUE);
    floodfill(1195, 605, 15);
    circle(1175, 625, 10);
    setfillstyle(SOLID_FILL, WHITE);
    floodfill(1180, 630, 15);
 
    // Star Point
    circle(1125, 525, 10);
    setfillstyle(SOLID_FILL, WHITE);
    floodfill(1130, 530, 15);
 
    // Home Decoration
    line(950, 650, 910, 600);
    line(950, 500, 910, 550);
    setfillstyle(SOLID_FILL, BLUE);
    floodfill(925, 575, 15);
}
 
void line_red_green()
{
    int x = 500;
 
    // Vertical Divisions
    line(500, 600, 800, 600);
    line(500, 550, 800, 550);
 
    // Loop for creating horizontal
    // line and coloring
    while (x < 800) {
        line(x, 500, x, 650);
        setfillstyle(SOLID_FILL, GREEN);
        floodfill(x + 2, 555, 15);
        x = x + 50;
    }
 
    setfillstyle(SOLID_FILL, DARKGRAY);
    floodfill(505, 555, 15);
 
    // Start Point
    setfillstyle(SOLID_FILL, GREEN);
    floodfill(555, 505, 15);
    circle(575, 525, 10);
    setfillstyle(SOLID_FILL, WHITE);
    floodfill(580, 530, 15);
 
    // Star Point
    circle(625, 625, 10);
    setfillstyle(SOLID_FILL, WHITE);
    floodfill(630, 630, 15);
 
    // Home Decoration
    line(800, 500, 840, 550);
    line(800, 650, 840, 600);
    setfillstyle(SOLID_FILL, GREEN);
    floodfill(810, 575, 15);
}
 
void line_red_blue()
{
    int x = 650;
 
    // Vertical Divisions
    line(850, 650, 850, 950);
    line(900, 650, 900, 950);
 
    // Loop for creating horizontal
    // line and coloring
    while (x <= 900) {
        line(800, x, 950, x);
        setfillstyle(SOLID_FILL, RED);
        floodfill(855, x + 2, 15);
        x = x + 50;
    }
 
    setfillstyle(SOLID_FILL, DARKGRAY);
    floodfill(855, 940, 15);
 
    // Start point
    setfillstyle(SOLID_FILL, RED);
    floodfill(805, 895, 15);
    circle(825, 875, 10);
    setfillstyle(SOLID_FILL, WHITE);
    floodfill(830, 880, 15);
 
    // Star Point
    circle(925, 825, 10);
    setfillstyle(SOLID_FILL, WHITE);
    floodfill(930, 830, 15);
 
    // Home Decoration
    line(800, 650, 840, 600);
    line(950, 650, 910, 600);
    setfillstyle(SOLID_FILL, RED);
    floodfill(885, 615, 15);
}
 
void line_green_yellow()
{
    int x = 200;
 
    // Vertical Divisions
    line(850, 200, 850, 500);
    line(900, 200, 900, 500);
 
    // Loop for creating horizontal
    // line and coloring
    while (x < 500) {
        line(800, x, 950, x);
        setfillstyle(SOLID_FILL, YELLOW);
        floodfill(855, x + 2, 15);
        x = x + 50;
    }
 
    setfillstyle(SOLID_FILL, DARKGRAY);
    floodfill(855, 205, 15);
 
    // Start Point
    setfillstyle(SOLID_FILL, YELLOW);
    floodfill(905, 255, 15);
    circle(925, 275, 10);
    setfillstyle(SOLID_FILL, WHITE);
    floodfill(930, 280, 15);
    // Star Point
    circle(825, 325, 10);
    setfillstyle(SOLID_FILL, WHITE);
    floodfill(830, 330, 15);
 
    // Home Decoration
    line(800, 500, 840, 550);
    line(950, 500, 910, 550);
    setfillstyle(SOLID_FILL, YELLOW);
    floodfill(885, 545, 15);
}
 
void red_corner()
{
    // Outer Line
    rectangle(500, 650, 800, 950);
 
    // Inner Line
    rectangle(550, 700, 750, 900);
 
    // Circles
    circle(600, 750, 30);
    circle(700, 750, 30);
    circle(600, 850, 30);
    circle(700, 850, 30);
    setfillstyle(SOLID_FILL, RED);
 
    // Rectangle Red
    floodfill(505, 655, 15);
 
    // Circle Red
    floodfill(615, 765, 15);
    floodfill(715, 765, 15);
    floodfill(615, 865, 15);
    floodfill(715, 865, 15);
    setfillstyle(SOLID_FILL, WHITE);
    floodfill(555, 705, 15);
}
 
void blue_corner()
{
    // Outer Line
    rectangle(950, 650, 1250, 950);
 
    // Inner Line
    rectangle(1000, 700, 1200, 900);
 
    // Circles
    circle(1050, 750, 30);
    circle(1150, 750, 30);
    circle(1050, 850, 30);
    circle(1150, 850, 30);
    setfillstyle(SOLID_FILL, BLUE);
 
    // Rectangle Blue
    floodfill(955, 655, 15);
 
    // Circle Blue
    floodfill(1065, 765, 15);
    floodfill(1165, 765, 15);
    floodfill(1065, 865, 15);
    floodfill(1165, 865, 15);
    setfillstyle(SOLID_FILL, WHITE);
    floodfill(1005, 705, 15);
}
 
void green_corner()
{
    // Outer Line
    rectangle(500, 200, 800, 500);
 
    // Inner Line
    rectangle(550, 250, 750, 450);
 
    // Circles
    circle(600, 300, 30);
    circle(700, 300, 30);
    circle(600, 400, 30);
    circle(700, 400, 30);
    setfillstyle(SOLID_FILL, GREEN);
 
    // Rectangle Green
    floodfill(505, 215, 15);
 
    // Circle Green
    floodfill(615, 315, 15);
    floodfill(715, 315, 15);
    floodfill(615, 415, 15);
    floodfill(715, 415, 15);
    setfillstyle(SOLID_FILL, WHITE);
    floodfill(555, 255, 15);
}
 
void yellow_corner()
{
    // Outer Line
    rectangle(950, 200, 1250, 500);
 
    // Inner Line
    rectangle(1000, 250, 1200, 450);
 
    // Circles
    circle(1050, 300, 30);
    circle(1150, 300, 30);
    circle(1050, 400, 30);
    circle(1150, 400, 30);
    setfillstyle(SOLID_FILL, YELLOW);
 
    // Rectangle Yellow
    floodfill(955, 215, 15);
 
    // Circle Yellow
    floodfill(1065, 315, 15);
    floodfill(1165, 315, 15);
    floodfill(1065, 415, 15);
    floodfill(1165, 415, 15);
    setfillstyle(SOLID_FILL, WHITE);
    floodfill(1005, 255, 15);
}
 
void home()
{
    // Outer Line
    rectangle(800, 500, 950, 650);
 
    // Inner Line
    rectangle(840, 550, 910, 600);
 
    // Coloring Middle Space Black
    setfillstyle(SOLID_FILL, BLACK);
    floodfill(860, 595, 15);
 
    // Printing The Text 'HOME'
    settextstyle(8, 0, 3);
    outtextxy(848, 560, "HOME");
}


输出:

卢多板

卢多板