0.目录⭐

1. 摘要
2. 思路分析
3. 代码实现
       3.1 头文件
       3.2 测试文件
       3.3 模块文件
4. 总结

注:代码已上传github,欢迎大家克隆哦

1. 摘要⭐

大家是否还记得10年前微信小游戏打飞机引起的朋友圈混战?

大家是否还记得智能手机刚刚普及时熬夜刷分的干劲?

今天,我们就用C语言重温一波当年的峥嵘岁月。

2. 思路分析⭐

本游戏包含菜单、游戏主体两个部分

游戏主体又包括了飞机/激光的绘制以及靶子的生成/命中/得分两个模块

是较为简洁的

w ------ 上
s ------ 下
a ------ 左
d ------ 右
空格 ------ 发射激光

3. 代码实现⭐⭐

3.1 头文件

#pragma once#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <conio.h>
#include <time.h>#define TARGET_RANGE 47 //靶子横向出现的范围的极限void ShowTarget(int isKilled, int target_x);
void ShowAircraft(int isFired, int* isKilled, int target_x, int* score, int x, int y);

3.2 测试文件

#define _CRT_SECURE_NO_WARNINGS 1
#include "aircraftwar.h"// Shoot rays
//绘制激光
void isFired(int x, int y)
{int i = 0;int j = 0;for (j = 0; j < y - 1; j++){for (i = 0; i < x; i++){printf(" ");}printf("  |");printf("\n");}
}void Game()
{srand((unsigned)time(NULL));//Board();int i = 0;int j = 0;int x = 0;//飞机横坐标int y = 10;//飞机纵坐标int score = 0;//得分int isKilled = 0;//判断靶子是否被击中,0为未击中int SetTarget = 0;//判断是否需要重新生成靶子int target_x = 5;//靶子初始横坐标while (1){int isFired = 0;//Judge if a new target needs refleshing//在靶子被击中后,且再次进行了一次移动之后,靶子刷新,因为%的是2,可以修改if (SetTarget % 2 == 0 && isKilled == 1){target_x = rand() % TARGET_RANGE + 3;isKilled = 0;SetTarget++;}else if (isKilled == 1){SetTarget++;}char input = _getch();//_getch函数直接从键盘获取字符,无需回车system("cls");//每次在键入前清屏printf("==================================================\n");//Choose your next stepswitch (input){case 'w':y--;break;case 's':y++;break;case 'a':x--;break;case 'd':x++;break;case ' ':isFired = 1;break;default:break;}//Show a target when isKilled == 0ShowTarget(isKilled,target_x);// Print the aircraft while not fired or firedShowAircraft(isFired, &isKilled, target_x, &score, x, y);//Print current scoreprintf("==================================================\n");printf("                                          Score:%d\n", score);if (score == 10){printf("W i n!!!!!!!\n");printf("Wait 5 seconds......\n");Sleep(5000);system("cls");break;}}
}//打印规则
void Rule()
{printf("+ ------ target\n");printf("Destroy 10 target and win the game\n");printf("w ------ up\ns ------ down\na ------ left\nd ------ right\nspace ------ shoot\n");
}//打印菜单
void menu()
{printf("========        Aircraft      War             ========\n");printf("======================================================\n");printf("========               1.play                 ========\n");printf("========               2.rule                 ========\n");printf("========               0.exit                 ========\n");printf("======================================================\n");
}
int main()
{int choose = 0;do {menu();scanf("%d", &choose);switch (choose){case 1:Game();break;case 2:Rule();break;case 0:printf("Exit!\n");break;default:printf("Illegal input!\n");break;}} while (choose);return 0;
}

3.3 模块文件

#define _CRT_SECURE_NO_WARNINGS 1
#include "aircraftwar.h"//打印靶子
void ShowTarget(int isKilled,int target_x)
{int i = 0;if (isKilled == 0){for (i = 0; i < target_x; i++){printf(" ");}printf("+");printf("\n");}
}//飞机的操作
void ShowAircraft(int isFired, int* isKilled, int target_x, int* score, int x,int y)
{int i = 0;int j = 0;//打印不发射激光时的飞机if (isFired == 0){for (j = 0; j < y; j++){printf("\n");}for (i = 0; i < x; i++){printf(" ");}printf("  *\n");for (i = 0; i < x; i++){printf(" ");}printf("*****\n");for (i = 0; i < x; i++){printf(" ");}printf(" * *");printf("\n");}//打印发射激光时的飞机 else{for (j = 0; j < y; j++){for (i = 0; i < x; i++){printf(" ");}printf("  |");printf("\n");}for (i = 0; i < x; i++){printf(" ");}printf("  *\n");for (i = 0; i < x; i++){printf(" ");}printf("*****\n");for (i = 0; i < x; i++){printf(" ");}printf(" * *");printf("\n");//Judge if the target is targeted.//判断激光是否击中了靶子,并加分if (x + 2 == target_x && *isKilled == 0){*isKilled = 1;(*score)++;}}
}

