C语言/C++ 之 打飞机游戏

这篇具有很好参考价值的文章主要介绍了C语言/C++ 之 打飞机游戏。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【项目简介】

1、设计思想:本项目主要是为了实现打飞机游戏,主要包括5个函数模块,和1个主函数框架。分别是chu_shi_hua();、you_cao_zuo;、wu_cao_zuo();、show();、main();等。项目完成过程中主要运用了C/C++中的输入输出流、调用函数、for循环函数、“清屏”函数、随机函数、以及无限循环函数等基本知识点。其中最难的三个函数模块设计思想如下:

(1)、构建主函数:首先得确定一堆数据的初始值,然后利用无限循环刷新函数实现游戏的运行。其中包含四个函数模块分别为数据初始化、游戏界面显示、无操作时函数、有操作时函数(按键)以及结束游戏语句即剩余关卡为0时游戏胜利,剩余生命为0时游戏失败。

(2)、编写游戏界面函数:为了让界面动起来,我选择了刷新函数,然后通过定义行和列来确定游戏中物体的位置,并在刷新的过程中实现行或者列的递增。

(3)、编写无操作函数:该函数里包含了速度的递增和击中与未击中和随机生成敌人语句。其中没击中两个敌人则速度加1  是通过的分判断例如if(de_fen%2==0) {level++;sheng_yu-=1;}。而击中敌人则隐藏子弹并且重新生成敌人,未击中则在生命减一的条件下随机生成一个敌人。

本项目是由小组成员共同协作完成,其中数据初始化模块由林正燃完成,无按键操作函数模块由薛泽鹏完成,其余函数由曹晶完成。

2、设计框架

(1)总体设计及功能框架

C语言/C++ 之 打飞机游戏

(2)打飞机游戏流程图

C语言/C++ 之 打飞机游戏

【使用工具】

Dev-C++

【数据结构】

int gao_du;         //界面高度:20

int kuan_du;        //界面宽度:25

int diji_weizhi_j;  //敌机位置  列:rand()%宽度; 

int diji_weizhi_i;  //          行:0

int wo_weizhi_i;     //我的位置:列:宽度/2            

int wo_weizhi_j;    //          行:高度-1;

int zidan_weizhi_i; //子弹位置:列:我的位置的列      

int zidan_weihzi_j; //          行:-1;

int de_fen;         //得分:0

int level;          //速度等级:0

int speed=0;        //速度:0

int sheng_yu=9;     //剩余关卡:9

int sheng_ming=5;   //剩余生命:10

【最终程序】

#include<iostream>

#include <conio.h>

#include <cstdlib>

using namespace std;

int gao_du,kuan_du;                

int dij_weizhi_j,diji_weizhi_i;

int wo_weizhi_i ,wo_weizhi_j ;  

int zidan_weizhi_i,zidan_weihzi_j;

int de_fen,level;       

int speed=0,sheng_yu=9,sheng_ming=5;

void chu_shi_hua()//确定一堆初始值

{gao_du=20;                         kuan_du=25;

 dij_weizhi_j=4;                      diji_weizhi_i=0;

 wo_weizhi_i =gao_du-1;             wo_weizhi_j=kuan_du/2;

 zidan_weizhi_i=-1;                   zidan_weihzi_j=wo_weizhi_j;

 diji_weizhi_i=0;                      dij_weizhi_j=rand()%kuan_du;//随机生成敌机

 de_fen=0;                         level=0;}

void show()//显示画面

{system("cls");//就是执行命令清屏的意思。

 int i,j;

 for (i=0; i<=gao_du;i++)

{for (j=0; j<=kuan_du;j++)

{     if(i==wo_weizhi_i &&j==wo_weizhi_j)   cout<<"我";//weizhi_i,weizhi_j分别表示我所在位置的行和列

   else if(i==zidan_weizhi_i&&j==zidan_weihzi_j)       cout<<"凸";//同上

   else if(i==diji_weizhi_i&&j==dij_weizhi_j)       cout<<"敌机";

   else if(i==gao_du)                            cout<<'-';

   else if(j==kuan_du)                           cout<<'&';//输出边界

   else                                           cout<<' ';}

                                                  cout<<endl;}

 cout<<"得分: "<<de_fen<<"   "<<"剩余生命: "<<sheng_ming<<"   "<<endl;

 cout<<"剩余关卡:"<<sheng_yu<<"   "<<" speed:"<<speed<<"   "<<endl;

}

