当前位置: 首页 > 编程笔记 >

C语言实现简单飞机大战

邓深
2023-03-14
本文向大家介绍C语言实现简单飞机大战,包括了C语言实现简单飞机大战的使用技巧和注意事项,需要的朋友参考一下

本文实例为大家分享了C语言实现飞机大战的具体代码,供大家参考,具体内容如下

定义四个函数实现飞机大战

#include<stdio.h>
#include<windows.h>
#include<conio.h>
//定义全局变量 
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)位置
{
 HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
 COORD pos;
 pos.X = x;
 pos.Y = y;
 SetConsoleCursorPosition(handle,pos);
}
void HideCursor() // 用于隐藏光标
{
 CONSOLE_CURSOR_INFO cursor_info = {1, 0}; // 第二个值为0表示隐藏光标
 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
 
void startup() //数据初始化 
{
 high=18;
 width=26;
 
 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;
 for(i=0;i<high;i++)
 {
 for(j=0;j<width;j++)
 {
 if(flag)
 break;
 
 else if((i==position_x)&&(j==position_y)) //飞机坐标 
 printf("*");
 else if((i==enemy_x)&&(j==enemy_y)) //敌机坐标 
 printf("*");
 else if((i==bullet_x)&&(j==bullet_y)) //子弹坐标 
 printf("|");
 else if ((j==width-1)||(i==high-1)||(j==0)||(i==0)) //打印边界 
 printf("#");
 else
 printf(" ");
 }
 printf("\n"); 
 }
 printf("\n");
 if((position_x==enemy_x)&&(position_y==enemy_y))
 {
 flag=1; //飞机撞毁 游戏结束 
 printf("得分: %d\n",score);
 printf("游戏结束");
 }
 else
 printf("得分: %d\n",score);
}
void withoutInpute() //与用户输入无关
{
 if(bullet_x>0) //子弹上升效果 
 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_x<high)
 enemy_x++;
 else 
 {
 enemy_x=0;
 enemy_y=2+rand()%width-2;
 }
 speed=0;
 } 
 
}
void withInpute() //与用户输入有关 
{
 char input;
 if(kbhit()) //控制飞机方向 
 {
 input=getch();
 if((input=='w')&&position_x>1)
 position_x--; 
 if((input=='s')&&position_x<high-2)
 position_x++; 
 if((input=='a')&&position_y>1)
 position_y--; 
 if((input=='d')&&position_y<width-2)
 position_y++;
 if(input==' ')
 {
 bullet_x=position_x-1;
 bullet_y=position_y;
 }
 }
}
int main()
{
 system("color 2f");
 startup(); // 数据初始化
 while(1) // 游戏循环执行
 {
 gotoxy(0,0);
 show(); // 显示画面
 withoutInpute(); // 与用户输入无关的更新
 withInpute(); // 与用户输入有关的更新
 }
 } 

作者的另一段代码:C语言实现空战游戏,也很棒,分享给大家:

