提示:新人入坑,采用的新手模板草草写就,望谅解
前言
在做课下的游戏设计作业时,因为一时乐趣加入了一些功能,最后的完成代码可玩性不错,于是决定分享出来。
提示:以下是本篇文章正文内容
一、代码原理和功能
代码采用了数组的方式,像一张无数格子(长宽相乘)组成的地图来存储每一格元素,并用数字赋值,以在打印时对应输出边框,飞机,子弹,敌机这些元素。若有用户输入,则对应改变格子的赋值,以及将之前的格子赋值为空白(移动的位置更新,即新的位置赋值元素,旧的位置将元素清除)。
同时为了扩展玩法,加入了难度选择,增强我方实力,RGB炫彩光效界面等功能,详情请阅读代码,如进入游戏界面按下y则开启RGB,按下l可以增强实力等等。
注释较多,应当容易看懂,当然,在程序员眼里,别人的代码都是(粗鄙之言)。
以下直接附上源代码:
二、成果展示
1.源代码
代码如下(示例):
#include <stdio.h>
#include<iostream>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
using namespace std;
#pragma warning(disable:4996)//屏蔽了4996的错误
#define High 30 // 游戏画面尺寸
#define Width 50
//#define BadNum 1 // 敌机个数
int BadNum = 1; // 敌机个数
// 全局变量
int defu = 0; //德芙巧克力!
int life = 0; //生命值 高难度下赋值为1,在分数达到落败分后加分续上一命
int MaxSpeed = 3; //敌机最大速度
int MaxWidth = 2; //最大弹幕数 即两边增加的弹幕数
int RGB = 7, on = 0;//rgb颜色参数,开关 通过改变RGB数值输出不同的符号颜色
int Plane_x, Plane_y; // 飞机位置
//int enemy_x[BadNum], enemy_y[BadNum]; // 敌机位置
int enemy_x[30], enemy_y[30]; //敌机最大数量
int map[High][Width] = { 0 }; // 二维数组存储游戏画布中对应的元素
// 0为空格,1为飞机*,2为子弹|,3为敌机@,4为 |,5为-
int score; // 得分
int FireWidth; // 子弹宽度
int EnemySpeed = 10; // 敌机移动速度
void HideCursor()//用于隐藏光标 //这两个函数无脑写上并加到打印里就可以解决刷新的闪烁问题
{
CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };//第二个值为0表示隐藏光标
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
void gotoxy(int x, int y) //光标移动到(x,y)位置
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(handle, pos);
}
void start() // 数据初始化
{
Plane_x = High - 2;
Plane_y = Width / 2;
map[Plane_x][Plane_y] = 1;
int j, k;
for (k = 0; k < High; k++) {//初始化边框
for (j = 0; j < Width; j++) {
if (j == 0 || j &#