📜  使用计算机图形创建键盘移动程序

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

使用计算机图形创建键盘移动程序

在 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);
}


输出:

键盘手机