欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

Linux下俄罗斯方块程序设计(c++)

来源:本站整理 作者:佚名 时间:2016-12-12 TAG: 我要投稿


github地址:https://github.com/fanux/tetris
   很多在windows下做的,用的图形图像的库,监听键盘的线程也是封装好的,大家在看我的程序时就会发现,所有东西都是最原始的,相比较而言更原始更原汁原味一点。
   接下来我把正个程序一点一点拆开与大家分享。
1:cur.h文件(我们打印图像,自然要移动光标,大家是不是对移动光标很有兴趣?马上教你怎么实现!)
#ifndef CUR_H_
#define CUR_H_
#include
using namespace std;
class Cur{
public:
        void saveCur();             //保存光标位置
        void moveCur(const int x,const int y);  //移动光标位置到(x,y)坐标
        void resumeCur();           //恢复光标位置
};
#endif
   实现cur.cpp文件
void Cur::moveCur(const int x,const int y)
{
    int i;
    for(i = 0; i
        printf("\33[2C");
    for(i = 0; i
        printf("\33[1B");
}
void Cur::saveCur()
{
    //save cur and move to destination
    printf("\33[s");  
}
void Cur::resumeCur()
{
    printf("\33[u");
}
   是不是移动光标比想象中的简单的多?这样封装起来一旦你的程序中想把光标移到哪就只需要搞一个Cur对象,然后就想在哪打印就在哪打印了。用起来很方便,而且还可以用在其它程序中。
2:cubePoint.h文件,屏幕上怎样打印一个小方块(各种颜色的)?然后我们就用小方块组成我们想要
#ifndef CUBEPOINT_H_
#define CUBEPOINT_H_
#include
#include "cur.h"
using namespace std;
enum color{
    CLEAR = 0,
    BLACK = 30,
    RED,
    GREEN,
    YELLOW,
    BLUE,
    PURPLE,
    DEEP_GREEN,
    WHITE
};
/*
 * 每个点显然有个坐标值
 * 每个点有一个颜色
 */
class CubePoint{
protected:
    int color;
    int x;
    int y; //每个方格点有颜色属性,坐标属性
public:
    CubePoint()
    {
        color = CLEAR;
        x = 0;
        y = 0;
    }
    CubePoint(int a,int b,int c)
    {
        color = a;
        x = b;
        y = c;
    }
    void setLocate(const int x,const int y){this->x = x;this->y = y;}
    void setColor(const int color){this->color = color;}
                                                                                                                                                                                                           
    int getColor(){return color;}
    void getLocate(int&x,int &y){x = this->x;y = this->y;}
    //打印点的方法
    void printPoint();
};
#endif
实现cubePoint.cpp  我们同样是使用强大的printf函数打印各种各样的点,这里就需要移动光标了!
void CubePoint::printPoint()
{
    Cur cur;
    cur.saveCur();

[1] [2] [3] [4] [5] [6] [7] [8]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载