#include<stdio.h>
#include<windows.h>
#include<conio.h>
#define High 27 //定义边界
#define Width 45
#define EnemyNum 5 //敌机数目 
//定义全局变量
int canvas[High][Width]={0}; //定义元素,0为空格,1为飞机,2为子弹,3为敌机,4为右下边界 
int position_x,position_y; //飞机坐标
int enemy_x[EnemyNum],enemy_y[EnemyNum]; //敌机坐标
int score; //得分 
int Speed; //敌机速度
int bulletwidth; //子弹宽度 
void HideCursor()  //隐藏光标
{
 CONSOLE_CURSOR_INFO cursor_info = {1, 0};
 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
void gotoxy(int x,int y) //光标移动到(x,y)位置
{
 HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
 COORD pos;
 pos.X = x;
 pos.Y = y;
 SetConsoleCursorPosition(handle,pos);
}
void startup() //数据初始化
{
 position_x=High-2; //初始化飞机位置
 position_y=Width/2;
 canvas[position_x][position_y]=1;
 
 bulletwidth=0; //初始化子弹宽度 
 Speed=25; //敌机初始最小速度 
 int k;
 for(k=0;k<EnemyNum;k++)
 {
 enemy_x[k]=rand()%2; //初始化敌机位置
 enemy_y[k]=rand()%Width;
 canvas[enemy_x[k]][enemy_y[k]]=3;
 } 
 score=0; //得分初始化 
 
 HideCursor();
}
void show() //显示界面
{
 int i,j;
 gotoxy(0,0);
 for(i=0;i<=High;i++)
 {
 for(j=0;j<=Width;j++)
 {
 if(canvas[i][j] == 1)
 printf("*"); //输出飞机
 else if(canvas[i][j]==2)
 printf("|"); //输出子弹
 else if(canvas[i][j]==3)
 printf("@"); //输出敌机
 else if(canvas[i][j]==4)
 printf("#"); //输出边界# 
 else
 printf(" "); //输出空格
 }
 printf("\n");
 }
 printf("得分:%d\n",score); 
}
void updateWithoutInput() //无需用户输入的更新
{
 int i,j,k;
 for(i=0;i<High;i++)
 {
 for(j=0;j<Width;j++)
 {
 if(canvas[i][j]==2) 
 {
 for(k=0;k<EnemyNum;k++)
 {
 if(i==enemy_x[k] && j==enemy_y[k]) //击中敌机 
 {
 score++;
 if(score==5||score==10) //得分达到标准子弹加宽 
 bulletwidth++;
 canvas[enemy_x[k]][enemy_y[k]]=0; //生成新的敌机 
 enemy_x[k]=rand()%2;
 enemy_y[k]=rand()%Width;
 canvas[enemy_x[k]][enemy_y[k]]=3;
 } 
 }
 
 canvas[i][j]=0; //子弹自动上升
 if(i>0)
  canvas[i-1][j]=2;
 }
 }
 }
 for(k=0;k<EnemyNum;k++)
 {
 if(enemy_x[k]>High) //生成新的敌机 
 {
 canvas[enemy_x[k]][enemy_y[k]]=0;
 enemy_x[k]=rand()%2;
 enemy_y[k]=rand()%Width;
 canvas[enemy_x[k]][enemy_y[k]]=3;
 } 
 }
 static int speed=0; 
 if(speed<Speed) //敌机速度 
 speed++;
 if(speed==Speed)
 {
 for(k=0;k<EnemyNum;k++)
 {
 
 canvas[enemy_x[k]][enemy_y[k]]=0; //敌机自动下落 
 enemy_x[k]++;
 canvas[enemy_x[k]][enemy_y[k]]=3; 
 }
 speed=0;
 } 
 for(k=0;k<EnemyNum;k++)
 {
 if(enemy_x[k]==position_x&&enemy_y[k]==position_y) //飞机撞毁 
 {
 printf("游戏结束\n");
 exit(0);
 }
 } 
} 
void updateWithInput() //需用户输入的更新
{
 char input;
 if(kbhit())
 {
 input=getch();
 if(input=='w' && position_x>0) //控制飞机方向
 {
 canvas[position_x][position_y]=0;
 position_x--;
 canvas[position_x][position_y]=1;
 }
 else if(input=='s' && position_x<High-1)
 {
 canvas[position_x][position_y]=0;
 position_x++;
 canvas[position_x][position_y]=1;
 }
 else if(input=='a' && position_y>0)
 {
 canvas[position_x][position_y]=0;
 position_y--;
 canvas[position_x][position_y]=1;
 }
 else if(input=='d' && position_y<Width-1)
 {
 canvas[position_x][position_y]=0;
 position_y++;
 canvas[position_x][position_y]=1;
 }
 else if(input=' ') //space发射子弹
 {
 int left,right;
 int x;
 left=position_y-bulletwidth;
 if(left<0)
 left=0;
 right=position_y+bulletwidth;
 if(right>Width-1)
 right=0;
 for(x=left;x<=right;x++)
 canvas[position_x-1][x]=2;
 }
 }
}
int main()
{
 startup();
 system("color 2f");
 while(1)
 {
 show(); //显示界面
 updateWithoutInput(); //无需用户输入的更新
 updateWithInput(); //需用户输入的更新
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍C语言实现飞机订票系统,包括了C语言实现飞机订票系统的使用技巧和注意事项,需要的朋友参考一下 问题描述与题目要求 问题描述: 假定某民航有M个航次的班机,每个航次都只到达一个地方。试为该机场售票处设计一个自动订票和退票系统,要求系统具有以下功能: (1) 订票:若该航次余票大于等于乘客订票数,则在该航次的乘客表中,插入订票乘客的信息项,并修改该航次有关数据,否则给出相应信息。 (2)

  • 本文向大家介绍C语言实现打飞机小游戏,包括了C语言实现打飞机小游戏的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C语言实现打飞机小游戏的具体代码,供大家参考,具体内容如下 编译环境:vs2019 需求: 在同一个平面内,控制大炮发射的三个方向,空格发射炮弹,敌军和友军飞机会一直随机在天上飞过,击中天上飞行的敌军飞机加一分,击中友军飞机减一分 思路: 先初始化程序,再画出说明和地图,

  • 本文向大家介绍c语言实现一个简单日历,包括了c语言实现一个简单日历的使用技巧和注意事项,需要的朋友参考一下 满足三个需求: 1.输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。 2.输入年月,输出该月的日历。 3.输入年月日,输出距今天还有多少天,星期几,是否是公历节日。 最终完善版代码: 以上就是本文所述的全部内容了,希望大家能够喜欢。

  • 本文向大家介绍C语言实现简单扫雷游戏,包括了C语言实现简单扫雷游戏的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C语言实现简单扫雷游戏的具体代码,供大家参考,具体内容如下 步骤 1.首先打印游戏选择菜单 2.地图及初始化 1)、展示给玩家的地图(show_map) 2)、地雷的图(mine_map可知地雷的位置) 3.打印地图 4.用户输入坐标,并检查坐标的合理性 5.判断当前位置

  • 本文向大家介绍C语言实现简单弹球游戏,包括了C语言实现简单弹球游戏的使用技巧和注意事项,需要的朋友参考一下 电视机待机的屏幕上的弹球,怎么实现? 今天文章就跟大家分享下C语言实现简单弹球游戏的具体代码,供大家参考,具体内容如下 效果 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍C语言实现简单的三子棋,包括了C语言实现简单的三子棋的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C语言实现简单三子棋游戏的具体代码,供大家参考,具体内容如下 一、主要思想 1、创建一个3*3的棋盘(使用字符数组) 2、初始化棋盘(用空格填充) 3、打印棋盘(使其有可见的边框) 4、玩家落子,用x表示(检验是否越界,是否已经落子,是否赢) 5、电脑落子,用o表示(检验