关于C语言大作业的一些提示和一些C语言的库函数

1、俄罗斯方块的基本方块由以下7种组成(也可以自行增加种类),可使用一个三维的数组来表示这七种基础方块。
关于C语言大作业的一些提示和一些C语言的库函数_第1张图片

2、#include “time.h”
库是C/C++中的日期和时间头文件。用于需要时间方面的函数。
用于生成随机数。
srand函数随机数发生器的初始化函数,
使用的时候用rand()%i函数获得0~i-1之间的随机数,其中i为整数
一般初始化代码如下:

#include "time.h"
/*初始化随机数的发生器*/
srand(time(0));
/*输出随机数,比如输出0-99之间的随机数 */
printf("%d\n", rand() % 100);

在俄罗斯方块大作业中,随机数可以用来随机输出一个基础的方块。

3、#include “windows.h” --------------Windows编程介绍
句柄: HANDLE
句柄是整个Windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是指针,程序不能利用句柄来直接阅读文件中的信息。如果句柄不在I/O文件中,它是毫无用处的。 句柄是Windows用来标志应用程序中建立的或是使用的唯一整数,Windows大量使用了句柄来标识对象。因此在Windows编程中,句柄通常通过GetStdHandle函数初始化。
GetStdHandle函数是一个Windows API函数。它用于从一个特定的标准设备(标准输入、标准输出或标准错误)中取得一个句柄(用来标识不同设备的数值)。可以嵌套使用。

在俄罗斯方块问题中,句柄用于设置光标的位置。

与光标操作相关的函数和变量类型如下:

(1) COORD 变量是Windows API定义的一种结构,表示一个字符在控制台屏幕上的坐标。其定义为:

typedef struct _COORD {
SHORT X; // horizontal coordinate
SHORT Y; // vertical coordinate
} COORD;

(2) SetConsoleCursorPosition(g_hOutput, cd);用于控制光标的位置

(3) SetConsoleTextAttribute(g_hOutput, WORD wAttributes); 用于控制输出字体的颜色,

(4)CONSOLE_CURSOR_INFO cursor_info 用于控制光标的可见度和厚度

以下函数可用于帮助设置光标的位置以及初始化句柄:

#include "windows.h"
HANDLE g_hOutput = GetStdHandle(STD_OUTPUT_HANDLE); // 初始化句柄
 SetConsoleTextAttribute(hOut,FOREGROUND_RED|FOREGROUND_GREEN);// 控制输出的颜色
void SetCursor0(COORD cd)
{
    SetConsoleCursorPosition(g_hOutput, cd);	//设置光标的位置
}
void SetCursor(int x, int y)
{
    COORD cd = {x, y};
    SetCursor0(cd);
}

通过SetCursor函数可以控制光标的位置,从而设计游戏的窗体以及输出的得分、等级等

示例代码如下:

#include
#include
int main()
{
    HANDLE hOut;
    COORD pos={0,0};
    int i;
    
    hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hOut,FOREGROUND_RED|FOREGROUND_GREEN);//控制输出的颜色
    for(i=0;i<20;i++)
    {
	    pos.X=i;
	    pos.Y=i;
	    SetConsoleCursorPosition(hOut,pos);//控制输出的位置
	     
	    printf("%d%d:HelloWorld!\n",pos.X,pos.Y);
	    getchar();
    }
    return 0;
}

4、控制方块下降的速度

俄罗斯方块问题实现方块下降的方法通常是将之前的方块清除,并在下方一格生成相同的方块。通过time.h的clock()函数来控制方块停留的时间。

5、通过键盘控制方块移动和旋转

GetAsyncKeyState(int nVirtKey):确定用户当前是否按下了键盘上的一个键的函数。如果按下,则返回一个True值

GetAsyncKeyState(VK_UP):通过键盘的“上”键控制,如果按下“上”键,则返回值最高位为1
GetAsyncKeyState(VK_DOWN):通过键盘的“下”键控制,如果按下“下”键,则返回值最高位为1
GetAsyncKeyState(VK_LEFT):通过键盘的“左”键控制,如果按下“左”键,则返回值最高位为1
GetAsyncKeyState(VK_RIGHT):通过键盘的“右”键控制,如果按下“右”键,则返回值最高位为1
GetAsyncKeyState(VK_SPACE):通过键盘的“空格”键控制,如果按下“空格”键,则返回值最高位为1

if (GetAsyncKeyState(VK_UP))		// 当按下键盘上“上”键时,GetAsyncKeyState(VK_UP)==1 ,执行下一步操作
{
	cubeRotate();
}

你可能感兴趣的:(关于C语言大作业的一些提示和一些C语言的库函数)