printf画的俄罗斯方块(linux异步I/O,C++)
这个方块游戏是用linux终端的光标控制、颜色设置做的
(添了个功能,字母P暂停、恢复游戏)
用 A S D W 控制移动、转向,空格键下坠到底;
linux的异步aio函数解决了很多麻烦;
用了个简单的模板单例模式,继承它就可以;
对POSIX线程简单封装成java线程接口;
#include <memory>
#include "Tetris.h"
#include "TtyAuto.h"
static void instruction()
{
// 一些说明性文字
printf("\033[2J");
printf("\033[4;34;47m%s\033[0m", "\t\t\tYou can use the key 'A','S','D','W' to control the block.\n\n\t\t\tPress space key make the block down to bottom.\n\n\t\t\t'P' to pause the game.\n\n");
printf("\033[5;34;41m%s\033[0m", "\t\t\tPRESS ANY KEY TO START GAME...\n\n" );
getchar();
}
int main(int ac, char *av[])
{
std::auto_ptr<TtyAuto> autoAdjustTty(TtyAuto::getInstance());
instruction();
// 游戏开始
Tetris game;
game.start();
game.join();
printf("\r\t\t\t\t\t\r");
return 0;
}
#ifndef BERT_THREAD_H
#define BERT_THREAD_H
#include <pthread.h>
/**
* 线程封装,接口模仿JAVA
*/
class Runnable
{
public:
virtual ~Runnable() { }
/**
* 线程逻辑在此实现
*/
virtual void run() = 0;
};
class Thread: public Runnable
{
/**
* 本线程ID
*/
pthread_t m_tid;
/**
* 是否在运行的标志
*/
bool running;
/**
* 线程函数,内部调用run
*/
static void * threadFunc(void * arg);
public:
Thread();
~Thread();
/**
* 睡眠 秒
*/
static unsigned int sleep( unsigned int seconds);
/**
* 睡眠毫秒
*/
static unsigned int msleep( unsigned int mSeconds);
/**
* 启动线程
*/
bool start() ;
/**
* 等待本线程运行完
*/
void join() const;
/**
* 是否在运行
*/
bool isAlive() const
{
return running;
相关文档:
/bin 存放最常用的命令,此目录下的命令所有用户都有执行的权限
/boot Linux系统引导目录,此目录保存系统启动时的内核文件和内核映像文件及启动时所需的其它文件
/dev 设备文件,保存所有的硬件设备文件,如硬盘设备文件,软驱、光驱设备文件等等
/etc ......
在linux查询路由的方法有很多种。下面介绍一种从iproute开源软件中提取出来的一种方法。在ubuntu904下编译,运行通过。
编译: gcc -o reqroute iproute_linux.c
使用: ./reqroute 1.2.3.4
结果:source:1.3.4.5
Gateway:192.168.1.3
Dev:et ......
1. 变量不做初始化。
2. 分配的对象不做销毁。一个好的习惯就是,每生成一个类时,就自动写一个自己的InitInstanceMember,和 ReleaseInstanceMember()方法。
3. 包的分类,如果自己不做source的逻辑分类,C++环境一般是不会自己做的。这个跟Java中的package和文件物理上存储方式一致是不一样的。
C++ ......
1.引言
C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕� ......