WINDOWS库总结及“举一反三”——可参考作品展

今天,我们来总结一下WINDOW库的指令函数与特点(白嫖党请下滑):
按键状态——GetAsyncKeyState函数

蜂鸣发声——Beep函数

暂停运行——pause函数(隐藏系统消息——>nul后缀)

清空屏幕——cls函数

直接关机——shutdown -s函数(取消关机——shutdown -a函数)

打开网站——start函数

……

以及一份system("xxx")函数执行的表格(如有漏缺,欢迎指出):

ASSOC    显示或修改文件扩展名关联。
AT       计划在计算机上运行的命令和程序。
ATTRIB   显示或更改文件属性。
BREAK    设置或清除扩展式 CTRL+C 检查。
CACLS    显示或修改文件的访问控制列表(ACLs)。
CALL     从另一个批处理程序调用这一个。
CD       显示当前目录的名称或将其更改。
CHCP     显示或设置活动代码页数。
CHDIR    显示当前目录的名称或将其更改。
CHKDSK   检查磁盘并显示状态报告。
CHKNTFS  显示或修改启动时间磁盘检查。
CLS      清除屏幕。
CMD      打开另一个 Windows 命令解释程序窗口。
COLOR    设置默认控制台前景和背景颜色。
COMP     比较两个或两套文件的内容。
COMPACT  显示或更改 NTFS 分区上文件的压缩。
CONVERT  将 FAT 卷转换成 NTFS。您不能转换当前驱动器。
COPY     将至少一个文件复制到另一个位置。
DATE     显示或设置日期。后面加 /t 表示显示日期
DEL      删除至少一个文件。
DIR      显示一个目录中的文件和子目录。
DISKCOMP 比较两个软盘的内容。
DISKCOPY 将一个软盘的内容复制到另一个软盘。
DOSKEY   编辑命令行、调用 Windows 命令并创建宏。
ECHO     显示消息,或将命令回显打开或关上。
ENDLOCAL 结束批文件中环境更改的本地化。
ERASE    删除至少一个文件。
EXIT     退出 CMD.EXE 程序(命令解释程序)。
FC       比较两个或两套文件,并显示不同处。
FIND     在文件中搜索文字字符串。
FINDSTR  在文件中搜索字符串。
FOR      为一套文件中的每个文件运行一个指定的命令
FORMAT   格式化磁盘,以便跟 Windows 使用。
FTYPE    显示或修改用于文件扩展名关联的文件类型。
GOTO     将 Windows 命令解释程序指向批处理程序中某个标明的行。
GRAFTABL 启用 Windows 来以图像模式显示扩展字符集。
HELP     提供 Windows 命令的帮助信息。
IF       执行批处理程序中的条件性处理。
LABEL    创建、更改或删除磁盘的卷标。
MD       创建目录。
MKDIR    创建目录。
MODE     配置系统设备。
MORE     一次显示一个结果屏幕。
MOVE     将文件从一个目录移到另一个目录。
PATH     显示或设置可执行文件的搜索路径。
PAUSE    暂停批文件的处理并显示消息。
POPD     还原 PUSHD 保存的当前目录的上一个值。
PRINT    打印文本文件。
PROMPT   更改 Windows 命令提示符。
PUSHD    保存当前目录,然后对其进行更改。
RD       删除目录。
RECOVER  从有问题的磁盘恢复可读信息。
REM      记录批文件或 CONFIG.SYS 中的注释。
REN      重命名文件。
RENAME   重命名文件。
REPLACE  替换文件。
RMDIR    删除目录。
SET      显示、设置或删除 Windows 环境变量。
SETLOCAL 开始批文件中环境更改的本地化。
SHIFT    更换批文件中可替换参数的位置。
SORT     对输入进行分类。
START    启动另一个窗口来运行指定的程序或命令。
SUBST    将路径跟一个驱动器号关联。
TIME     显示或设置系统时间。
TITLE    设置 CMD.EXE 会话的窗口标题。
TREE     以图形模式显示驱动器或路径的目录结构。
TYPE     显示文本文件的内容。
VER      显示 Windows 版本。
VERIFY   告诉 Windows 是否验证文件是否已正确写入磁盘。
VOL      显示磁盘卷标和序列号。
XCOPY    复制文件和目录树。

