C语言代码实现飞机大战

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

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

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

以下是源代码

#include<stdio.h>
#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)位置
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;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;   //飞机撞毁 游戏结束
 system("cls");
 printf("游戏结束!!!\n");

 }
 else
 {
  printf("分数 %d",score);
  }
  /** _getch();        //按任意键返回主界面
    system("cls");
    welcometogame();
 */ 

 }

void endgame()
{
 int k,f;
 system("cls");
 printf("输入1再玩一次,输入2返回主菜单,输入3退出游戏");
 scanf("%d",&k);
 system("cls");
 switch(k)
 {
  case 1:
   printf("重新玩游戏");
   system("cls");
   startup();   // 数据初始化
   show();
   break;
  case 2:
   printf("返回主菜单");
   system("cls");
   welcometogame();
   startup();
   break;
  case 3:printf("退出成功");
   exit(0);
   break;
  default:
   color(12);
   gotoxy(40,28);
   system("cls");
   printf("输入错误,输入任意键回到主菜单");
   _getch();  //输入任意键
   welcometogame();
   startup();
   system("cls");  //清屏
 }
}

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("mode con cols=100 lines=30");  //设置控制台的宽高
 welcometogame();
 startup();   // 数据初始化
 //explation();
 while(1)   // 游戏循环执行
 {
 gotoxy(0,0);
 show();   // 显示画面
 scoreandtips();
 if(flag == 1)
 {
  endgame();
 }
 withoutInpute(); // 与用户输入无关的更新
 withInpute();  // 与用户输入有关的更新
 }
 return 0;
 } 

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

(0)

相关推荐

  • C语言实现飞机小游戏

    本文实例为大家分享了C语言实现飞机小游戏的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<windows.h> int zdj_x,zdj_y; int zd_x,zd_y; int dj_x,dj_y; int speed; int map[21][41]; int score; int H=20,C=40; //墙是1:飞机2:子弹3:敌机4: void start()//设置初始值 { zdj_x=15; zdj_y=20; zd_x

  • C语言实践设计开发飞机游戏

    目录 一.前言 二.从设计初始菜单界面开始 三.游戏操作指南——guide函数 四.游戏的主体gamebody() ①简化通用的游戏框架 ②头文件一览 ③清屏函数的实现 ④光标隐藏函数 ⑤Initgame函数 ⑥show函数的实现 ⑦与用户输入有关的更新- updateWithinput ⑧与用户输入无关的更新-updateWithoutinput ⑨组合而成的gamebody函数 ⑩不足与展望 一.前言 [设计难度 : ★☆☆☆☆ [参考书籍:<C语言课程设计与游戏开发实践教程> [主要涉及

  • 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

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

    本文实例为大家分享了C语言实现打飞机小游戏的具体代码,供大家参考,具体内容如下 初学C语言总觉得不能做些什么好玩的,这个小游戏只需 "一点点" (千真万确)C语言知识就能完成! 总计不到200行的非空白代码(没有强行压缩行数) 操作说明: 1.W.S.A.D 控制 上 .下.左.右 方向,空格 攻击 2.每击中一架敌机增加1分,界面下方显示实时分数 3.撞到敌机后显示 game over! 2.5秒(时间可更改) 子弹连发 移动的同时发射子弹 飞机撞上敌机结束游戏 可通过更改相关变量的

  • C语言之飞机大战游戏

    本文实例为大家分享了C语言之飞机大战游戏的具体代码,供大家参考,具体内容如下 技术原型 1.void gotoxy(int x, int y) 函数,该函数可以使光标去到(x,y)的位置进行打印: 2.链表,用于存储状态: 3.windows.h中有非阻塞输入,_kbhit(): 4.随机生成数: 5.视觉暂留: 6.碰撞检测: 7.清屏函数: 8.设置边界: 技术路线 1.设置一个边界: 2.维护一个子弹的列表: 3.维护一个敌机的列表: 4.初始化飞机的位置: 5.每隔一秒钟生成一架敌机,生

  • C语言版飞机大战游戏

    C语言版飞机大战,供大家参考,具体内容如下 不多说直接上代码 #include<iostream> #include<windows.h> #include<conio.h> #include<time.h> #include<string> using namespace std; /*=============== all the structures ===============*/ typedef struct Frame { COOR

  • C语言实现打飞机游戏

    本文实例为大家分享了C语言实现打飞机游戏的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<time.h> #define U 1 #define D 2 #define L 3 #define R 4 typedef struct node //己方飞机的节点 { int x; int y; struct node *next; }node

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

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

  • 500行python代码实现飞机大战

    本文实例为大家分享了python代码实现飞机大战的具体代码,供大家参考,具体内容如下 import pygame import sys from pygame.sprite import Sprite from pygame.sprite import Group from time import sleep import pygame.font # 修改游戏的一些新设置 class Settings(): """存储<外星人入侵>的所有设置的类"&qu

  • Python三百行代码实现飞机大战

    目录 一. 动态效果图如下 二. 思路框架 三. Python代码实现 四. 小结 一. 动态效果图如下 先来看下飞机大战游戏最终实现的动态效果图. 二. 思路框架 plane_sprite.py文件内容 1.导入需要使用的模块 import random import pygame 在导入pygame之前,需要先使用命令: pip install pygame 进行包模块的安装 2.设置屏幕大小和刷新帧率等常量 3.创建继承于pygame.sprite.Sprite的基类GameSprite

  • 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语言实现简单飞机大战游戏的具体代码,供大家参考,具体内容如下 一.项目描述和最终的成果展示 项目描述: 显示出一个飞机,并可以控制移动,发出激光,打靶练习. 效果展示: 二.输出一个飞机模型 先输出一个飞机模型.后面再进一步完成控制飞机的功能. 代码如下: //输出飞机图案 #include<stdio.h> #include<st

  • C语言实现飞机大战小游戏完整代码

    大一课设做的飞机大战,可以进行登入和注册,这个是利用单链表做的,源代码已经给出,这个是最基本的飞机大战模式,我设置了几个功能,比如排行榜之类的.排行榜是用结构体数组做的,已及冒泡排序,并且在文件里保存信息.比较简单. 这个是注册页面规范: 这个是登入页面: 游戏菜单:  飞机大战页面:  话不多说,直接上代码 以下是源代码  #include"stdio.h" #include"windows.h" //用于获取窗口的句柄与屏幕控制 #include"co

  • C语言 完整游戏项目坦克大战详细代码

    话不多说 我们今天就来创造出属于我们自己的<坦克大战>,GOGOGO!!! 直接开始吧 这次的源码比较详细,我分了好几个cpp文件,思路更加的清晰,请耐心用心的观看 首先就是我们载入图片的函数tupian.cpp # include "tanke.h" 障碍物 void LaoWang(int * tilex, int * tiley) { IMAGE img; loadimage(&img, _T("res\\tile.bmp")); puti

随机推荐