使用计算机图形设计 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");
}
输出: