C 程序显示一个人在雨中行走
在 Turbo C 图形中, graphics.h函数用于绘制不同的形状(如圆形、矩形等),并以不同的格式(不同的字体和颜色)显示文本(任何消息)。通过使用 graphics.h 可以设计程序、动画和游戏。这些对初学者很有用。
这个程序演示了一个人如何撑着雨伞在雨中行走,当按下一个键时,雨停了,天空中出现了彩虹。
头文件:
包含头文件 stdio.h、conio.h 和 graphics.h 是因为程序中使用了这些文件中定义的函数。 #define 命令用于定义整个程序中使用的一些重要元素。
使用的功能:
- getmaxx():graphics.h 头文件包含 getmaxx()函数,该函数返回当前图形模式和驱动程序的最大 X 坐标。
- getmaxy():函数getmaxy() 返回当前图形模式和驱动程序的最大 Y 坐标。
- setcolor():setcolor()函数将当前绘图颜色设置为新颜色。
- rectangle():rectangle() 绘制一个矩形。要绘制矩形,您需要左上角和右下角的坐标。左坐标指定左上角的X坐标,上坐标指定左上角的Y坐标,右坐标指定右下角的X坐标,下坐标指定Y-右下角的坐标。
- line():line()函数从点(x1,y1)到点(x2,y2)画一条线,即(x1,y1)和(x2,y2)是线的端点。
- setfillstyle() 和 floodfill():在 graphics.h 中,setfillstyle() 设置当前的填充图案和填充颜色。 floodfill() 填充封闭区域。
- circle():图形。 h 头文件包含函数circle() 绘制一个圆心在 (x, y) 和给定半径的圆。
- pieslice():此函数绘制并填充一个具有给定半径 r 和中心在 (x, y) 的饼图。切片分别从 s_angle 和 e_angle 开始和结束。
- rand():rand()函数在 C 中用于生成随机数。如果我们生成一个随机数序列。每次程序运行时,rand()函数都会一次又一次地创建相同的序列。
- delay():延迟函数将程序的执行暂停一段指定的时间。
- arc():头文件 graphics.h 包含 arc()函数,该函数以 (x, y) 为中心和给定半径绘制圆弧。
- getch():getch()函数保存程序的输出。
- kbhit():判断一个键是否被按下。包含头文件“conio. h”在你的程序中使用它。
自定义函数:
- 小屋():创建一个小屋。
- DrawManAndUmbrella():创建一个拿着雨伞的人。
- Rain():创建降雨。
- Rainbow():创建彩虹。
方法:
在这个程序中,我们将用小屋、阳光和降雨来创造风景。在这片风景中,一个男人撑着伞,穿过地面。按下一个键,雨就停了,彩虹出现了。
- Ground Level :要创建地线,我们将首先使用 GroundY ScreenHeight 来定义地平面。
- 小屋:小屋是为了风景而建造的。对于基础和屋顶,将使用矩形和线条。小屋将是五颜六色的。
- 人和伞:建造一个拿着伞的人。一个圆圈构成了男人的头部,线条构成了他的身体。代表腿的线条具有可变坐标,因此看起来好像人在地上行走。使用 pieslice函数,我们将创建伞的主体和棍子的线条。
- Rain :使用 rand()函数创建下雨以生成随机像素并创建细线以创建下雨效果
- 圆圈:要在左上角创建一个太阳,我们将使用一个圆圈。
- 彩虹:使用圆弧函数在左上角创建彩虹。延迟函数给它一个动画。
- 降雨一直持续到按下任意键为止。
- 按下某个键时会出现彩虹。
下面是实现上述方法的 C 程序:
C
// C program to implement
// the above approach
#include
#include
#include
#define ScreenWidth getmaxx()
#define ScreenHeight getmaxy()
#define GroundY ScreenHeight * 0.75
int ldisp = 0;
// Creating a hut
void hut()
{
setcolor(WHITE);
rectangle(150, 180, 250, 300);
rectangle(250, 180, 420, 300);
rectangle(180, 250, 220, 300);
line(200, 100, 150, 180);
line(200, 100, 250, 180);
line(200, 100, 370, 100);
line(370, 100, 420, 180);
setfillstyle(SOLID_FILL, BROWN);
floodfill(152, 182, WHITE);
floodfill(252, 182, WHITE);
setfillstyle(SLASH_FILL, BLUE);
floodfill(182, 252, WHITE);
setfillstyle(HATCH_FILL, GREEN);
floodfill(200, 105, WHITE);
floodfill(210, 105, WHITE);
}
// Drawing a Man with
// an umbrella
void DrawManAndUmbrella(int x,
int ldisp)
{
circle(x, GroundY - 90, 10);
line(x, GroundY - 80, x,
GroundY - 30);
line(x, GroundY - 70,
x + 10, GroundY - 60);
line(x, GroundY - 65, x + 10,
GroundY - 55);
line(x + 10, GroundY - 60,
x + 20, GroundY - 70);
line(x + 10, GroundY - 55,
x + 20, GroundY - 70);
line(x, GroundY - 30,
x + ldisp, GroundY);
line(x, GroundY - 30,
x - ldisp, GroundY);
pieslice(x + 20, GroundY - 120,
0, 180, 40);
line(x + 20, GroundY - 120,
x + 20, GroundY - 70);
}
// Creating the Rainfall
void Rain(int x)
{
int i, rx, ry;
for (i = 0; i < 400; i++)
{
rx = rand() % ScreenWidth;
ry = rand() % ScreenHeight;
if (ry < GroundY - 4)
{
if (ry < GroundY - 120 ||
(ry > GroundY - 120 &&
(rx < x - 20 ||
rx > x + 60)))
line(rx, ry,
rx + 0.5, ry + 4);
}
}
}
// Creating the rainbow
void rainbow()
{
int x, y, i;
circle(ScreenWidth - 100,
50, 30);
setfillstyle(SOLID_FILL,
YELLOW);
floodfill(ScreenWidth - 100,
50, WHITE);
ldisp = (ldisp + 2) % 20;
DrawManAndUmbrella(x, ldisp);
hut();
x = getmaxx() / 5;
y = getmaxy() / 5;
for (i = 30; i < 100; i++)
{
// for animation
delay(50);
setcolor(i / 10);
arc(x, y, 0, 180, i - 10);
}
getch();
}
// Driver code
void main()
{
int gd = DETECT, gm, x = 0;
initgraph(&gd, &gm,
"C:\\TurboC3\\BGI");
// executes till any key
// is pressed
while (!kbhit())
{
hut();
circle(ScreenWidth - 100,
50, 30);
setfillstyle(SOLID_FILL,
YELLOW);
floodfill(ScreenWidth - 100,
50, WHITE);
line(0, GroundY, ScreenWidth,
GroundY);
Rain(x);
ldisp = (ldisp + 2) % 20;
DrawManAndUmbrella(x, ldisp);
delay(20);
cleardevice();
x = (x + 2) % ScreenWidth;
}
// if the key is pressed the
// rain stops, rainbow appears
ldisp = (ldisp + 2) % 20;
DrawManAndUmbrella(x, ldisp);
rainbow();
getch();
}
运行此程序的步骤:
步骤 1:转到 C:\TURBOC3\BIN 并将风景.c 文件移至此处。
第 2 步:打开 Turbo C++。
第 3 步:单击文件并打开文件。您将在列表中看到风景.c 文件。
第 4 步:选择文件并按打开以在 Turbo C++ 中打开风景.c 文件。
第 5 步:单击运行以运行图形程序。
输出:观察一个拿着雨伞的男子在雨中行走,风景中有一间小屋和一个太阳。
按下一个键,雨就停了,彩虹出现了。