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(); //需用户输入的更新
 }
}

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

(0)

相关推荐

  • C语言实现打飞机小游戏

    本文实例为大家分享了C语言实现打飞机小游戏的具体代码,供大家参考,具体内容如下 编译环境:vs2019 需求: 在同一个平面内,控制大炮发射的三个方向,空格发射炮弹,敌军和友军飞机会一直随机在天上飞过,击中天上飞行的敌军飞机加一分,击中友军飞机减一分 思路: 先初始化程序,再画出说明和地图,接着进入无限循环,循环中分别实现飞机不停地在天上飞.通过awd空格键控制游戏内容.符合游戏条件时加分三个主要步骤. 做法: 首先要实现飞机的动画效果,本质是要在控制台上输出三条x轴上输出一个字符串,并要让这三

  • 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; in

  • C语言代码实现飞机大战

    本文实例为大家分享了C语言实现简单飞机大战的具体代码,供大家参考,具体内容如下 这个游戏的功能很单一,也就是"飞机大战",哈哈哈哈.总共只有300多行代码左右,你也可以想想它会有多简陋,把它复制下来编译一下可以直接执行,需要的同学可以自取~ PS:我运行的环境是 dev c++,前提你要在C99的环境中执行 以下是源代码 #include<stdio.h> #include<stdio.h> #include<windows.h> //将用户从键盘获

  • python3实现简单飞机大战

    本文实例为大家分享了python3实现简单飞机大战的具体代码,供大家参考,具体内容如下 游戏分为两个部分:1.主程序 2.游戏工具 主程序实现:游戏循环,事件监听,图形绘制,位置更新,碰撞检测 游戏工具:封装背景精灵,子弹精灵,英雄精灵,敌机精灵 开发环境:pycharm 2018,python3 ,pygame 效果图: 目录结构: 代码: plane_main.py # coding=utf8 """ 游戏主程序 """ # 系统模块 imp

  • Python实现简单飞机大战

    本文实例为大家分享了Python实现简单飞机大战的具体代码,供大家参考,具体内容如下 功能 玩家飞机可以移动,可以发射子弹,敌机随机产生,自由坠落.未添加击落敌机的功能.主要用来练习类的封装与继承. 源码 # -*- coding=utf-8 -*- import pygame, random from pygame.locals import * class Base(object): def __init__(self, x, y, screen): self.screen = screen

  • jQuery实现简单飞机大战

    本文实例为大家分享了jQuery实现飞机大战的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title&

  • javascript实现简单飞机大战小游戏

    本文实例为大家分享了javascript实现飞机大战小游戏的具体代码,供大家参考,具体内容如下 效果图 html文件 <!DOCTYPE html><html lang='zh'><head>    <meta charset='UTF-8'>    <title>mm</title>    <link rel="stylesheet" href="./css/index.css">

  • python实现简单飞机大战小游戏

    为了熟悉Python基础语法,学习了一个经典的案例:飞机大战,最后实现效果如下: 实现步骤: ①下载64位对应python版本的pygame:pygame-1.9.6-cp38-cp38-win_amd64.whl ② 更新pip:python -m pip install --upgrade pip ③ 安装pygame:pip install pygame-1.9.6-cp38-cp38-win_amd64.whl ④ 实现代码如下: import sys  # 导入系统模块 import

  • C语言实现简单的飞机大战游戏

    目录 一.项目描述和最终的成果展示 二.输出一个飞机模型 三.实现控制飞机移动的功能 四.添加发射激光功能 五.添加靶子和分数统计功能 本文实例为大家分享了C语言实现简单飞机大战游戏的具体代码,供大家参考,具体内容如下 一.项目描述和最终的成果展示 项目描述: 显示出一个飞机,并可以控制移动,发出激光,打靶练习. 效果展示: 二.输出一个飞机模型 先输出一个飞机模型.后面再进一步完成控制飞机的功能. 代码如下: //输出飞机图案 #include<stdio.h> #include<st

  • C语言控制台实现字符飞机大战

    本文实例为大家分享了C语言实现字符飞机大战的具体代码,供大家参考,具体内容如下 先看看效果吧 大一的时候做的,当时没有好的代码习惯,所以代码有点乱,代码直接复制就能用了,功能可以自行拓展. 代码: #include <stdio.h> #include <stdlib.h> #include <conio.h> int main () { int life=6;//生命 int i,j/*循环*/,plane_x,plane_y/*飞机所在坐标*/,a; plane_x

  • Java实现简单的飞机大战游戏(敌机下落篇)

    本文实例为大家分享了Java实现简单飞机大战游戏,敌机下落的具体代码,供大家参考,具体内容如下 在实现这个游戏之前,我们首先需要知道项目可能要用到哪些知识点: 重绘,线程,双缓冲,数据结构的应用 差不多是这大概有这些,如果不够的话我们再加.首先,我们应该实现敌机下落,在这里大概思路和利用线程使小球下落差不多.不同的是,我在这里用到了三种敌机,分别为小.大.BOSS机三种.然后给予这三种敌机不同的下落规则(即速度.出现的时间.是否伴随子弹的发射等等)来给游戏适当的增加点难度. 以下是我的大概设计思

随机推荐