C语言编写的俄罗斯方块 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

   

    Tc2.0中怎么样设置图形显示?

    Tc2.0中有两种显示模式,一种是我们所熟知的字符模式,另一种是图形模式,

C语言编写的俄罗斯方块

。在字符模式下只能显式字符,如ASCII字符。一般是显示25

    行,每行80个字符。程序缺省的是字符模式。在字符模式下不能显式图形和进行绘图操作。要想进行图形显示和绘图操作,必须切换到图形模

    式下。

    Tc2.0中用initgraph()函数可以切换到图形模式,用closegraph()可以从图形模式切换回字符模式。initgraph()和closegraph()都是图形

    函数,使用图形函数必须包括头文件graphics.h。

    void far initgraph(int far *graphdriver,int far *graphmode,char far *pathtodriver);graphdriver是上涨指向图形驱动序号变量的指针;graphmode是在graphdriver选定后,指向图形显示模式序号变量的指针。pathtodriver表示存放图形驱动文件的路径。

    Tc2.0中有多种图形驱动,每种图形驱动下又有几种图形显示模式。在我的程序中图形驱动序号为VGA,图形显示模式序号为VGAHI。这是一种分辨率为640*480(从左到右坐标依次为0-639,从上到下坐标依次为0-479),能够显示16种颜色的图形模式。别的图形驱动序号和图形显示模式序号,可以从手册或联机帮助中找到。

    pathtodriver指示存放图形驱动文件的路径。图形驱动序号不同,图形驱动文件也不同。序号为VGA图形驱动对应egavga.bgi这个图形驱动文件。egavga.bgi一般在Tc目录下。

    void far closegraph(void);

    没有参数,从图形模式直接返回字符模式。

    initgraph()和closegraph()的常用用法如下:

    int gdriver = VGA, gmode=VGAHI, errorcode;

    /* initialize graphics mode */

    initgraph(&gdriver, &gmode, e:tc2);

    /* read result of initialization */

    errorcode = graphresult();

    if (errorcode != grOk) /* an error occurred */

    {

    printf(Graphics error: %sn, grapherrormsg(errorcode));

    printf(Press any key to halt:);

    getch();

    exit(1); /* return with error code */

    }

    /* return to text mode */

    closegraph();

    Tc2.0中常用图形函数的用法?

    在这里讲几个游戏中用到的绘图用的图形函数:

    setcolor();

    line();

    rectangle();

    settextjustify();

    outtextxy();

    setfillstyle();

    bar();

    void far setcolor(int color);

    设置画线、画框和在图形模式下显示文字的当前颜色。这个函数将影响line()、rectangle()和outtextxy()函数绘图的颜色。

    color可以取常的颜色常量:

    BLACK ? 0

    BLUE ? 1

    GREEN ? 2

    CYAN ? 3

    RED ? 4

    MAGENTA ? 5

    BROWN ? 6

    LIGHTGRAY ? 7

    DARKGRAY ? 8

    LIGHTBLUE ? 9

    LIGHTGREEN ?10

    LIGHTCYAN ?11

    LIGHTRED ?12

    LIGHTMAGENTA ?13

    YELLOW ?14

    WHITE ?15

    void far line(int x1,int y1,int x2,int y2);

    用当前颜色从(x1,y1)画一条到(x2,y2)的线段,

电脑资料

C语言编写的俄罗斯方块》(https://www.unjs.com)。

    void far rectangle(int left,int top,int right,int bottom);

    用当前颜色画一个左上角为(left,top)、右下角为(right,bottom)的矩形框。

    void far settextjustify(int horz,int vert);

    设置图形模式下文字输出的对齐方式。主要影响outtextxy()函数。

    horiz和vert可取如下枚举常量:

    horiz ?LEFT_TEXT ? 0 ?Left-justify text

    ?CENTER_TEXT ? 1 ?Center text

    ?RIGHT_TEXT ? 2 ?Right-justify text

    vert ?BOTTOM_TEXT ? 0 ?Justify from bottom

    ?CENTER_TEXT ? 1 ?Center text

    ?TOP_TEXT ? 2 ?Justify from top

    void far outtextxy(int x,int y,char * textstring);

    在(x,y)处用当前字体(缺省的字体是DEFAULT_FONT)显示字符串textstring,字符串的对齐方式由settextjustify()指定。

    void far setfillstyle(int pattern,int color);

    设置图形的填充模式和填充颜色,主要影响bar()等函数。

    pattern一般取枚举常量值SOLID_FILL,color的取值与setcolor(int color)中color的取值范围相同。

    介绍完了前面两个问题,现在来写一个程序。这个程序演示前了面所介绍的几个图形函数。

    程序prog1.c

    怎样获取鍵盘输入?

    在Tc2.0中有一个处理键盘输入的函数bioskey();

    int bioskey(int cmd);

    当cmd为1时,bioskey()检测是否有键按下。没有键按下时返回0;有键按下时返回按键码(任何按键码都不为0),但此时并不将检测到的按

    键码从键盘缓冲队列中清除。

    当cmd为0时,bioskey()返回键盘缓冲队列中的按键码,并将此按键码从键盘缓冲队列中清除。如果键盘缓冲队列为空,则一直等到有键按

    下,才将得到的按键码返回。

    Escape键的按键码为0x11b,下面的小程序可以获取按键的按键码。

    for (;;)

    {

    key=bioskey(0); /* wait for a keystroke */

    printf(0x%xn,key);

    if (key==0x11b) break; /* Escape */

    }

    常用按键的按键码如下:

    #define VK_LEFT 0x4b00

    #define VK_RIGHT 0x4d00

    #define VK_DOWN 0x5000

    #define VK_UP 0x4800

    #define VK_HOME 0x4700

    #define VK_END 0x4f00

    #define VK_SPACE 0x3920

    #define VK_ESC 0x011b

    #define VK_ENTER 0x1c0d

    完整的程序请参见prog2.c、prog3.c。

    prog2.c获取按键的按键码,按Escape键退出程序。

    prog3.c根据不同的按键进行不同的操作,按Escape键退出程序。

    怎样控制方块的移动?

    方块移动的实现很简单,将方块原来的位置用背景色画一个同样大小的方块,将原来的方块涂去。然后在新的位置上重新绘制方块就可以

最新文章