4. 总结⭐

总结一下,我觉得小游戏最精髓的部分在于,用一次又一次的画面的重新打印来实现的玩家前后左右移动/射击时的动态效果

祝大家玩的开心!

⭐还记得10年前的微信小游戏【打飞机】吗?C语言实现!相关推荐

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

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

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

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

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

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

  4. 还记得诺基亚手机上贪吃蛇小游戏吗?

    诺基亚手机上的经典游戏 1. 贪吃蛇 2. 跳跳球 3. 熊猫爬树 还有俄罗斯方块等经典游戏,我就不11介绍了,欢迎大家在评论区中写下自己童年记忆深刻的游戏吧,如果写下了,希望大家可以动手去找到相应的 ...

  5. 微信小游戏之飞机大战解析

    一.从抄官方代码开始 1.1 首先是game.js,具体代码如下: import './js/libs/weapp-adapter' import './js/libs/symbol'import M ...

  6. python实现微信小游戏打飞机代码

    各位小伙伴们想要跟我交流的话可以微信扫一扫下面的公众号二维码,可以在公众号联系我哦~ python中部分代码转自crossin编程教室的代码 import pygame import random f ...

  7. 微信小游戏实战——飞机大战demo笔记完整篇(函数实现)

    1. 目录结构: 2. game.js:入口文件 //game.js文件完整代码: import Main from "./src/mian.js" new Main() 3. g ...

  8. C语言实现小游戏——模拟微信小游戏《最强飞刀手》

    C语言实现小游戏--模拟微信小游戏<最强飞刀手> 曾经玩过的微信小游戏,想着用C语言实现,只可惜,下图是我的上限. 这个下游戏界面简陋,把旋转的西瓜做成了平的接盘:实现的功能有:接盘的移动 ...

  9. 《欢乐坦克大战》微信小游戏开发总结

    <欢乐坦克大战>微信小游戏开发总结 <欢乐坦克大战>微信小游戏开发总结 前言 <欢乐坦克大战>是一款支持3V3实时对战并首批参与上线的微信小游戏中的作品.因为该游戏 ...

最新文章

  1. Android拍照得到全尺寸图片并进行压缩/拍照或者图库选择 压缩后 图片 上传
  2. 2018-3-18 中国计算机之母-- 夏培肃
  3. java各种容器内部实现原理
  4. 新浪微博登录密码加密函数 wsse加密算法说明
  5. 娓娓道来Promise
  6. AttributeError: module ‘tensorflow‘ has no attribute ‘placeholder‘
  7. 【Modelsim入门】新建项目,添加verilog文件,经编译的程序进行仿真
  8. android分辨率hdpi,Android资源 - 哪些分辨率应该进入hdpi,ldpi,mdpi和xhdpi目录
  9. 中国代工厂的困惑:把大牌t恤卖到99块3件,还会有人买吗?
  10. P3175-[HAOI2015]按位或【min-max容斥,FWT】
  11. dozer bean_使用Dozer框架进行Bean操作
  12. 【JS教程】100+常用JS函数(方法)
  13. XCode - 无法对iPhone真机调试的解决方法!
  14. 看看junit在一个具体的项目中
  15. 26、Eternal框架v2-框架设计 前置分发器 1、代码
  16. java编程题50道
  17. RocketMQ 5.0 POP消费模式
  18. 化工机械基础期末复习题及答案
  19. PS旋转复制方法制作
  20. 点击button没有反应

热门文章

  1. 并行计算(二):并行模型的分类
  2. 起点——2015年终总结
  3. 钙锌复合稳定剂-市场现状及未来发展趋势
  4. 惠普笔记本禁用触屏功能
  5. jQuery slideToggle() 方法
  6. java写的坦克大战
  7. configure 配置选项
  8. 【附源码】计算机毕业设计java智能居家养老服务平台设计与实现
  9. Linux上的集成开发环境
  10. WebChat 清爽来袭 - JavaChat系统Ⅳ