使用计算机图形创建键盘移动程序
在 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 是半径。
- setfillstyle(pattern, color): graphics.h 头文件中的一个函数,通过它可以给出绘图模式和特定颜色。
- floodfill(a, b, c): graphics.h 头文件中的一个函数,通过它可以以 (a, b) 为中心,c 为边框颜色为特定的有界区域着色。
- outtextxy(int x, int y, char * 字符串): graphics.h 头文件中的一个函数,通过它可以打印任何语句,其中 x,y 是点的坐标,第三个参数包含要显示的字符串的地址。
- settextstyle(int font, int direction, int font_size): graphics.h 头文件中的一个函数,通过该函数可以创建可打印文本的样式,其中字体参数指定文本的字体。方向可以是 HORIZ_DIR(从左到右)或 VERT_DIR(从下到上)。
方法:
- 定义了四个函数menu_key()、others()、key()、screen()。
- 使用 setfillstyle() 和 floodfill() 函数将背景颜色设为深灰色。
- 下一步是使用 rectangle()函数实现一个矩形,它将充当移动设备的轮廓。
- 使用 setfillstyle() 和 floodfill() 函数将轮廓内的颜色设置为黑色。那将是手机的颜色。
- 调用 screen()函数并使用 rectangle()函数制作屏幕轮廓。将印度国旗实现为手机的屏幕保护程序。印度国旗也由计算机图形学实现。
- 调用 others()函数。此函数中实现了一些手机配件,如扬声器、自拍相机、麦克风和手机品牌名称。
- 扬声器将通过使用 rectangle()函数来实现,对于白色,使用 setfillstyle() 和 floodfill() 函数。自拍相机是通过使用 circle()函数实现的两个连接圆来实现的。使用 setfillstyle() 和 floodfill() 函数将其着色为白色。
- 麦克风由 circle()函数实现的单个圆实现。此外,使用 setfillstyle() 和 floodfill() 函数将其着色为白色。移动品牌名称由 outtextxy() 和 settextstyle() 函数实现。
- 调用 menu_key()函数来实现菜单键。主菜单键由 rectangle()函数实现的两个连接的矩形实现。使用 setfillstyle() 和 floodfill()函数将此矩形着色为白色。使用 rectangle()函数实现四个键。其中,两个将使用 setfillstyle() 和 floodfill() 函数进行白色装饰,另外两个是呼叫接收和拒绝键。使用 setfillstyle() 和 floodfill() 函数,来电接收键为绿色,而呼叫拒绝键为红色。
- 调用 key()函数来实现其他键。在手机上,有 12 个键。他们每个人都有不同的名字和工作。因此,这里实现了两个嵌套的 while 循环,总共将创建 12 个键,每 4 行中 3 个键。
- 执行 if 语句以打印键的数量。使用 outtextxy() 和 settextstyle() 将数字打印在屏幕上。
下面是上述方法的实现:
C
// C program for the
// above approach
#include
#include
#include
// Used Function Declaration
void menu_key();
void others();
void key();
void screen();
// Driver Code
void main()
{
int gd = DETECT, gm;
// Initialize of gdriver with
// DETECT macros
initgraph(&gd, &gm,
"C:\\turboc3\\bgi");
// Set Background Color As
// Darkgray
setfillstyle(SOLID_FILL,
DARKGRAY);
floodfill(1, 1, 15);
// Main Outline
rectangle(800, 100, 1100, 730);
// Set Phone Color AS Black
setfillstyle(SOLID_FILL, BLACK);
floodfill(805, 105, 15);
// Calling screen() Function
screen();
// Calling others() Function
others();
// Calling menu_key() Function
menu_key();
// Calling key() Function
key();
// Holding The Screen For
// A While
getch();
// Close the initialized
// gdriver
closegraph();
}
void screen()
{
// Screen Outline
rectangle(830, 130, 1070, 370);
// Screen Saver Indian Flag
rectangle(900, 170, 1000, 230);
line(900, 190, 1000, 190);
setfillstyle(SOLID_FILL,
LIGHTRED);
floodfill(905, 175, 15);
circle(950, 200, 10);
setfillstyle(SOLID_FILL, BLUE);
floodfill(955, 205, 15);
line(900, 190, 1000, 190);
line(900, 210, 1000, 210);
setfillstyle(SOLID_FILL, WHITE);
floodfill(905, 195, 15);
floodfill(995, 195, 15);
line(900, 210, 1000, 210);
setfillstyle(SOLID_FILL, GREEN);
floodfill(905, 215, 15);
line(900, 170, 900, 320);
rectangle(880, 320, 920, 330);
setfillstyle(SOLID_FILL, WHITE);
floodfill(885, 325, 15);
}
void key()
{
int l = 820, t = 500, i = 1;
// Implementing 12 Others Key
// and
// Numbering Them
while (t <= 650) {
while (l <= 1020) {
rectangle(l, t, l + 70,
t + 40);
if (i == 1) {
settextstyle(8, 0, 2);
outtextxy(l + 5, t + 5,
"1 ., ?");
}
else if (i == 2) {
settextstyle(8, 0, 2);
outtextxy(l + 5, t + 5,
"2 ABC");
}
else if (i == 3) {
settextstyle(8, 0, 2);
outtextxy(l + 5, t + 5,
"3 DEF");
}
else if (i == 4) {
settextstyle(8, 0, 2);
outtextxy(l + 5, t + 5,
"4 GHI");
}
else if (i == 5) {
settextstyle(8, 0, 2);
outtextxy(l + 5, t + 5,
"5 JKL");
}
else if (i == 6) {
settextstyle(8, 0, 2);
outtextxy(l + 5, t + 5,
"6 MNO");
}
else if (i == 7) {
settextstyle(8, 0, 2);
outtextxy(l + 5, t + 5,
"7PQRS");
}
else if (i == 8) {
settextstyle(8, 0, 2);
outtextxy(l + 5, t + 5,
"8 TUV");
}
else if (i == 9) {
settextstyle(8, 0, 2);
outtextxy(l + 5, t + 5,
"9WXYZ");
}
else if (i == 10) {
settextstyle(8, 0, 2);
outtextxy(l + 5, t + 5,
"* +");
}
else if (i == 11) {
settextstyle(8, 0, 2);
outtextxy(l + 5, t + 5,
"0 _");
}
else if (i == 12) {
settextstyle(8, 0, 2);
outtextxy(l + 5, t + 5,
"# x");
}
i++;
l = l + 100;
}
t = t + 50;
l = 820;
}
}
void others()
{
setfillstyle(SOLID_FILL,
WHITE);
// Implement Microphone
circle(900, 710, 5);
floodfill(902, 712, 15);
// Implement Selfie Camera
circle(1030, 115, 8);
circle(1030, 115, 4);
floodfill(1031, 116, 15);
// Implement Speaker
rectangle(900, 110, 1000, 120);
setfillstyle(XHATCH_FILL, WHITE);
floodfill(905, 115, 15);
// Implement Mobile Brand Name
settextstyle(8, 0, 3);
outtextxy(895, 375, "SOUNETRA");
// Division Between
// Screen and Keys
line(800, 400, 1100, 400);
}
void menu_key()
{
setfillstyle(SOLID_FILL, WHITE);
// Menu Key
rectangle(930, 420, 980, 470);
rectangle(920, 410, 990, 480);
settextstyle(10, 0, 3);
outtextxy(940, 430, "OK");
floodfill(925, 415, 15);
// Left Upper Bottom
rectangle(820, 410, 890, 440);
rectangle(830, 420, 880, 430);
floodfill(835, 425, 15);
// Right Upper Bottom
rectangle(1020, 410, 1090, 440);
rectangle(1030, 420, 1080, 430);
floodfill(1035, 425, 15);
// Left Lower Bottom
rectangle(820, 450, 890, 480);
setfillstyle(SOLID_FILL, GREEN);
floodfill(825, 455, 15);
// Right Lower Bottom
rectangle(1020, 450, 1090, 480);
setfillstyle(SOLID_FILL, RED);
floodfill(1025, 455, 15);
}
输出: