基于Round1的游戏,在其中加入了更多的元素。

欢迎试玩以及提出意见。

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>

#define High 15                  //游戏画面尺寸
#define Width 25
#define EnemyNum 5        //敌机个数

int position_x,position_y;                                               //飞机位置
int enemy_x[EnemyNum],enemy_y[EnemyNum];         // 敌机位置
int canvas[High][Width] = {0};                                       //定义一个二维数组存储游戏界面中的对应元素(0为空格,1为飞机                                                                                             *,2为子弹|,3为敌机@)
int score;                                                                         //得分
int BulletWidth;                                                               //子弹宽度
int EnemyMoveSpeed;                                                    //敌机移动速度

void gotoxy (int x,int y)
{
HANDLE handle = GetStdHandle (STD_OUTPUT_HANDLE);
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition (handle,pos);
}

void startup ()
{
int k;
position_x = High-1;
position_y = Width/2;
canvas[position_x][position_y] = 1;
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;
BulletWidth = 0;
EnemyMoveSpeed = 20;
}

void show ()
{
int i,j;
gotoxy (0,0);
for (i = 0;i < High;i++)
{
for (j = 0;j < Width;j++)
{
if (canvas[i][j] == 0)
printf (" ");
else if (canvas[i][j] == 1)
printf ("*");
else if (canvas[i][j] == 2)
printf ("|");
else if (canvas[i][j] == 3)
printf ("@");
}
printf ("\n");
}
printf ("SCORE:%d\n",score);
Sleep (20);
}

void updateWithoutInput ()
{
int i,j,k;
static int speed = 0;
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 == 0) && (EnemyMoveSpeed > 3))

EnemyMoveSpeed --;

for (BulletWidth = 0;BulletWidth < 2;BulletWidth++)

{

if (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;
}
}
canvas[i][j] = 0;
if (i > 0)
canvas[i-1][j] = 2;
}
}
}
if (speed < EnemyMoveSpeed)
speed ++;
for (k = 0;k < EnemyNum;k++)
{
if ((position_x == enemy_x[k]) && (position_y == enemy_y[k]))
{
printf ("失败!\n");
Sleep (3000);
system ("pause");
exit (0);
}
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;
score --;
}
if (speed == EnemyMoveSpeed)
{
for (k = 0;k < EnemyNum;k++)
{
canvas[enemy_x[k]][enemy_y[k]] = 0;
enemy_x[k] ++;
speed = 0;
canvas[enemy_x[k]][enemy_y[k]] = 3;
}
}
}

}

void updateWithInput ()
{
char input;
if (kbhit ())
{
input = getch ();
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 == 'w')
{
canvas[position_x][position_y] = 0;
position_x --;
canvas[position_x][position_y] = 1;
}
else if (input == 's')
{
canvas[position_x][position_y] = 0;
position_x ++;
canvas[position_x][position_y] = 1;
}
else if (input == ' ')
{
int k;
int left = position_y - BulletWidth;
int right = position_y + BulletWidth;
if (left < 0)
left = 0;
if (right > Width-1)
right = Width-1;
for (k = left;k <= right;k++)
canvas[position_x-1][k] = 2;
}
}
}

int main ()
{
startup ();
while (1)
{
show ();
updateWithoutInput ();
updateWithInput ();
}
return 0;

}