当然,WINDOWS库的指令不止这些,大家还可以自己继续学习~

———————————————————————————————————————————

题目训练及大佬作品展示分界线

———————————————————————————————————————————

题目一:设计一个《天空之城》的音乐播放程序

大佬参考代码(如有侵权,请联系我进行删除,下同):

#include <cstdio>
#include <windows.h>
#define qdo 262 
#define qre 294
#define qmi 330     
#define qfa 349
#define qso 392
#define qla 440
#define qsi 494
#define do 523
#define re 578
#define mi 659
#define fa 698
#define so 784
#define la 880
#define si 988
#define do1 1046
#define re1 1175
#define mi1 1318
#define fa1 1480
#define so1 1568
#define la1 1760
#define si1 1976
#define sqdo 277
#define sqre 311
#define sqfa 370
#define sqso 415
#define sqla 466
#define sdo 554
#define sre 622
#define sfa 740
#define sso 831
#define sla 932
#define sdo1 1046
#define sre1 1245
#define sfa1 1480
#define sso1 1661
#define sla1 1865
 
int main()
{
int pai=400,ban=200;
int ting=128;
 
Sleep(1000);
 
Beep(la,ban);
Beep(si,ban);
Sleep(ting);
 
Beep(do1,pai+ban);
Beep(si,ban);
Sleep(ting);
Beep(do1,pai);
Sleep(ting);
Beep(mi1,pai);
Sleep(ting);
 
Beep(si,3*pai);
Sleep(ting);
Beep(mi,ban);
Beep(mi,ban);
 
Beep(la,ban+pai);
Beep(so,ban);
Sleep(ting);
Beep(la,pai);
Sleep(ting);
Beep(do1,pai);
Sleep(ting);
 
Beep(so,2*pai);
Sleep(ting);
Sleep(pai);
Beep(mi,ban);
Sleep(ting/2);
Beep(mi,ban);
Sleep(ting/2);
 
Beep(fa,pai+ban);
Beep(mi,ban);
Sleep(ting);
Beep(fa,ban);
Beep(do1,ban+pai);
Sleep(ting);
 
Beep(mi,2*pai);
Sleep(ting);
Sleep(ban);
Beep(do1,ban);
Sleep(ting/2);
Beep(do1,ban);
Sleep(ting/2);
Beep(do1,ban);
Sleep(ting/2);
 
Beep(si,ban+pai);
Beep(sfa,ban);
Sleep(ting);
Beep(sfa,pai);
Beep(si,pai);
Sleep(ting);
 
Beep(si,2*pai);
Sleep(ting);
Sleep(pai);
Beep(la,ban);
Beep(si,ban);
Sleep(ting);
 
Beep(do1,pai+ban);
Beep(si,ban);
Sleep(ting);
Beep(do1,pai);
Sleep(ting);
Beep(mi1,pai);
Sleep(ting);
 
Beep(si,2*pai);
Sleep(ting);
Sleep(pai);
Beep(mi,ban);
Sleep(20);
Beep(mi,ban);
Sleep(ting);
 
Beep(la,pai+ban);
Beep(so,ban);
Sleep(ting);
Beep(la,pai);
Sleep(ting);
Beep(do1,pai);
Sleep(ting);
 
Beep(so,3*pai);
Sleep(ting+ban);
Beep(mi,ban);
Sleep(ting/2);
 
Beep(fa,pai);
Sleep(ting);
Beep(do1,ban);
Beep(si,ban);
Sleep(20);
Beep(si,pai);
Sleep(ting);
Beep(do1,pai);
Sleep(ting);
 
Beep(re1,ban);
Sleep(20);
Beep(re1,ban);
Sleep(20);
Beep(mi1,ban);
Sleep(ting/2);
Beep(do1,pai);
Sleep(ting+pai);
 
Beep(do1,pai);
Beep(si,ban);
Sleep(ting);
Beep(la,ban);
Sleep(20);
Beep(la,ban);
Sleep(ting);
Beep(si,pai);
Sleep(ting);
Beep(sso,pai);
Sleep(ting);
 
Beep(sso,2*pai);
Sleep(ting+pai);
Beep(do1,ban);
Beep(re1,ban);
Sleep(ting);
 
Beep(mi1,pai+ban);
Beep(re1,ban);
Sleep(ting);
Beep(mi1,pai);
Sleep(ting);
Beep(fa1,pai);
Sleep(ting);
 
Beep(re1,2*pai);
Sleep(pai+ting);
Beep(so,ban);
Sleep(20);
Beep(so,ban);
Sleep(ting);
 
Beep(do1,ban);
Beep(si,ban);
Sleep(ting);
Beep(do1,pai);
Sleep(ting);
Beep(mi1,pai);
Sleep(ting);
 
Beep(mi1,2*pai);
Sleep(ting+2*pai);
 
Beep(la,ban);
Beep(si,ban);
Sleep(ting);
Beep(do1,pai);
Sleep(ting);
Beep(si,pai);
Sleep(ting);
Beep(re1,ban);
Sleep(20);
Beep(re1,ban);
Sleep(ting);
 
Beep(do1,pai+ban);
Beep(so,ban);
Sleep(20);
Beep(so,pai);
Sleep(pai+ting);
 
Beep(fa1,pai);
Sleep(ting);
Beep(mi1,pai);
Sleep(ting);
Beep(re1,pai);
Sleep(ting);
Beep(do1,pai);
Sleep(ting);
 
Beep(mi1,4*pai);
 
Beep(mi1,pai*2);
Sleep(pai+ting);
Beep(mi1,pai);
Sleep(ting);
 
Beep(la1,2*pai);
Sleep(ting);
Beep(so1,pai);
Sleep(ting);
Beep(so1,pai);
Sleep(ting);
 
Beep(mi1,ban);
Sleep(ting/2);
Beep(re1,ban);
Sleep(ting);
Beep(do1,pai);
Sleep(ting+ban);
Beep(do1,ban);
Sleep(ting);
 
Beep(re1,pai);
Sleep(ting);
Beep(do1,ban);
Beep(re1,ban);
Sleep(20);
Beep(re1,ban);
Sleep(ting);
Beep(so1,pai);
Sleep(ting);
 
Beep(mi1,2*pai);
Sleep(ting+pai);
Beep(mi,pai);
Sleep(ting);
 
Beep(la1,2*pai);
Sleep(ting);
Beep(so1,2*pai);
Sleep(ting);
 
Beep(mi1,ban);
Beep(re1,ban);
Sleep(ting);
Beep(do1,2*pai);
Sleep(ting+ban);
Beep(do1,ban);
Sleep(ting);
 
Beep(re1,pai);
Sleep(ting);
Beep(do1,ban);
Beep(re1,ban);
Sleep(20);
Beep(re1,ban);
Sleep(ting);
Beep(si,pai);
Sleep(ting);
 
Beep(la,2*pai);
Sleep(ting);
Beep(la,ban);
Beep(si,ban);
 
Beep(do1,pai+ban);
Beep(si,ban);
Sleep(ting);
Beep(do1,pai);
Sleep(ting);
Beep(mi1,pai);
Sleep(ting);
 
Beep(si,3*pai);
Sleep(ting);
Beep(mi,ban);
Beep(mi,ban);
 
Beep(la,ban+pai);
Beep(so,ban);
Sleep(ting);
Beep(la,pai);
Sleep(ting);
Beep(do1,pai);
Sleep(ting);
 
Beep(so,2*pai);
Sleep(ting);
Sleep(pai);
Beep(mi,ban);
Sleep(ting/2);
Beep(mi,ban);
Sleep(ting/2);
 
Beep(fa,pai+ban);
Beep(mi,ban);
Sleep(ting);
Beep(fa,ban);
Beep(do1,ban+pai);
Sleep(ting);
 
Beep(mi,2*pai);
Sleep(ting);
Sleep(ban);
Beep(do1,ban);
Sleep(ting/2);
Beep(do1,ban);
Sleep(ting/2);
Beep(do1,ban);
Sleep(ting/2);
 
Beep(si,ban+pai);
Beep(sfa,ban);
Sleep(ting);
Beep(sfa,pai);
Beep(si,pai);
Sleep(ting);
 
Beep(si,2*pai);
Sleep(ting);
Sleep(pai);
Beep(la,ban);
Beep(si,ban);
Sleep(ting);
 
Beep(do1,pai+ban);
Beep(si,ban);
Sleep(ting);
Beep(do1,pai);
Sleep(ting);
Beep(mi1,pai);
Sleep(ting);
 
Beep(si,2*pai);
Sleep(ting);
Sleep(pai);
Beep(mi,ban);
Sleep(20);
Beep(mi,ban);
Sleep(ting);
 
Beep(la,pai+ban);
Beep(so,ban);
Sleep(ting);
Beep(la,pai);
Sleep(ting);
Beep(do1,pai);
Sleep(ting);
 
Beep(so,3*pai);
Sleep(ting+ban);
Beep(mi,ban);
Sleep(ting/2);
 
Beep(fa,pai);
Sleep(ting);
Beep(do1,ban);
Beep(si,ban);
Sleep(20);
Beep(si,pai);
Sleep(ting);
Beep(do1,pai);
Sleep(ting);
 
Beep(re1,ban);
Sleep(20);
Beep(re1,ban);
Sleep(20);
Beep(mi1,ban);
Sleep(ting/2);
Beep(do1,pai);
Sleep(ting+pai);
 
Beep(la,4*pai);
 
Sleep(1000);
 
main();
 
}

