mingw编译的编译的windows命令行贪吃蛇示例命令行贪吃蛇示例
主要介绍了mingw编译的windows命令行贪吃蛇示例,需要的朋友可以参考下
主线程:维护游戏逻辑,刷新画面。
后台线程:监听按键(getch)
暂时只支持Windows下的MinGW编译,本来用MinGW编译是想写成Linux下也能运行的。结果Linux下面没有直接提供getch()
函数(Windows下的<conio.h>有)。
管他呢!纯属娱乐~
编译要加-lpthread
snake_cmd.cpp
复制代码 代码如下:
#include <limits.h> // for INT_MAX
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include <pthread.h>
#include <list>
#include <stack>
#include <vector>
#include <algorithm>
#ifdef WIN32
#include <windows.h>
#include <conio.h> // for console I/O
#define sleep(x) Sleep(1000 * (x))
#define msleep(x) Sleep(x)
#define CLEAR_TERM system("CLS");
#else
#include <unistd.h>
#define msleep(x) usleep(1000 * (x))
#define CLEAR_TERM system("clear");
#endif
namespace game {
// using namespace std;
/////////////////////////////////////////////////////////////////////////////
// for debug
#ifdef DEBUG
struct Logger {
FILE* out;
Logger(FILE *pf) : out(pf) {}
void operator()(const char *format, ...) {
va_list args;
va_start(args, format);
vfprintf(out, format, args);
va_end(args);
}
};
Logger outLogger(stdout);
Logger errLogger(stderr);
#define log outLogger
#define err errLogger
// void logger(const char *format, ...)
// {
// va_list args;
// va_start(args, format);
// vprintf(format, args);
// va_end(args);
// }