Round3:我的黑白框雷霆战机进阶2相关推荐

  1. 雷霆战机源代码c语言,C++实现雷霆战机可视化小游戏

    用C++和easyx实现简单的雷霆战机小游戏 之前在网上看了许多关于c++或者是其他语言实现雷霆战机的帖子,大多不完整,或者是要付费才能阅读,现将源码展示如下,仅作学习交流之用. 基本原理 基本思路 ...

  2. JavaSwing多线程小游戏雷霆战机

    在做完连连看以后,想到要做一个多线程游戏,本来是做的一个跳伞的小游戏的.但是做到一半的时候,觉得可玩性太低了.后面想来想去还是打算做一个以前玩过的雷霆战机小游戏,也就是飞机大战. 1.效果展示 2.绘 ...

  3. c++ 实现雷霆战机可视化小游戏

    用c++和easyx实现简单的雷霆战机小游戏 之前在网上看了许多关于c++或者是其他语言实现雷霆战机的帖子,大多不完整,或者是要付费才能阅读,现将源码展示如下,仅作学习交流之用. 基本原理 基本思路 ...

  4. 当我给表弟用python写了个雷霆战机后

    雷霆战机大家都玩过吧,就这种的 才读小学的表弟,一到周末就打扰我上分,别人都是三年高考五年模拟,那我不一样,我直接给他写了个游戏自己到一边玩去,总不能教他爬虫吧,小小年纪不合适~ 一.准备工作 使用的 ...

  5. 雷霆战机装备最强推荐搭配

    雷霆战机中战机.装甲.副武器和僚机直接的搭配多种多样,下面就依据战斗力由低到高为大家带来雷霆战机装备搭配推荐TOP5,供大家参考. TOP5:突击-金刚-跟踪弹-机关炮 点评:典型的新手装备,毫无亮点 ...

  6. jq开发雷霆战机小游戏

    这是我写的第二个jq小游戏了写了一个多星期,挺不容易的,写篇博客记录一下 游戏界面: 英雄机有能量条:能量条的积攒通过打爆敌机和打boss获得,能量条到达20%英雄机的弹孔可以升级为双管炮火弹孔,能量 ...

  7. python及pygame雷霆战机游戏项目实战05 改进的碰撞

    项目详细介绍 项目详细介绍 在这个系列中,将制作一个雷霆战机游戏. 碰撞发生了什么? Pygame中的默认碰撞类型是使用collide_rect()函数,该函数使用两个精灵的rect属性来计算它们是否 ...

  8. Unity 3D学习之雷霆战机(一)

    雷霆战机(一) 注:本文包括雷霆战机的第一部分,在没书的情况下,慢慢摸索自己真的了解到许多知识,现于初学者分享并求指教,因为自己是初学者中间可能会有许多不成熟的地方或者错误的地方,望指教.再次重申本人 ...

  9. python 0基础如何做出雷霆战机?【源码送上】

    嗨害大家好鸭!我是小熊猫~ 大家都玩过雷霆战机吧? 这样的 我的qun友 才学三周就做出了雷霆战机这种游戏, 看起来确实不错啊~ 今天就实现一下雷霆战机的运作,开始整活! 一.准备工作 使用的软件版本 ...

最新文章

  1. MFC libraries are required for this project. Install them from the Visual Studio installer (Individu
  2. 第二篇:mysql_____sql语句语法格式
  3. Egret之JSZip高级应用:压缩JS
  4. VS2008 包加载失败导致VS2008打开 WebApplication项目时没有设计视图
  5. Android开发之代码开发部分字符串变色
  6. 亚马逊与Visa就交易费达成协议 重新接受Visa支付
  7. SAP License:财务帐与后勤不一致情况
  8. U盘安装CentOS7的最终解决方案
  9. Timeline Storyteller 现已加入自定义图表库
  10. 汇编语言——伪指令和汇编指令详解
  11. 关于Vue中v-if 和 v-for一起使用
  12. APP抓包教程 windows + mimtproxy +夜神模拟器 + XposedInstaller + JustTrustMe
  13. \t\tASE产生排名除使用identity外另外的方式(转载)
  14. 因式分解理论基础(1)一元多项式
  15. 爬虫实现自动登陆抽屉网,实现对文章点赞,收藏,评论
  16. Mesh Baker的基本操作与功能演示
  17. webpack-theme-color-replacer动态修改Ant Design Vue主题色
  18. 黄小宁罪大恶极!!!!!!!!!!黄小宁罪大恶极!!!!!!!!!!
  19. Failed to execute ‘btoa‘ on ‘Window‘: The string to be encoded contains characters outside of the La
  20. 1024 致敬程序员

热门文章

  1. tinymce 去掉 ⚡️Upgrade 按钮
  2. 盘后股价应声下跌1.54% 电信业“亚马逊“Twilio路在何方?
  3. 前端学习总结(十四)javascript设计模式
  4. Golang环境配置步骤
  5. 人总会有无奈和彷徨的时候,这个时候你就需要一盏明灯。
  6. 有限的时间精力,无止境的事业
  7. 16QAM + OFDM + Rayleigh fading系统
  8. 2022虎年送祝福小程序 程序源码
  9. 无穷滚动加载(v-infinite-scroll)
  10. java netty 教程_Java NIO框架Netty教程(十六)