题目二:设计一个小恐龙跑酷游戏程序(因其的特殊性,可用其他库指令)

大佬参考代码:

#include<stdio.h> 
#include<conio.h> 
#include<stdlib.h> 
#include<time.h>
#include<windows.h>
#define N 80 
#define up 72 
#define left 75 
#define right 77 
#define down 80 
void run();
void yn();
void print(int [][N]);
void menu();
int scr[22][N]={0},pl=9,shit,width=70,score=0,death=0,jump_time=0,game_time=0,day=0,jump_height=0,shift_time=0;
int main(){
	menu(); 
	run(); 
}
void drawplayer(int a[][N],int xlu,int ylu){
	for(int i=1;i<=3;i++)
		a[xlu][ylu+i]=1;
	for(int i=0;i<=4;i++)
		a[xlu+1][ylu+i]=1;
	a[xlu+2][ylu+1]=1;
	a[xlu+2][ylu+3]=1;
}
bool search_player(int a[][N],int xlu,int ylu){
	for(int i=1;i<=3;i++)
		if(a[xlu][ylu+i]==2 || a[xlu][ylu+i]==3)
		    return false;
	for(int i=0;i<=4;i++)
		if(a[xlu+1][ylu+i]==2 || a[xlu+1][ylu+i]==3)
		    return false;
	if(a[xlu+2][ylu+1]==2 || a[xlu+2][ylu+1]==3)
		return false;
	if(a[xlu+2][ylu+3]==2 || a[xlu+2][ylu+3]==3)
		return false;
	return true;
}
void days(int q,int a[][N]){
	for(int i=3;i<=7;i++){
			for(int j=51;j<=55;j++){
				a[i][j]=0;
			}
		}
	if(q==1){
	    a[4][52]=4;
	    a[7][52]=4;
	    for(int i=53;i<=54;i++){
			a[4][i]=4;
		    a[5][i]=4;
		    a[6][i]=4;
		    a[7][i]=4;
		}
		a[4][54]=0;
		a[7][54]=0;
		a[5][55]=4;
		a[6][55]=4;
	}
	else{
		for(int i=3;i<=7;i++){
			for(int j=51;j<=56;j++){
				a[i][j]=4;
			}
		}
		a[4][51]=0;
		a[4][56]=0;
		a[7][51]=0;
		a[7][56]=0; 
	} 
}
void print(int a[][N]){
	COORD c={0,0};
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
	int i,j;
	for(i=4;i<22;i++){
		a[i][width-1]=4; 
		for(j=0;j<width;j++){ 
			if(a[i][j]==0){
				printf(" ");
			}	 
			if(a[i][j]==1)
				printf("@");
			if(a[i][j]==2)
			    printf("#");
			if(a[i][j]==3)
			    printf("<");
			if(a[i][j]==4){
				printf("*");
			}
			if(i==4&&j==width-1)
				printf("score:%d",score/20);
			if(i==5&&j==width-1) 
				printf("Press Esc to exit");
		} 
		printf("\n"); 
	} 
	for(j=0;j<width;j++)
	    printf("~");
} 
void yn(){
	system("cls"); 
	printf("\t\t\t\t*****YOUR SCORE:%4d*****\n\n",score/20); 
	end:;
	switch(getch()){
		case 'y': 
		case 'Y':death=0,score=0,memset(scr,0,sizeof(scr)),run();break; 
		case 'n': 
		case 'N':break; 
		default :goto end;break; 
	} 
}
void generate_block(int a[][N],int lala=rand()%6+1){
	if(lala==5){
		for(int i=0;i<=19;i++){
			a[i][69]=2;
		}
	}
	else if(lala==6){
		int hehe=rand()%5+1;
		if(hehe<=1){
			a[19][69]=3;
		}
		else if(hehe<=4){
			a[14][69]=3;
		}
		else if(hehe==5){
			a[21][69]=3;
		}
	}
	else{
		for(int i=0;i<=lala;i++)
			a[21-i][69]=2;
	}
}
void run() {
	shit=0;
	day=0;
	system("cls");
	srand(time(0));
	while(1){
		score++;
		game_time++;
		if(game_time%60==0)
		    generate_block(scr);
		if(game_time%80==0)
		    generate_block(scr,6);
		days(day,scr);
		if(kbhit()) 
			switch(getch()){
				case down:
				case 's': 
				case 'S':if(jump_time<=15)shift_time=20,jump_time=0;break;
				case up: 
				case 'W': 
				case 'w':if(jump_time<=0)jump_time=25,jump_height=-1,shift_time=0;break;
				case 13 :system("pause");break;
			}
		if(jump_time<=0 && shift_time<=0){
			if(search_player(scr,19,pl))
				drawplayer(scr,19,pl);
			else
			    goto end;
		}
		else if(jump_time>0){
			jump_time--;
			if(jump_time<10){
				jump_height--;
			}
			else if(jump_time>15){
				jump_height++;
			}
			if(search_player(scr,19-jump_height,pl)){
				drawplayer(scr,19-jump_height,pl);
			}
			else
			    goto end;
		}
		else if(shift_time>0){
			shift_time--;
			if(search_player(scr,20,pl))
				drawplayer(scr,20,pl);
			else
			    goto end;
		}
		for(int i=4;i<22;i++)
		    for(int j=0;j<=80;j++){
		    	if(scr[i][j]==2){
		    	    scr[i][j]=0;
		    		if(j-1>=0)
		    	    	scr[i][j-1]=2;
				}
			}
		for(int i=4;i<22;i++)
		    for(int j=0;j<=80;j++){
		    	if(scr[i][j]==3){
		    	    scr[i][j]=0;
		    		if(scr[i][j-1]==1)
		    		      goto end;
		    		else if(scr[i][j-2]==1)
		    		    goto end;
				else if(j-2>=0)
		    	    	    scr[i][j-2]=3;
				}
			}
		print(scr);
		for(int i=4;i<22;i++)
		    for(int j=0;j<=80;j++){
		    	if(scr[i][j]==1)
		    	    scr[i][j]=0;
		    }
	}
	end:;
	yn();
}  
void menu(){
	ShowCursor(false);
	HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
	CONSOLE_CURSOR_INFO cci;
	GetConsoleCursorInfo(hOut,&cci);
	cci.bVisible=false;
	SetConsoleCursorInfo(hOut,&cci);
}

