文章目录

  • 内容简介
  • 一、捕鱼达人是什么?
  • 二、具体代码实现
    • 1.调试环境
    • 2.代码实现
    • 3.运行演示
  • 小结

内容简介

本文介绍了一个看似是打飞机,实则称为捕鱼达人的小游戏qwq

我基于这个程序,修改了一些小bug,做了一些小的调整


以下是本篇文章正文内容

一、捕鱼达人是什么?

《捕鱼达人》是一款以深海狩猎为题材的休闲竞技游戏,相信有很多人玩过或者听说过

直接上图

本文实现的小游戏虽然名为打飞机,实际玩法更加类似于捕鱼达人

二、具体代码实现

1.调试环境

和上一期一样,环境为微软的Visual Studio 2015
(以后应该也都是这个。。)

2.代码实现

代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
#include <string.h>void HideCursor();  // 隐藏光标
void gotoxy(int x, int y); // 光标定位#define R 26  // 飞机每次随机尾x坐标最大值
#define N 20  // 通关分数int ax[3] = { 0 };  // 三个飞机尾坐标,全局
int y[3] = { 3,7,11 }; // 三个y轴,全局,查表法确定飞机的y轴位置 // 因为炮弹的飞行距离是一次加两个格子,为了奇偶对应这里的y轴必须都是偶数
int i;   // 循环用变量
int fd[3];   // 控制飞机种类void cshcxhs()    // 初始化函数
{system("title 打飞机小游戏");  // 标题system("mode con cols=100 lines=30"); // 宽100,高30HideCursor();    // 光标隐藏gotoxy(46, 12);    // 介绍游戏规则printf("游戏规则:");gotoxy(36, 14);printf("w a d键控制方向,空格键发射炮弹");gotoxy(26, 16);printf("击中敌军飞机 |---0> 加一分,击中友军飞机 >>>>>> 减一分");gotoxy(40, 18);printf("累计得分 %d 结束游戏\n", N);// Sleep(2800);system("pause");system("cls");int k;     // 循环用变量gotoxy(40, R);    // 初始化炮台for (k = 0; k < 17; k++)printf("_");gotoxy(46, R);printf("[_O_]");gotoxy(48, 25);    // 中间x:48printf("|");int j;srand((unsigned)time(NULL));  // 初始化随机种子for (j = 0; j < 3; j++)   // 初始化飞机的初始x坐标,写在循环之外{ax[j] = rand() % R;fd[j] = rand() % 2;}gotoxy(0, R);printf(" 得分:");   // 分数x坐标
}void hcfjhs()   // 画出飞机函数
{gotoxy(ax[i], y[i]);  // 首先在飞机尾处输出整架飞机if (fd[i] == 1)printf("|---0>");elseprintf(">>>>>>");gotoxy(ax[i] - 1, y[i]); // 清除飞机尾部留下的痕迹printf(" ");ax[i]++;   // 然后飞机尾坐标自增,下次自飞机尾输出整架飞机
}void dhpdxshs()   // 画出飞机,并让飞机在飞过x94的时候消失
{for (i = 0; i < 3; i++)  // 每架飞机都走一步{hcfjhs();if (ax[i] + 6 >= 94) // 判断每架飞机头有没有超过94{gotoxy(94, y[i]); // 满足条件在每架飞机的94处输出空格printf(" ");if (ax[i] + 6 > 100) // 每架飞机的飞机头超过100,则重置一个随机数{ax[i] = rand() % R; // 修改为小于R的随机数fd[i] = rand() % 2;}}}
}int da = 2;  // da = 1为最左 默认中间 炮台方向,全局变量
int yip = 0;  // 是否开炮,0不开,1,2,3三个方向
int rtde = 1;  // 是否发射完毕,必须等待炮弹发射完成int shells_x;  // 炮弹坐标
int shells_y;void ckkzhs()
{char ch;ch = _getch();if (ch == 'd' || ch == 'D'){gotoxy(49, 25);printf("/");  // 炮台右转gotoxy(47, 25);printf(" ");gotoxy(48, 25); // printf(" ");da = 3;   // 最右状态}if (ch == 'A' || ch == 'a'){gotoxy(47, 25);printf("\\");  // 转义转义字符gotoxy(48, 25);printf(" ");gotoxy(49, 25); //printf(" ");da = 1;   // 最左状态}if (ch == 'W' || ch == 'w'){gotoxy(48, 25);printf("|");gotoxy(47, 25);printf(" ");gotoxy(49, 25);printf(" ");da = 2;}if (ch == ' '&& rtde == 0) // 大炮处于发射完毕状态,且按下空格{if (da == 2)  // 中 炮台朝向yip = 2;if (da == 1)  // 左{yip = 1;shells_x = 45;  // 初始化炮弹的坐标}if (da == 3)  // 右{yip = 3;shells_x = 51;}shells_y = 23;  // 初始化炮弹的坐标}
}void dpfshs()   // 向三个不同方向发射炮弹
{rtde = 1;   // 循环,炮弹移动时代表未开炮完毕if (yip == 2){shells_x = 48;gotoxy(shells_x, shells_y -= 2);printf("o");gotoxy(shells_x, shells_y + 2);printf(" ");}if (yip == 1){gotoxy(shells_x -= 2, shells_y -= 2);printf("o");gotoxy(shells_x + 2, shells_y + 2);printf(" ");}if (yip == 3){gotoxy(shells_x += 2, shells_y -= 2);printf("o");gotoxy(shells_x - 2, shells_y + 2);printf(" ");}if (shells_y <= 1)  // 炮弹越界,消除炮弹{yip = 0;  // 炮弹越界,炮弹停下gotoxy(48, 1);  // 并消除printf(" ");gotoxy(23, 1);printf(" ");gotoxy(73, 1);printf(" ");rtde = 0;  // 炮弹越界,开炮完毕,可进行下一轮开炮}
}int score;   // 得分void pdfsjzhs()  // 判断是否击中和统计信息
{for (i = 0; i < 3; i++){if (shells_x >= ax[i] && shells_x <= ax[i] + 6 && shells_y == y[i])//击中时{if (fd[i] == 1)score++;   // 击中一次,得分加一else{score--;if (score <= 0)score = 0;}rtde = 0;   // 击中时,开炮完成gotoxy(ax[i] - 1, y[i]);  // 击中后,在原飞机尾巴处消除飞机printf(" ");ax[i] = rand() % R;  // 修改为小于10的随机数fd[i] = rand() % 2;  // 飞机种类发生变化gotoxy(shells_x, shells_y); // 在击中飞机的地方输出空格消除炮弹尸体printf(" ");shells_x = 0, shells_y = 0; // 炮弹击中飞机,炮弹越界,下一次空格将自动初始化炮弹}}gotoxy(9, R);printf("%d", score);if (score >= N)  // 游戏结束判断{system("cls"); // 清屏gotoxy(39, 15);printf("您通关了!!!  最终得分:%d !\n", N);gotoxy(0, 29);system("pause");exit(0);}}void process()  //流程
{while (1){dhpdxshs();  //飞机动画函数if (_kbhit()){ckkzhs(); //操作函数}dpfshs();  //大炮效果函数pdfsjzhs();  //判断是否击中和统计信息Sleep(18);}
}int main()
{cshcxhs(); //初始化程序process(); //流程return 0;
}void HideCursor()
{CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}void gotoxy(int x, int y)
{COORD pos = { x,y };SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}

3.运行演示


开始界面



游戏进行界面



因为调整屏幕大小而产生的一点小bug 0.0


小结

以上就是今天要讲的内容啦,看到这里不点个赞或者一键三连支持一下这个刚刚开始写博客的萌新博主嘛qwq你的关注和支持就是我进步的动力呐~

后续我会继续分享一些有趣的小游戏给大家哦~~
c++小游戏专栏保持不定期更新~~qwq

朋友们下期再见啦!!

c++小游戏——打飞机相关推荐

  1. 微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js)

    微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞 ...

  2. 安卓小游戏:飞机大战

    安卓小游戏:飞机大战 前言 前面写了十二篇自定义view的博客,说实话写的还是有点无聊了,最近调整了一下,觉得还是要对开发有热情,就写了点小游戏,现在抽时间把博客也写一写,希望读者喜欢. 需求 这里就 ...

  3. 微信小游戏《飞机打方块》源码分享

    微信小游戏<飞机打方块>源码分享 游戏使用CocosCreator v2.4.2开发 源码:https://gitee.com/propertygame/cocos-creator3.x- ...

  4. python小游戏代码大全打枪-python实现微信小游戏打飞机代码

    以前版本的微信小游戏有一个打飞机的游戏,学完python之后我试着写了下程序去基本实现打飞机的功能,下面是小游戏打飞机的python代码 注:python中部分代码转自crossin编程教室 impo ...

  5. Java Swing 经典小游戏《飞机大战》———— (四)碰撞检测 游戏状态与得分 玩家升级

    前期回顾 Java Swing 经典小游戏<飞机大战>---- (一)获取素材,创建窗口,添加滚动背景,双缓冲 Java Swing 经典小游戏<飞机大战>---- (二)玩家 ...

  6. 火箭工作室c++小游戏——打飞机

    这是第三次写博客了,我给大家发一个c++小游戏--打飞机. #include<bits/stdc++.h> #define PLAYERCOUNT 3 #define CARDSCOUNT ...

  7. python飞机大战加背景音乐_python实现飞机大战小游戏 python飞机大战中的音频文件怎么改成MP3...

    怎么样用Python写飞机大战游戏 python开发飞机大战外星人游戏怎么弄双人模式新的一年,哪怕仍是一个人,也要活得像一支队伍,为自己的头脑和心灵招兵买马,不气馁,有召唤,爱自由. 主函数 impo ...

  8. Java窗体小游戏开发飞机大作战Java小游戏开发源码

    Java窗体小游戏开发飞机大作战Java小游戏开发源码

  9. 用Three.js写h5小游戏-3d飞机大战

    用Three.js写h5小游戏-飞机大战 博主的话 运行图片 目录路径![在这里插入图片描述](https://img-blog.csdnimg.cn/20190829103702978.jpg?x- ...

  10. Python小游戏之 - 飞机大战 !

    用Python写的"飞机大战"小游戏 源代码如下: # coding=utf-8 import random import os import pygame# 用一个常量来存储屏幕 ...

最新文章

  1. nagios监控安装
  2. Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题
  3. ESLG.CommonUtility.NHibernateHelper的类型初始值设定项引发异常
  4. DC学院爬虫学习笔记(六):浏览器抓包及headers设置
  5. IOS--文件管理NSFileManager
  6. 判断Logger级别是否开启的方法
  7. 【笔记】jQuery源码(节点遍历)
  8. Java的Constructor(构造器)的理解
  9. Thread.sleep(0) 到底有什么用?
  10. java ftl 模板 输出list_关于在freemarker模板中遍历数据模型ListJavaBean的经验
  11. iapp软件库源码分享
  12. 一个简单的HTML网页——传统节日春节网页(HTML+CSS)
  13. Windows10+Caffe+CUDA7.5+VS2013环境配置
  14. [JZOJ5424]【NOIP2017提高A组集训10.25】凤凰院凶真
  15. CentOS 7.4 初次手记:第三章 CentOS基础了解
  16. 数码管动态显示从0显示到999999,每隔0.1s增加1个数
  17. 金蝶软件核算项目的介绍及使用
  18. NB-IoT窄带物联网的优势特点
  19. php小程序地图处理,微信小程序地图 map
  20. vue引入重写样式修改Element-UI表格背景色以及悬浮背景色,带操作的表格也可以修改呦~

热门文章

  1. 畅游陈德文:中国网游的发展与未来趋势
  2. MacQQ上接收的文件都放在哪?
  3. 0130更新:完美wine QQ2011正式版(5074)
  4. linux清华源地址,pip清华镜像源使用方法总结
  5. 视觉transformer图片处理思路
  6. c++实现LSTM,ADAM优化,预测大写数字
  7. 怎么在windows文件资源管理器中打开ftp
  8. 开热点给电脑消耗大吗_电脑连热点流量消耗大吗
  9. 模型压缩——重参数化
  10. 关于求职及面试的一些小技巧