void  wu_cao_zuo()

{

 if(zidan_weizhi_i>-1)              zidan_weizhi_i--;//子弹向上移动

 if(speed<sheng_yu)      speed++;//速度增加

 if(speed==sheng_yu)    

 {

if(diji_weizhi_i<gao_du)        {diji_weizhi_i++;}//敌机向下移动

 else                        {diji_weizhi_i=0;dij_weizhi_j=rand()%kuan_du;}

speed=0;}

if(zidan_weizhi_i==diji_weizhi_i&&zidan_weihzi_j==dij_weizhi_j)//击中

  {zidan_weizhi_i=-1;//隐藏子弹

  diji_weizhi_i=0;//重新生成敌机

  dij_weizhi_j=rand()%kuan_du;

  de_fen++;

  if(de_fen%2==0) //每击中两个通过一关

  {level++;sheng_yu-=1;}}

if (wo_weizhi_i ==diji_weizhi_i&&wo_weizhi_j==dij_weizhi_j||diji_weizhi_i==gao_du-1) //击中

  {sheng_ming--;

  diji_weizhi_i=0;

  dij_weizhi_j=rand()%kuan_du;} //生命值减一并且在随机生成一个敌机

}

void you_cao_zuo()

{char ch;

 if (_kbhit())//按键时 kbhit() 在执行时,检测是否有按键按下。

 {ch=_getch();

  if(ch=='a')    wo_weizhi_j--;

  if(ch=='d')    wo_weizhi_j++;

  if(ch=='w')    wo_weizhi_i--;

  if(ch=='s')    wo_weizhi_i++;

  if(ch==' ')    {zidan_weizhi_i=wo_weizhi_i -1;zidan_weihzi_j=wo_weizhi_j;}//子弹从我的位置发出

}}  

int main()

{ chu_shi_hua();  //确定一堆初始值

   while (true)    //无线循环以下操作

 { show();         //显示屏幕

   wu_cao_zuo();   //该函数是指在没有键盘输入时要做的

   you_cao_zuo();  //该函数时有键盘输入时要做的

   if(sheng_yu<=0)     {cout<<"你赢啦"<<endl;break;}  //剩余关卡为0时游戏胜利

   if(sheng_ming==0)   {cout<<"你失败了"<<endl;break;}//剩余生命为0时游戏失败

 }

 cout<<"******游戏结束啦*****"<<endl;

 return 0;}

【程序最终运行情况】

1.开始运行

C语言/C++ 之 打飞机游戏

代表游戏开始,空格键表示攻击。从“我”发出“凸”,“敌机”随机生成并从顶端下落。当“凸”遇到“敌机”时界面清除,子弹和飞机一起消失,得分加1,当“敌机”到达下边界时则生命减1,击中敌机两次后,敌机速度会提高。

2.暂停游戏

C语言/C++ 之 打飞机游戏

当鼠标左键点击界面时,点击处会变成白点然后游戏暂停,再次操作键盘游戏会继续进行。

3.游戏失败

C语言/C++ 之 打飞机游戏

如果剩余剩余生命为1时 敌机落入我方最后一行代表游戏失败,也可以理解为剩余生命为0时游戏失败。显示“你失败了”并且游戏结束。

4.游戏胜利

C语言/C++ 之 打飞机游戏

    如果剩余关卡为0时则代表游戏结束,显示“你赢了”并且游戏结束。

(注:可以更改初始化函数里的剩余生命以及剩余关卡或者更改if(de_fen%2==0)整除的数大小来改变每击中几个敌通过一关来改变关卡难度)

基础知识点:

谭浩强.C++面向对象程序设计(第三版)北京:清华出版社.2020

12for循环推广应用:

刘春茂,李琪.C语言程序设计案例(第一版)北京:清华出版社.2018文章来源地址https://www.toymoban.com/news/detail-497075.html

