这是一个Game游戏库,定义了一些适合用来做游戏的函数,原框架来源于C++RPG游戏2.1.01测试版《末日之战1:新生》(by YXCJ_岩心_尘寂的博客-CSDN博客中的cj.h库,并且我将部分函数修改了一下,又加了几个函数。下面是源代码,有需要的可以拷走(最近也在编写C++RPG游戏):
// Game.h v1.0(适用于C++97编译环境)(Dev-C++编译环境)
// Dev-C++ 如何使用C++11?点击上面的工具->编译选项->代码生成/优化->代码生成:->语言标准(-std)->ISO C++11
#pragma once
#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
#include <windows.h>
#include <conio.h>
using namespace std;
void rect(int left, int top, int right, int bottom, string text);//在屏幕上画出一个矩形,左上角坐标是(left, top),右下角坐标是(right, bottom),矩形填充内容为 text 。
void cursor(SHORT x, SHORT y);//将光标移动到屏幕的(x, y)处。
void color(int color_num);//设置屏幕上文字的颜色。
int random(int min, int max);//生成一个 min 到 max 之间的随机数。
void typeout(string text);//在屏幕上打印字符串 text ,每个字符输出之间间隔为 speed 毫秒。
void clear();//清空屏幕上所有内容。
void show();//显示光标。
void hide();//隐藏光标。
int input();//获取一个键盘输入。
void pause();//暂停程序运行,等待任意键按下,然后清空屏幕。
int msg(LPCSTR Text, LPCSTR Caption, UINT Command);//在屏幕上弹出一个消息框,显示 Text 和 Caption,并且响应用户的操作。
void screen(int Command);//最大化、最小化或还原控制台窗口。
void sleep(int sleep_time);//让程序休眠指定时间,sleep_time是以秒为单位的时间。
void rect(int left, int top, int right, int bottom, string text)
{
for (int i = left; i <= right; i++)
{
for (int j = top; j <= bottom; j++)
{
cursor(i, j);
cout << text;
}
}
}
void cursor(SHORT x, SHORT y)
{
COORD pos = { x, y };
HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOutput, pos);
}
void color(int color_num) {
switch (color_num) {
case 0: //白色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);
break;
case 1: //红色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);
break;
case 2: //黄色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN);
break;
case 3: //绿色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
break;
case 4: //青色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_BLUE);
break;
case 5: //蓝色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE);
break;
case 6: //紫色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_BLUE);
break;
}
}
int random(int min, int max)
{
srand((unsigned int)time(NULL));
int value = (rand() % (max - min + 1)) + min;
return value;
}
void typeout(string text)
{
int speed = 50;
for (int i = 0; i < text.length(); i++)
{
cout << text[i];
Sleep(speed);
}
}
void clear()
{
show();
system("cls");
}
void show()
{
HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO CursorInfo;
GetConsoleCursorInfo(hOutput, &CursorInfo);
CursorInfo.bVisible = true;
SetConsoleCursorInfo(hOutput, &CursorInfo);
}
void hide()
{
HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO CursorInfo;
GetConsoleCursorInfo(hOutput, &CursorInfo);
CursorInfo.bVisible = false;
SetConsoleCursorInfo(hOutput, &CursorInfo);
}
int input()
{
hide();
return _getch();
}
void pause()
{
CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
hide();
cursor(csbi.dwSize.X / 2 - 7, csbi.dwSize.Y / 2);
cout << "按下任意键继续";
input();
clear();
show();
}
int msg(LPCSTR Text, LPCSTR Caption, UINT Command)
{
return MessageBoxA(NULL, Text, Caption, Command);
}
void screen(int Command)
{
if (Command == 1)ShowWindow(GetForegroundWindow(), SW_MAXIMIZE);
else if (Command == 2)ShowWindow(GetForegroundWindow(), SW_MINIMIZE);
else ShowWindow(GetForegroundWindow(), SW_RESTORE);
}
void sleep(int sleep_time)
{
Sleep(sleep_time * 1000);
}
Tips:这个库可以在Dev-C++上运行!!!