#include "stdafx.h"
#include "Shooter0.h"
#include "Shooter0Mark.h"
CShooter0::CShooter0()
{
//载入图片
m_vImage.push_back(Image::FromFile(
_T("res/Foton The Desktop Hero 静.png")));
m_vImage.push_back(Image::FromFile(
_T("res/Foton The Desktop Hero 右.png")));
m_vImage.push_back(Image::FromFile(
_T("res/Foton The Desktop Hero 右上.png")));
m_vImage.push_back(Image::FromFile(
_T("res/Foton The Desktop Hero 上.png")));
m_vImage.push_back(Image::FromFile(
_T("res/Foton The Desktop Hero 左上.png")));
m_vImage.push_back(Image::FromFile(
_T("res/Foton The Desktop Hero 左.png")));
m_vImage.push_back(Image::FromFile(
_T("res/Foton The Desktop Hero 左下.png")));
m_vImage.push_back(Image::FromFile(
_T("res/Foton The Desktop Hero 下.png")));
m_vImage.push_back(Image::FromFile(
_T("res/Foton The Desktop Hero 右下.png")));
m_vImage.push_back(Image::FromFile(
_T("res/Foton The Desktop Hero Fire Path.png")));
m_vImage.push_back(Image::FromFile(
_T("res/Foton The Desktop Hero Left Fire 00.png")));
m_vImage.push_back(Image::FromFile(
_T("res/Foton The Desktop Hero Left Fire 01.png")));
m_vImage.push_back(Image::FromFile(
_T("res/Foton The Desktop Hero Left Fire 02.png")));
m_vImage.push_back(Image::FromFile(
_T("res/Foton The Desktop Hero Left Fire 03.png")));
m_vImage.push_back(Image::FromFile(
_T("res/Foton The Desktop Hero Left Fire 04.png")));
m_vImage.push_back(Image::FromFile(
_T("res/Foton The Desktop Hero Right Fire 00.png")));
m_vImage.push_back(Image::FromFile(
_T("res/Foton The Desktop Hero Right Fire 01.png")));
m_vImage.push_back(Image::FromFile(
_T("res/Foton The Desktop Hero Right Fire 02.png")));
m_vImage.push_back(Image::FromFile(
_T("res/Foton The Desktop Hero Right Fire 03.png")));
m_vImage.push_back(Image::FromFile(
_T("res/Foton The Desktop Hero Right Fire 04.png")));
// 设置本类的大小
RectF rc;
rc.Width = (float)m_vImage[0]->GetWidth();
rc.Height = (float)m_vImage[0]->GetHeight();
rc.X = 800.0f;
rc.Y = 600.0f;
SetRect(rc);
}
CShooter0::~CShooter0()
{
}
// 根据 自己当前的属性画自己
void CShooter0::Draw(Gdiplus::Graphics &gh)
{
switch(m_eStatus) {
case EStatus0: {
// 当前阶段,机器上下晃动
// 设置显示的图片
m_index = 0;
// 判断时间
if(m_timer0.IsTimeval()) {
m_bUp = !m_bUp;
if(m_bUp) {
// 位置向上移
auto pt = GetCenterPos();
pt.Y += 1.0f;
SetCenterPos(pt);
}
else {
// 位置向下移
auto pt = GetCenterPos();
pt.Y -= 1.0f;
SetCenterPos(pt);
}
}
gh.DrawImage(m_vImage[m_index], GetRect());
break;
}
case EStatusMove0: { // 移动 向右 画向右的图片
m_index = 1 + (EStatusMove0 - EStatusMove0);
gh.DrawImage(m_vImage[m_index], GetRect());
DrawMove(gh);
break;
}
case EStatusMove1: { // 移动 右上 画右上的图片
m_index = 1 + (EStatusMove1 - EStatusMove0);
gh.DrawImage(m_vImage[m_index], GetRect());
DrawMove(gh);
break;
}
case EStatusMove2: { // 移动 向上 画向上的图片
m_index = 1 + (EStatusMove2 - EStatusMove0);
gh.DrawImage(m_vImage[m_index], GetRect());
DrawMove(gh);
break;
}
case EStatusMove3: { // 移动 左上 画左上的图片
m_index = 1 + (EStatusMove3 - EStatusMove0);
gh.DrawImage(m_vImage[m_index], GetRect());
DrawMove(gh);
break;
}
case EStatusMove4: { // 移动 向左 画向左的图片
m_index = 1 + (EStatusMove4 - EStatusMove0);
gh.DrawImage(m_vImage[m_index], GetRect());
DrawMove(gh);
break;
}
case EStatusMove5: { // 移动左下 画向右的图片
m_index = 1 + (EStatusMove5 - EStatusMove0);
gh.DrawImage(m_vImage[m_index], GetRect());
DrawMove(gh);
break;
}
case EStatusMove6: { // 移动 向下 画向下的图片
m_index = 1 + (EStatusMove6 - EStatusMove0);
gh.DrawImage(m_vImage[m_index], GetRect());
DrawMove(gh);
break;
}
case EStatusMove7: { // 移动 右下 画右下的图片
m_index = 1 + (EStatusMove7 - EStatusMove0);
gh.DrawImage(m_vImage[m_index], GetRect());
DrawMove(gh);
break;
}
case EStatusFireLeft: { // 向左开火
DrawFire(gh);
break;
}
case EStatusFireRight: { // 向右开火
DrawFire(gh);
break;
}
default:
break;
}
}
void CShooter0::DrawMove(Gdiplus::Graphics &gh)
{
//只更新位置,直到到达为止
//如果到达,更新状态
if(GetRect().Contains(m_moveTo)) {
m_eStatus = EStatus0;
return;
}
// 否则移动机器人
PointF pt = GetCenterPos();
pt.X += 20.0f * cos(PI(2.0f) - m_moveDir);
pt.Y += 20.0f * sin(PI(2.0f) - m_moveDir);
// 设置中心位置
SetCenterPos(pt);
}
void CShooter0::DrawFire(Gdiplus::Graphics &gh)
{
// 画图片
switch(m_eStatus) {
case EStatusFireLeft: {
switch(m_index_fire) {
case 0: { // 小人转身
auto img = m_vImage[10];
RectF r = GetRect();
r.Width = (float)img->GetWidth();
r.Height = (float)img->GetHeight();
gh.DrawImage(img, r);
break;
}
case 1: { // 聚集能量
auto img = m_vImage[11];
RectF r = GetRect();
r.Width = (float)img->GetWidth();
r.Height = (float)img->GetHeight();
gh.DrawImage(img, r);
break;
}
case 2: { // 聚集能量
auto img = m_vImage[12];
RectF r = GetRect();
r.Width = (float)img->GetWidth();
r.Height = (float)img->GetHeight();
gh.DrawImage(img, r);
break;
}
case 3: { // 发射子弹
// 射击开始:发出一个子弹
g_game->Append(std::make_shared<CShooter0Mark>(
m_fireTo.X, GetRect().Y));
/* break **** 注意此处没有break ****; */
}
case 4: { // 发射激光
const float Y = GetRect().Y;
const float X = GetRect().X;
const float YY = Y;
const float XX = m_fireTo.X + 30.0f;
// 画小人身体,动作
{
auto img = m_vImage[13];
gh.DrawImage(img, X, Y);
}
// 画激光中间部分
{
auto img = m_vImage[9];
float left = X + 52;
// 拼接图片进行输出,因为中间部分长度不确定,不能事先确定图片的长度
while(left >= (XX + 60.0f)) {
gh.DrawImage(img, left, Y, (float)img->GetWidth(),
(flo
没有合适的资源?快使用搜索试试~ 我知道了~
C++项目开发实战入门 源代码.zip
共2000个文件
h:751个
cpp:548个
txt:309个
需积分: 0 8 下载量 87 浏览量
2023-12-26
22:59:42
上传
评论
收藏 123.1MB ZIP 举报
温馨提示
C++项目开发实战入门 源代码.zip
资源推荐
资源详情
资源评论
收起资源包目录
C++项目开发实战入门 源代码.zip (2000个子文件)
MRKJDatabase.cpp 52KB
MemoryCheatDlg.cpp 26KB
DialogDataImpExp.cpp 21KB
AccountDlg.cpp 20KB
SendDlg.cpp 20KB
DialogDataMaintenance.cpp 19KB
SysOptimizeDlg.cpp 19KB
Game.cpp 18KB
Game.cpp 18KB
Game.cpp 18KB
Game.cpp 18KB
Game.cpp 18KB
Game.cpp 18KB
Game.cpp 18KB
DialogStockFilter.cpp 18KB
ECSClientDlg.cpp 17KB
DialogMain.cpp 15KB
ClientSock.cpp 15KB
GObject.cpp 14KB
GObject.cpp 14KB
GObject.cpp 14KB
DialogHuShen.cpp 14KB
Shooter0.cpp 14KB
Shooter0.cpp 14KB
Shooter0.cpp 14KB
Shooter0.cpp 14KB
GameMap.cpp 14KB
GameMap.cpp 14KB
GameMap.cpp 14KB
GameMap.cpp 14KB
GameMap.cpp 14KB
GameMap.cpp 14KB
GameMap.cpp 14KB
GameMap.cpp 14KB
Shooter0.cpp 13KB
Shooter0.cpp 13KB
Shooter0.cpp 13KB
Shooter0.cpp 13KB
Shooter0.cpp 13KB
Shooter0.cpp 13KB
Shooter0.cpp 13KB
MrkjSystemDlg.cpp 13KB
pacman.cpp 12KB
pacman.cpp 12KB
DialogSetting.cpp 12KB
ClientSock.cpp 11KB
DialogRealtimeData.cpp 10KB
ECSSrvDlg.cpp 10KB
ScrollParent.cpp 9KB
CreateRegDlg.cpp 9KB
pacman.cpp 9KB
pacman.cpp 9KB
pacman.cpp 9KB
DialogCalc04.cpp 8KB
RvFileSock.cpp 8KB
DiskDlg.cpp 8KB
TaskDlg.cpp 8KB
Shooter2.cpp 8KB
Shooter2.cpp 8KB
Shooter2.cpp 8KB
Shooter2.cpp 8KB
Shooter2.cpp 8KB
Shooter2.cpp 8KB
Shooter2.cpp 8KB
SkinScroll.cpp 8KB
pacman.cpp 7KB
Game.cpp 7KB
Game.cpp 7KB
Game.cpp 7KB
Game.cpp 7KB
Game.cpp 7KB
Game.cpp 7KB
Game.cpp 7KB
DepartmentMng.cpp 7KB
Game.cpp 7KB
Game.cpp 7KB
TankEntry.cpp 7KB
TankEntry.cpp 7KB
TankEntry.cpp 7KB
TankEntry.cpp 7KB
TankEntry.cpp 7KB
TankEntry.cpp 7KB
TankEntry.cpp 7KB
TankEntry.cpp 7KB
TankEntry.cpp 7KB
Login.cpp 7KB
Game.cpp 7KB
Game.cpp 7KB
DialogHostoryData.cpp 7KB
DMenu.cpp 7KB
DMenu.cpp 7KB
DMenu.cpp 7KB
DMenu.cpp 7KB
DMenu.cpp 7KB
DMenu.cpp 7KB
DMenu.cpp 7KB
StockChart.cpp 6KB
GMap.cpp 6KB
GMap.cpp 6KB
GMap.cpp 6KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
白话Learning
- 粉丝: 3597
- 资源: 2584
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 瑞斯康达MSG-WR135编程器固件
- 单片机输出PWM案例.pdf
- Java项目基于springboot+vue的毕业生求职招聘系统拥有学校、学生和企业三种角色(源码+数据库)zip
- Django开发博客(5)-配置models.py以及views.py
- 海信智能电视刷机数据 LED48K380U(0000)BOM1-C005 生产用软件数据 务必确认机编一致 强制刷机 USB升级
- likeadmin这套框架专为快速开发业务项目而生,含管理后台、微信小程序、手机 H5、PC 端等,集成常见业务场景
- pdf2jpg,支持加密数据
- 基于STM32F103C8T6的PWM输出
- sping-cloud-advance
- 基于python的求职招聘网站 python+django+vue搭建的求职招聘管理系统-毕业设计 (源码+数据库+演示地址)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功