c++自制新头文件

最近用c++写游戏,觉得很多功能都要写函数,特别麻烦,所以我就写了一个方便做游戏的头文件:gamesio.h

上代码!

代码

#include<iostream>
#include<windows.h>
#include<ctime>
#include<cstdlib>
#include<cstdio>
#ifndef KEY
	#define up VK_UP
	#define down VK_DOWN
	#define left VK_LEFT
	#define right VK_RIGHT
	#define esc VK_ESCAPE
	#define mouse_l VK_LBUTTON
	#define mouse_r VK_RBUTTON
	#define mouse_m VK_MBUTTON
	#define back VK_BACK
	#define tab VK_TAB
	#define alt VK_MENU
	#define space VK_SPACE
	#define return_ VK_RETURN
	#define shift VK_SHIFT
#endif
/*
VK_LBUTTON             鼠标左键
VK_RBUTTON             鼠标右键
VK_CANCEL              Ctrl+Break
VK_MBUTTON             鼠标中键
VK_BACK                Backspace键
VK_TAB                 Tab 键
VK_RETURN              回车键
VK_SHIFT               Shift键
VK_CONTROL             Ctrl键
VK_MENU                Alt键
VK_PAUSE               Pause键
VK_CAPITAL             Caps Lock键
VK_ESCAPE              Esc键
VK_SPACE               空格键
VK_PRIOR               Page Up键
VK_NEXT                Page Down键
VK_END                 End键
VK_HOME                Home键
VK_LEFT                左箭头键
VK_UP                  上箭头键
VK_RIGHT               右箭头键
VK_DOWN                下箭头键
VK_SNAPSHOT            Print Screen键
VK_Insert              Insert键
VK_Delete              Delete键
'0' – '9'             数字0-9
'A' – 'Z'             字母A - Z
VK_LWIN                左WinKey(104键盘才有)
VK_RWIN                右WinKey(104键盘才有)
VK_APPS                AppsKey(104键盘才有)
VK_NUMPAD0             小键盘0键
VK_NUMPAD1             小键盘1键
VK_NUMPAD2             小键盘2键
VK_NUMPAD3             小键盘3键
VK_NUMPAD4             小键盘4键
VK_NUMPAD5             小键盘5键
VK_NUMPAD6             小键盘6键
VK_NUMPAD7             小键盘7键
VK_NUMPAD8             小键盘8键
VK_NUMPAD9             小键盘9键
VK_F1 - VK_F24         功能键F1–F24
VK_NUMLOCK             Num Lock键
VK_SCROLL              Scroll Lock键
*/

#ifndef COLORS
	#define black 0
	#define blue 1
	#define green 2
	#define fade_green 3
	#define red 4
	#define purple 5
	#define yellow 6
	#define white 7
	#define grey 8
	#define light_blue 9
	#define light_green 10
	#define light_fade_green 11
	#define light_red 12
	#define light_purple 13
	#define light_yellow 14
	#define bright_white 15
#endif
//0 = 黑色   8 = 灰色
//1 = 蓝色   9 = 淡蓝色
//2 = 绿色   10 = 淡绿色
//3 = 浅绿色  11 = 淡浅绿色 
//4 = 红色   12 = 淡红色
//5 = 紫色   13 = 淡紫色
//6 = 黄色   14 = 淡黄色
//7 = 白色   15 = 亮白色
using namespace std;
namespace gio{
	bool Key(int i){
		return GetAsyncKeyState(i)&0x8000;
	}
	void initrand(){
		srand(time(0));
	}
	int Rand(int from_,int to_){
		if(from_>1) return rand()%(to_-from_)+from_;
		return rand()%to_+from_;
	}
	void windows_size(int width,int hight){
		char cmd[1024];
		sprintf(cmd,"mode con cols=%d lines=%d",width,hight);
		system(cmd);
	}
	void cls(){
		system("cls");
	}
	void go(int col,int line){
		COORD p;
		p.X=col;
		p.Y=line;
		SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), p);
	}
	void hide(){//隐藏光标,可加可不加
		CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };
		SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
	}
	void windows_tle(char title[]){
		char cmd[1024];
		sprintf(cmd,"title %s",title);
		system(cmd);
	}
	void color(int in_from_of,int beind) {
		WORD wColor = ((beind & 0x0F) << 4) + (in_from_of & 0x0F);
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
	}
	void print(string say,int sleeptime){
		int Len=say.length();
		for(int i=0;i<Len;i++){
			cout<<say[i];
			Sleep(sleeptime);
		}
	}
}

函数讲解

把GetAsyncKeyState(i)&0x8000压缩成了Key(i)

随机化,srand(time(0))变成initrand()

随机,把rand()%m+n压缩成Rand(n,m+1)

控制台尺寸,把system("mode con cols=n lines=m")改为windows_size(n,m)

清空控制台,吧system("cls")改为cls

非常好用的函数:go(n,m)把光标移到m行n列处,配合printf()可以覆盖字符

隐藏光标,挺好用的函数hide()

控制台标题,把system("title (string)")改为windows_tle((string))

改变打印颜色把SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), m)压缩为color(m)=>m可以使用 gamesio.h的宏定义(69~84行)

一个可以提升游戏质量的函数(人话:让你的游戏看起来更高级)print(string,sleeptime),会一个一个字地打印内容,每打印一个字,停顿sleeptime毫秒

球球点个赞吧QAQ 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值