题目三:制作一个单机的贪吃蛇小游戏(上同)

大佬参考代码:

#include<stdio.h>
#include<conio.h>
#include<windows.h>
#include<time.h>
#define framex 5
#define framey 5
#define wide 20
#define high 20
int i,j,a[2];
//将光标移动到指定位置
void gotoxy(HANDLE hout,int x,int y) {
//COORD是WindowsAPI中定义的一种结构,表示一个字符在控制台屏幕上的坐标
COORD pos;
pos.X=x;
pos.Y=y;
//SetConsoleCursorPosition是API中定位光标位置的函数。
SetConsoleCursorPosition(hout,pos);
}
//定义蛇的结构体
struct Snake {
int x[100];
int y[100];
int speed;
int length;
int count;
};
//定义食物的结构体
struct Food {
int x;
int y;
};
//制作框架
void makeframe(struct Snake snake) {
//定义显示器变量句柄
HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);
gotoxy(hout,framex+wide*2+5,framey);
printf( " 贪吃蛇游戏");
gotoxy(hout,framex+wide*2+5,framey+3);
printf("使用方向键或wasd移动");
gotoxy(hout,framex+wide*2+5,framey+5);
printf("长按方向键可加速");
gotoxy(hout,framex+wide*2+5,framey+7);
printf("按任意键暂停,方向键继续");
//打印上边框
for(i=0; i<wide*2+1; i++) {
gotoxy(hout,framex+i,framey);
printf("*");
}
//打印下边框
for(i=0; i<wide*2+2; i++) {
gotoxy(hout,framex+i,framey+high);
printf("*");
}
//打印左边框
for(i=0; i<high; i++) {
gotoxy(hout,framex,framey+i);
printf("*");
}
//打印右边框
for(i=0; i<high; i++) {
gotoxy(hout,framex+wide*2+1,framey+i);
printf("*");
}
}
//游戏信息
void infor(HANDLE hout,struct Snake* snake) {
gotoxy(hout,framex+wide*2+5,framey+15);
printf("当前速度:%d",-snake->speed+500);
gotoxy(hout,framex+wide*2+5,framey+17);
printf("当前得分:%d",snake->count);
gotoxy(hout,framex+wide*2+5,framey+19);
printf("当前长度:%d",snake->length);
}
//初始化蛇
void initsnake(struct Snake *snake) {
snake->x[0]=framex+2;
snake->y[0]=framey+high/2;
snake->count=0;
snake->length=3;
snake->speed=400;
//初始化由蛇尾至蛇头的坐标
for(i=1; i<snake->length; i++) {
snake->x[i]=snake->x[i-1]+1;
snake->y[i]=snake->y[i-1];
}
}
//打印蛇
void printsnake(HANDLE hout ,struct Snake *snake) {
for(i=0; i<snake->length; i++) {
gotoxy(hout,snake->x[i],snake->y[i]);
if(i==snake->length-1)
printf("■");
else if(i==0)
printf("□");
else
printf("□");
}
}
//移动蛇
void movesnake(HANDLE hout,struct Snake *snake) {
gotoxy(hout,snake->x[0],snake->y[0]);
//清除蛇尾
printf(" ");
//蛇的后一节坐标变成前一节的坐标
for(i=1; i<snake->length; i++) {
snake->x[i-1]=snake->x[i];
snake->y[i-1]=snake->y[i];
}
}
//打印食物
void printfood (HANDLE hout,struct Snake *snake,struct Food* food) {
//用计算机时间获取随机值
srand((unsigned)time(NULL));
while(1) {
//将食物的横纵坐标的大小限定在窗口大小内
food->x=rand()%(wide-2)+1;
food->y=rand()%(high-2)+1;
//避免食物出现在边框上
if(food->x==0&&food->y==0)
continue;
//将食物的坐标放置在窗口内
food->x=2*food->x+framex;
food->y+=framey;
//如果食物出现在蛇上,重新产生食物
for(i=0; i<snake->length; i++) {
if(food->x==snake->x[i]&&food->y==snake->y[i])
break;
}
//食物不在蛇上,打印食物,结束循环
if(i==snake->length) {
gotoxy(hout,food->x,food->y);
printf("*");
break;
}
}

}
//吃食物
void eatfood(HANDLE hout,struct Snake * snake,struct Food *food) {
//如果蛇头的坐标等于食物的坐标
if(snake->x[snake->length-1]==food->x&&snake->y[snake->length-1]==food->y) {
//蛇长加一
snake->length++;
//蛇身(不包括蛇尾)整体像前移动一格
for(i=snake->length-1; i>0; i--) {
snake->x[i]=snake->x[i-1];
snake->y[i]=snake->y[i-1];
}
//得到蛇尾的坐标(即蛇移动前的蛇尾坐标)
snake->x[0]=a[0];
snake->y[0]=a[2];
printfood(hout,snake,food);
snake->count++;
if(snake->count%3==0)
snake->speed-=50;
}
}
//死亡判断
int ifdead(struct Snake* snake) {
//如果碰到左边界 返回0;
if(snake->x[snake->length-1]==framex)
return 0;
//如果碰到右边界 返回0;
if(snake->x[snake->length-1]==framex+wide*2)
return 0;
//如果碰到上边界 返回0;
if(snake->y[snake->length-1]==framey)
return 0;
//如果碰到下边界 返回0;
if(snake->y[snake->length-1]==framey+high)
return 0;
//如果碰到自己身体 返回0;
for(i=0; i<snake->length-1; i++)
if( snake->x[snake->length-1]==snake->x[i] && snake->y[snake->length-1]==snake->y[i] )
return 0;
//否则返回1;
return 1;
}
//开始游戏
int main() {
	while(1)
	{
		if(GetAsyncKeyState(VK_ESCAPE)) break;
		else
		{
		unsigned char ch =77;
//定义显示器句柄
HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);                      
struct Snake s, *snake=&s;
struct Food f, *food=&f;
makeframe(*snake);
initsnake(snake);
printfood(hout,snake,food);
Sleep(500);
while(1) {
infor(hout,snake);
a[0]=snake->x[0];
a[1]=snake->y[0];
j=0;                  
if(kbhit()) {
ch=getch();
if(kbhit()) {
Sleep(20);
j=1;
}
}
switch(ch) {
case'W':
case 'w' :
case 72: {
movesnake(hout,snake);
snake->y[snake->length-1]-=1;
break;
}
case'S':
case 's':
case 80: {
movesnake(hout,snake);
snake->y[snake->length-1]+=1;
break;
}
case'A':
case 'a':
case 75: {
movesnake(hout,snake);
snake->x[snake->length-1]-=2;
break;
}
case'D':
case 'd':
case 77: {
movesnake(hout,snake);
snake->x[snake->length-1]+=2;
break;
}
}

eatfood(hout,snake,food);
printsnake(hout,snake);
if(ifdead(snake)==0||ch==27||snake->speed==0) {
gotoxy(hout,framex+wide/2,framey-2);
if(snake->speed==0)
printf("good");
else
printf("game over");
break;
}

if(j==0)
Sleep(snake->speed);
else
Sleep(20);
}
Sleep(3000);
system("cls");
if(snake->speed==0)
printf("\n\n\n\n\n\t\t\t赢了\n\n\t\t\t你得到了满分:24\n\n\n");
else
printf("\n\n\n\n\n\t\t\t输了\n\n\t\t\t你的最终得分是:%d\n\n\n",snake->count);
Sleep(3000);
return 0;
	}
	Sleep(5000);
	}
}

———————————————————————————————————————————

接下来,我们将会认识其他库的指令,WINDOWS库的指令就先告一段落啦~

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值