到了这里,关于C语言/C++ 之 打飞机游戏的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 设计模式-01.设计思想

    此系列文章非本人原创,是学习笔记。 下面讲一些常见的设计思想 这个原则非常重要,是一种非常有效的提高代码质量的手段,在平时的开发中特别经常被用到。 如何解读原则中的“接口”二字? “基于接口而非实现编程”这条原则的英文描述是:“Program to an interface, n

    2024年02月07日
    浏览(58)
  • 算法设计思想——动态规划

    是一种常见的算法设计方法,用于解决一类重叠子问题的优化问题。他的基本思想是将问题分解成多个重叠的子问题,递归求解,并将子问题的求解缓存起来,避免重复计算,从而得到问题的解。 动态规划通常适用于以下两个条件的问题: 1.重叠子问题:原问题可以分解为若

    2024年02月03日
    浏览(35)
  • Spring核心设计思想

    目录 前言: Spring是什么 什么是IoC 传统开发思想 IoC开发思想 Spring IoC 什么是DI 小结:     官网中提出:Spring makes programming Java quicker, easier, and safer for everybody. Spring’s focus on speed, simplicity, and productivity has made it the world\\\'s most popular Java framework.     Spring 使编程 Java 对每个人来

    2023年04月17日
    浏览(35)
  • 闪电网络协议设计思想剖析

    闪电网络可能是比特币之上部署的最受期待的技术创新。闪电网络,为由 Joseph Poon 和 Tadge Dryja 于2015年首次提出的支付层,承诺支持: 用户之间几乎无限数量的链下交易, 几乎免费, 同时利用比特币提供的安全性。 2016年时,至少三个公司——Poon 和 Dryja 的 Lightning、 Block

    2024年03月20日
    浏览(51)
  • 【Spring】核心与设计思想

     哈喽,哈喽,大家好~ 我是你们的老朋友: 保护小周ღ   谈起Java 圈子里的框架,最年长最耀眼的莫过于 Spring 框架啦,如今已成为最流行、最广泛使用的Java开发框架之一。不知道大家有没有在使用 Spring 框架的时候思考过这些问题, 什么是框架?Spring 是什么?如何理解

    2024年02月08日
    浏览(29)
  • Spring 核心与设计思想

    ✏️作者:银河罐头 📋系列专栏:JavaEE 🌲 “种一棵树最好的时间是十年前,其次是现在” 通常所说的 Spring 指的是 Spring Framework(Spring 框架)。 Spring 是包含多种工具方法的 IoC 容器。 IoC(Inversion of Control): 控制反转 \\\"控制反转\\\"又是什么意思? 下面以一个程序来举例。 假如我

    2024年02月02日
    浏览(41)
  • Spring框架核心与设计思想

    我们一般所说的Spring指的是Spring Framework(Spring 框架),它是一个开源的框架,Spring支持广泛的应用场景,它可以让Java企业级的应用程序开发变得更简单,官方一点的回答:spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级

    2023年04月15日
    浏览(33)
  • 从架构设计思想出发看Flutter

    Flutter 是一种流行的移动应用程序开发框架,它的设计特点之一是可以使用单一代码库构建 iOS 和 Android 应用程序。然而,对于功能比较多、模块比较复杂的应用程序,仅凭单一的代码库就可能导致代码的复杂性和维护难度的增加。在这种情况下,通过合适的应用程序架构设计

    2024年02月07日
    浏览(60)
  • Spring框架概述及核心设计思想

    我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,有着活跃而庞大的社区,这就是它之所以能长久不衰的原因;Spring 支持广泛的应用场景,它可以让 Java 企业级的应用程序开发起来更简单。 用⼀句话概括 Spring: Spring 框架是包含了众多工具方法的

    2024年02月16日
    浏览(27)
  • 【JavaEE进阶】Spring核心与设计思想

    我们通常所说的 Spring 指的是 Spring Framework (Spring 框架),它是一个轻量级的 Java 开源框架,有着活跃庞⼤的社区。Spring 是为了解决企业应用开发的复杂性而创建的,不仅⽀持⼴泛的应⽤场景,还让 Java 企业级的应⽤程序开发更加简单。 如何简单地使⽤⼀句话概括 Spring:

    2024年02月13日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包