栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

在Mountain游戏中,用C控制台模拟按键并播放乐曲。

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Mountain游戏中,用C控制台模拟按键并播放乐曲。

引言:非计算专业的电子类专业学生,代码质量非常垃圾和低级,就是谭浩强那些东西,有些可能是以前复制粘贴的代码,只用于自娱自乐,请勿借鉴。

1.写好源码

#include 
#include 
int main(){
	char ch;
	FILE *fp, *fp1, *fp2;
	fp = fopen("mtn.TXT", "r");
	fp1 = fopen("new_mtn.TXT","w");
	fp2 = fopen("integrate","w");
	if(fp == NULL){
		printf("打开文件失败");
	}
	while(EOF != (ch = fgetc(fp))){
		if(ch == 'n'){
			continue;
		}
		
		if(ch == ' '){
			printf("Sleep (DELAY_TIME );n");
			fprintf(fp1,"Sleep (DELAY_TIME );n");
			continue;
		}
		else{
		printf("keybd_event ('%c' , 0, 0, 0);nSleep (DELAY_TIME );nkeybd_event ('%c', 0, KEYEVENTF_KEYUP, 0);nSleep (DELAY_TIME );",ch,ch);
		printf("nn");}
		fprintf(fp1,"keybd_event ('%c' , 0, 0, 0);nSleep (DELAY_TIME );nkeybd_event ('%c', 0, KEYEVENTF_KEYUP, 0);nSleep (DELAY_TIME );",ch,ch);
		fprintf(fp1,"nn");
		
	}
	
	printf("n");
	fclose(fp);
	fclose(fp1);
	fclose(fp2);
	return 0;
}

2.创建文本文件mtn.TXT和new_mtn.TXT

3.将用字母表示的乐谱输入到mtn.TXT中,并编译运行在

4.提取new_mtn.TXT中的编码

 5.将mtn.TXT中的编码插入到以下代码中

#include 
#include 
#define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
#define KEYUP(vk_code)   ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)
#define DELAY_TIME 50


void info(const char str[]) {
	printf("bbbbbbbbbbbbbbbbbbbbbbbbbbbb");
	printf("bbbbbbbbbbbbbbbbbbbbbbbbbbbb");
	printf("%s          ",str);
}
 
int main(void){

	printf("======Jason制作=====n");
	printf("模拟键盘");
	printf("按Esc键停止按键模拟!n");
	printf("按F12键开始按键模拟!n");
	printf("====================n");
	info("5秒后自动开启按键模拟!");
	Sleep (5000);
	info("启动按键模拟");
	while(1) {
		if(KEYDOWN(VK_ESCAPE)) { // 按Esc键停止按键模拟
			info("已停止按键模拟!");
			while (!KEYDOWN(VK_F12)) Sleep(10); // 按F12键结束循环休眠
			info("已启动按键模拟!");
		} else {


			
		}
	}
	return 0;
}

5.运行 Mountain 并运行 以上代码(延迟记得自己调高点)

PS: 1.#define DELAY_TIME可以控制延迟时长,这里的单位是毫秒。

       2.分成俩步的原因是区别俩个不同的功能,按键模拟可以用在很多不同的场合,不只是在游戏          Mountain中

写于2021年,10月7日 0点41分,作者阿尔卑斯。

我把俩段代码集成在一起了

#include 
#include 
#define DELAY_TIME 150	//用于调节每个音符的间隔时长
#define TIME_DELAY_NUM 1	//用于单独调节每个音节的间隔时长的延长倍数
int main(){

	char ch;
	FILE *fp1, *fp2;
	fp1 = fopen("mtn.TXT", "r");		
	fp2 = fopen("new_mtn.TXT","w");
	printf("10秒后将开始程序:");
	Sleep(1000);

	while(1){

		ch = fgetc(fp1);
		if( feof(fp1) ){
			rewind(fp1);
			ch = fgetc(fp1);
		}
		if(ch == 'n'){
			continue;
		}
		else{
			if(ch ==' '){
				printf("Sleep(DELAY_TIME * TIME_DELAY_NUM );n");
				fprintf(fp2,"Sleep(DELAY_TIME * TIME_DELAY_NUM );n");
				Sleep(DELAY_TIME * TIME_DELAY_NUM);
				continue;
			}
			else{
				printf("keybd_event ('%c' , 0, 0, 0);nSleep (DELAY_TIME);nkeybd_event ('%c', 0, KEYEVENTF_KEYUP, 0);nSleep (DELAY_TIME);nn",ch,ch);
				fprintf(fp2,"keybd_event ('%c' , 0, 0, 0);nSleep (DELAY_TIME);nkeybd_event ('%c', 0, KEYEVENTF_KEYUP, 0);nSleep (DELAY_TIME);nn",ch,ch);
			
						
					if(ch == 'Q' || ch ==  'q' ){
					keybd_event ('Q' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('Q', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'W' || ch ==  'w' ){
					 keybd_event ('W' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('W', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'E' || ch ==  'e' ){
					 keybd_event ('E' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('E', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'R' || ch ==  'r' ){
					 keybd_event ('R' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('R', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'T' || ch ==  't' ){
					 keybd_event ('T' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('T', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'Y' || ch ==  'y' ){
					 keybd_event ('Y' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('Y', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'U' || ch ==  'u' ){
					 keybd_event ('U' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('U', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'I' || ch ==  'i' ){
					 keybd_event ('I' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('I', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'A' || ch ==  'a' ){
					 keybd_event ('A' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('A', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'S' || ch ==  's' ){
					 keybd_event ('S' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('S', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'D' || ch ==  'd' ){
					 keybd_event ('D' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('D', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'F' || ch ==  'f' ){
					 keybd_event ('F' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('F', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'G' || ch ==  'g' ){
					keybd_event ('G' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('G', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'H' || ch ==  'h' ){
					keybd_event ('H' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('H', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'J' || ch ==  'j' ){
					keybd_event ('J' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('J', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'K' || ch ==  'k' ){
					keybd_event ('K' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('K', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'Z' || ch ==  'z' ){
					keybd_event ('Z' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('Z', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'X' || ch ==  'x' ){
					keybd_event ('X' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('X', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'C' || ch ==  'c' ){
					keybd_event ('C' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('C', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'V' || ch ==  'v' ){
					keybd_event ('V' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('V', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'B' || ch ==  'b' ){
					keybd_event ('B' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('B', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'N' || ch ==  'n' ){
					keybd_event ('N' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('N', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == 'M' || ch ==  'm' ){
					keybd_event ('M' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('M', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}

					if(ch == '<' || ch ==  ',' ){
					keybd_event ('<' , 0, 0, 0);
					Sleep (DELAY_TIME);
					keybd_event ('<', 0, KEYEVENTF_KEYUP, 0);
					Sleep (DELAY_TIME);}
			}
		}
	}
	fclose(fp1);
	fclose(fp2);
	return 0;
}

质量依旧垃圾 ||待更新

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/311790.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号