C语言课程设计 — 飞机大战

2021-12-09 15:54:04 浏览数 (1)

这个游戏的功能很单一,也就是“飞机大战”,哈哈哈哈。总共只有300多行代码左右,你也可以想想它会有多简陋,把它复制下来编译一下可以直接执行,需要的同学可以自取~

PS:我运行的环境是 dev c ,前提你要在C99的环境中执行

以下是源代码

代码语言:javascript复制
#include
#include
#include					//将用户从键盘获得的输入进行输出 
#include					//获得用户键盘的输入 
//定义全局变量 
int high,width;						//定义边界 
int position_x,position_y;			//飞机位置 
int bullet_x,bullet_y;				//子弹位置 
int enemy_x,enemy_y;				//敌军飞机 
int score;							//获得分数 
int flag;							//飞机状态 
void gotoxy(int x,int y);  			//光标移动到(x,y)位置
void welcometogame();       		//初始化界面
int color(int c);          			 //更改文字颜色
void explation();					//游戏右侧显示 
void scoreandtips();				//显示游戏提示 
void show();						//显示游戏界面 
void endgame();						//游戏结束 
/**
 * 文字颜色函数     
 */
int color(int c)
{
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), c);        //更改文字颜色
	return 0;
}
 
 /**
 * 设置光标位置
 */
void gotoxy(int x,int y)
{
    COORD c;
    c.X=x;
    c.Y=y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
 
 
 
void welcometogame()  //开始界面
{
	int n;
	color(15);
	gotoxy(43,10);
	printf("飞 机 大 战");
	color(11);
	gotoxy(25, 22);
	printf("1.开始游戏");
	gotoxy(45, 22);
	printf("2.游戏说明");
	gotoxy(65, 22);
	printf("3.退出游戏");
	gotoxy(40,27);
	color(3);
	printf("请选择 1 2 3:");       
	color(14);
    scanf("%d", &n);    		//输入选项
    switch (n)
    {
    	case 1:
    		system("cls");
    		show();
        	break;
    	case 2:
        	explation();      	//游戏说明函数
        	break;
    	case 3:
        	exit(0);     		//退出游戏
        	break;
		default:				
			color(12);
			gotoxy(40,28);
			printf("请输入1-3之间的数!");
			_getch();			//输入任意键
			system("cls");		//清屏
			welcometogame();
    }
}
 

void explation()	//游戏提示 
{
	int i,j = 1;
    system("cls");
  	color(10);
    gotoxy(44,1);
    printf("游戏说明");
    color(2);
    for (i = 3; i <= 28; i  )   //输出上下边框===
	{
		for (j = 6; j <= 80; j  )  //输出左右边框||
		{
			gotoxy(j, i);
			if (i == 3 || i == 28) printf("=");
			else if (j == 6 || j == 80) printf("||");
		}
	}
    color(3);
    gotoxy(20,5);
    printf("1. W,A,S,D 分别控制飞机的上下左右移动");
    color(10);
    gotoxy(20,8);
    printf("2. 按空格发射子弹,打中敌机即可得到一分");
    color(14);
    gotoxy(20,11);
    printf("3.碰到敌机子弹死亡");
    color(11);
    gotoxy(20,14);
    printf("4. ESC :退出游戏");
    color(4);
    gotoxy(20,17);
    printf("5. 玩的愉快!!!");
    color(7);
	gotoxy(20,20);
	printf("/*****按任意键返回主页面*****/");
    _getch();                //按任意键返回主界面
    system("cls");
    welcometogame();
}

void scoreandtips()//游戏侧边提示 
{
	gotoxy(50,8);
	color(14);
	printf("游戏得分:%d ",score);
	gotoxy(50,10);
	printf("用W A S D 分别控制飞机的移动");
	gotoxy(50,12);
	printf("按下空格键即为发射炮弹");
	gotoxy(50,14);
	printf("@  的样子就是敌人的飞机");
}
 

void HideCursor() // 用于隐藏光标
{
	CONSOLE_CURSOR_INFO cursor_info = {1, 0};  // 第二个值为0表示隐藏光标
	SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}


void startup()						//数据初始化 
{
	high=20;						//定义游戏界面的高度 
	width=40;						//游戏界面的宽度 
	
	position_x=high-3;				//定义飞机的初始位置 
	position_y=width/2;
	
	bullet_x=0;
	bullet_y=position_y; 
	
	enemy_x=0;
	enemy_y=position_y;
	
	score=0;
	
	flag=0;							//飞机完好 
	
	HideCursor();
}

void show()							//显示界面 
{
	
	int i,j,k;
	for(i=0;i0)							//子弹上升效果 
		bullet_x--;
	if((bullet_x==enemy_x)&&(bullet_y==enemy_y))		//子弹命中敌机 
	{
		score  ;
		bullet_x=-1;	
		enemy_x=1;
		enemy_y=2 rand()%width-2;
	}	


	static int speed;
	if(speed<30)					//减慢敌机速度,不影响飞机和子弹速度 
		speed  ;
	if(speed==30)
	{
		if(enemy_x1)
			position_x--;	
		if((input=='s')&&position_x1)
			position_y--;	
		if((input=='d')&&position_y

0 人点赞