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

本文介绍了使用C++和easyx库实现的雷霆战机小游戏,展示了核心代码,并强调代码仅供学习交流。游戏包含移动、射击、暂停等功能,需要自备图片和音乐资源。同时,提供了游戏须知、帮助界面、初始界面和退出游戏的逻辑。代码中还包含了外星人、飞机、子弹的类定义及交互逻辑。
摘要由CSDN通过智能技术生成

用C++和easyx实现简单的雷霆战机小游戏

之前在网上看了许多关于c++或者是其他语言实现雷霆战机的帖子,大多不完整,或者是要付费才能阅读,现将源码展示如下,仅作学习交流之用。

基本原理

f07cae2f72315d27c343e9b66e02fb2c.png

基本思路

4bebf68eadb2c98a3de19c2db285d3f5.png

代码如下

注意:运行代码所需环境为c++11或更高,代码中所涉及的图片、背景音乐等素材均需自行搜集并修改代码中的文件路径。

代码如有任何问题请在评论区指正,谢谢!

觉得帮到您了的话,可以考虑一下打赏博主呦,您的支持是我创作的最大动力!!!

/*seeting.h*/

#pragma once

void set_textstyle(LOGFONT& f, int high, int wei); //设置输出文字形式

void load_be_bk(); //加载初始背景

void help(); //帮助界面

void decorete(int x); //初始界面装饰

void home(int i); //初始界面

bool exit(); //退出游戏

/*seeting.cpp*/

#include

#include

#include

#include

#include "setting.h"

IMAGE be_bk01, be_bk02;

static int i = 0; //装饰时计数

void set_textstyle(LOGFONT& f, int high, int wei)

{

gettextstyle(&f); // 获取当前字体设置

f.lfHeight = high; // 设置字体高度为 48

f.lfWeight = wei;

_tcscpy_s(f.lfFaceName, _T("宋体")); // 设置字体

f.lfQuality = ANTIALIASED_QUALITY; // 设置输出效果为抗锯齿

}

void decorate(int x) //装饰

{

if ((x/10) % 2 == 0)

{

setlinecolor(RGB(255, 250, 250));

line(202, 662, 71, 549); line(1157, 403, 1117, 259);

setlinecolor(RGB(0, 238, 0));

line(1004, 413, 1157, 403); line(1188, 504, 1020, 534); line(228, 388, 202, 131);

setlinecolor(RGB(255, 69, 0));

line(202, 131, 404, 261); line(471, 493, 228, 388); line(1020, 534, 1307, 563);

setlinecolor(RGB(0, 245, 255));

line(1303, 291, 1034, 332); line(66, 373, 437, 600);

setlinecolor(RGB(191, 62, 255));

line(1178, 666, 1287, 616); line(404, 261, 202, 131);

}

else

{

setlinecolor(RGB(255, 218, 185));

line(1501, 155, 23, 213); line(437, 600, 471, 493); line(1287, 616, 1034, 644);

setlinecolor(RGB(84, 255, 159));

line(348, 315, 103, 263); line(269, 606, 39, 697); line(1094, 462, 1004, 413);

setlinecolor(RGB(30, 144, 255));

line(71, 549, 269, 606); line(103, 263, 66, 373); line(1307, 563, 1303, 291);

setlinecolor(RGB(255, 255, 0));

line(1034, 640, 1188, 504); line(1034, 332, 985, 254); line(39, 697, 348, 315);

setlinecolor(RGB(255, 0, 255));

line(1117, 259, 942, 593); line(942, 593, 1178, 666); line(985, 254, 1292, 105);

}

setlinecolor(RGB(255, 255, 255));

}

void load_be_bk() //加载帮助界面背景

{

loadimage(&be_bk01, L"image\\be_bk01.jpg", 1360, 760);

putimage(0, 0, &be_bk01);

}

void help() //帮助界面

{

while (1)

{

BeginBatchDraw();

load_be_bk();

decorate(i);

roundrect(526, 126, 834, 634, 30, 30);

roundrect(528, 128, 832, 632, 30, 30);

roundrect(530, 130, 830, 630, 30, 30);

LOGFONT f;

set_textstyle(f, 30, 5);

settextstyle(&f); // 设置字体样式

outtextxy(595, 170, _T("游 戏 须 知"));

line(550, 220, 810, 220);

set_textstyle(f, 20, 3);

settextstyle(&f);

outtextxy(555, 240, _T("① 按下 w a s d 移动飞机。"));

outtextxy(555, 280, _T("② 按下 空格 发射子弹。"));

outtextxy(555, 320, _T("③ 游戏中按 ESC 暂停。"));

outtextxy(555, 360, _T("④ 每撞机一次,生命值减少20,"));

outtextxy(555, 400, _T(" 通过本关,生命值恢复。"));

set_textstyle(f, 15, 2);

settextstyle(&f);

outtextxy(625, 525, _T("按任意键返回"));

line(550, 550, 810, 550);

outtextxy(605, 570, _T("制作不易,请勿抄袭"));

outtextxy(605, 600, _T(" ——木笔制作"));

i++;

EndBatchDraw();

Sleep(10);

if (_kbhit())

{

_getch(); break;

}

}

}

void home(int i) //初始界面

{

BeginBatchDraw();

loadimage(&be_bk02, L"image\\be_bk02.jpg", 1360, 760);

putimage(0, 0, &be_bk02);

int m = 465, n = 515; //输出框上下边界

for (int t = 0; t < 4; t++)

{

for (int j = 0; j < 4; j++)

{

roundrect(1110 + j, m + j, 1300 - j, n - j, 30, 30);

}

m += 65;

n += 65;

}

switch (i)

{

case 1:

for (int j = 0; j < 30; j++)

{

setlinecolor(RGB(0+j*5, 255 - j * 4, 217 - j * 5));

line(1120, 475 + j, 1290, 475 + j);

}

break;

case 2:

for (int j = 0; j < 30; j++)

{

setlinecolor(RGB(0 + j * 5, 255 - j * 4, 217 - j * 5));

line(1120, 540 + j, 1290, 540 + j);

}

break;

case 3:

for (int

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值