C语言俄罗斯方块【有源码】

C语言练手小项目俄罗斯方块源码,需要的自取哦

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>


/* 管道句柄的定义 */
HANDLE hStdOutput = INVALID_HANDLE_VALUE;
HANDLE hStdError = INVALID_HANDLE_VALUE;

const WORD COLOR_A = FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_INTENSITY; /* 运动中的颜色 */
const WORD COLOR_B = FOREGROUND_GREEN; 									   /* 固定不动的颜色 */
const WORD COLOR_C = FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE;      /* 空白处的颜色 */
              
bool voice = true;  /* 背景音乐 */
int  score = 0;     /* 得分 */
int  level = 0;     /* 等级 */
char data[19][11] = { 0 };   	   /* 游戏窗口的状态 */
int  next = -1;  			 	   /* 记录下一个图形的随机信息 */
int  x = 4, y = -2, c = -1, z = 0; /* x坐标,坐标,当前方块,方向 */

/* 程序开始为句柄初始化 */
bool Open( void )
{
    hStdOutput = GetStdHandle( STD_OUTPUT_HANDLE );
    hStdError  = GetStdHandle( STD_ERROR_HANDLE );
    return INVALID_HANDLE_VALUE!=hStdOutput && INVALID_HANDLE_VALUE!=hStdError;
}

/* 设置标题 */
bool SetTitle( char* title ) 
{
    return TRUE==SetConsoleTitle(title);
}

/* 去处光标 */
bool RemoveCursor( void ) 
{
    CONSOLE_CURSOR_INFO cci; /* 光标信息 */
	/* 标准输出句柄获取信息出错就返回错误 */
    if( !GetConsoleCursorInfo( hStdOutput, &cci ) ) 
    {
        return false;
    }
    cci.bVisible = false;
	/* 标准输出句柄设置信息出错就返回错误 */
    if( !SetConsoleCursorInfo( hStdOutput, &cci ) ) 
    {
        return false;
    }
	/* 错误输出句柄获取信息出错就返回错误 */
    if( !GetConsoleCursorInfo( hStdError, &cci ) ) 
    {
        return false;
    }
    cci.bVisible = false;
	/* 错误输出句柄设置信息出错就返回错误 */
    if( !SetConsoleCursorInfo( hStdError, &cci ) ) 
    {
        return false;
    }
    return true;
}

 /* 设置窗体尺寸 */
bool SetWindowRect( short x, short y )
{
	/* 定义用于取得console程序的窗口大小的结构 */
	SMALL_RECT wrt = { 0, 0, x, y };
	/* 标准输出设置失败 */
    if( !SetConsoleWindowInfo( hStdOutput, TRUE, &wrt ) ) 
    {
        return false;
    }
	/* 错误输出设置失败 */
    if( !SetConsoleWindowInfo( hStdError, TRUE, &wrt ) ) 
    {
        return false;
    }
    return true;
}

/* 设置缓冲尺寸 */
bool SetBufSize( short x, short y ) 
{
	/* 定义用于获取坐标结构体 */
    COORD coord = { x, y };
	/* 设置标准输出失败 */
    if( !SetConsoleScreenBufferSize( hStdOutput, coord ) ) 
    {
        return false;
    }
	/* 设置错误输出失败 */
    if( !SetConsoleScreenBufferSize( hStdError, coord ) ) 
    {
        return false;
    }
    return true;
}

/* 移动光标 */
bool GotoXY( short x, short y )
{
	/* 定义用于获取坐标结构体 */
    COORD coord = { x, y };
	/* 设置标准输出鼠标位置失败 */
    if( !SetConsoleCursorPosition( hStdOutput, coord ) ) 
    {
        return false;
    }
	/* 设置错误输出鼠标位置失败 */
    if( !SetConsoleCursorPosition( hStdError, coord ) ) 
    {
        return false;
    }
    return true;
}

/* 设置前景色/背景色 */
bool SetColor( WORD color ) 
{
	/* 背景颜色标准输出失败 */
    if( !SetConsoleTextAttribute( hStdOutput, color ) ) 
    {
        return false;
    }
	/* 背景颜色错误输出失败 */
    if( !SetConsoleTextAttribute( hStdError, color ) ) 
    {
        return false;
    }
    return tr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值