当前位置: 首页 > news >正文

培训网站欣赏企业网络营销策略分析案例

培训网站欣赏,企业网络营销策略分析案例,个人电脑做网站违法吗,网站建设心得感想潜艇大战游戏的简单介绍: 包括三个场景: 开始场景,游戏场景,结束场景 开始场景: 2个按钮:开始游戏、退出游戏,分别对应不同的事件响应函数,点击开始游戏按钮,场景跳转&…

潜艇大战游戏的简单介绍:

 

包括三个场景:

开始场景,游戏场景,结束场景

 

开始场景:

2个按钮:开始游戏、退出游戏,分别对应不同的事件响应函数,点击开始游戏按钮,场景跳转,点击退出游戏按钮,退出程序

 

结束场景:

与开始场景类似的2个按钮:重玩游戏、退出游戏,分别对应不同的事件响应函数,点击重玩游戏按钮,场景跳转回游戏场景,点击退出游戏按钮,退出程序

最上方一个GameOver的精灵,位居其下的是一个标签显示本轮得分,得分的变量是一个位于游戏场景对应的MainScene类中的静态变量score保存

 

游戏场景:

一艘战舰:可以控制它左右移动但不能超过屏幕的左右边界,按下空格键向下发射导弹攻击潜艇,击中潜艇得分,潜艇销毁

三艘潜艇:分别位于水下不同深度左右移动但不能超过屏幕的左右边界,随机一艘战舰会向上发射鱼雷攻击战舰,击中战舰则游戏结束,跳转场景至结束场景,潜艇销毁后再生成一艘新的潜艇

 

涉及到的主要类包括:

StartScene

MainScene

OverScene

Warship

Submarine

Bullet及其相关的类

 

设计类图如下:

 

 

 

 

关于子弹的处理,引入了简单工厂模式和对象池:

设计思路:

本案例涉及到了两种子弹:战舰的子弹和潜艇的子弹,区别在于子弹的精灵、移动的方向、大小不同,其他行为基本一致

故设计一个基类Bullet,定义了子弹的基本属性,分别定义战舰的子弹类WarshipBullet,潜艇的子弹类SubmarineBullet,它们都继承自Bullet类,定义不同的子弹属性,在Bullet类中定义了初始化的虚函数,生成子弹的虚函数

virtual void initialize();//对变量初始化,留给子类重写

virtual Bullet* get_bullet();

在子类中重写:

void WarshipBullet::initialize()
{
set_sprite_name("warship_bullet.png");
set_speed(-3);
bulletType=BulletType::WarshipBullet;
}

Bullet* WarshipBullet::get_bullet()
{
return WarshipBullet::create();

}

 

void SubmarineBullet::initialize()
{
set_sprite_name("submarine_bullet.png");
set_speed(3);
bulletType=BulletType::SubmarineBullet;
}

Bullet* SubmarineBullet::get_bullet()
{
return SubmarineBullet::create();

}

再定义一个工厂类,在该类中定义一个静态函数:

Bullet* BulletFactory::createBullet(Bullet::BulletType type)
{
Bullet* b=NULL;
switch (type)
{
case Bullet::BulletType::WarshipBullet:
b=new WarshipBullet();
break;
case Bullet::BulletType::SubmarineBullet:
b=new SubmarineBullet();
break;
default:
break;
}
return b->get_bullet();
}

根据C++中的继承和多态的特性(动态联编):

(1)类之间有继承体系

(2)声明具有相同函数签名的虚函数

(3)由成员函数来调用或通过指针、引用来访问虚函数

于是根据传入的子弹类型,就可以得到不同类型的子弹

 

好处:

如果需要修改某种子弹的功能,只需要修改该种子弹对应的类即可

如果需要增减某种子弹,只需要增减该种子弹对应的类以及在子弹工厂中增减对应的switch分支即可

 

另外,考虑到子弹需要不停地生成和销毁,如果使用传统的方式,定义一个集合Vector<Bullet*> bullets保存子弹,不停地create然后pushBack,当需要销毁时eraseObject,这样不停地生成,销毁,会降低计算机的性能,于是引入了对象池:

 

设计思路:当需要销毁子弹时,只需要将它隐藏起来即可,当需要生成时先从集合中寻找,如果找不到,则生成子弹

 

相关代码如下:

Bullet* ObjectPool::spawnBullet(Bullet::BulletType type)
{
Bullet* bullet=NULL;
bool flag=false;
if(bullets.size()==0)
{
bullet=BulletFactory::createBullet(type);
bullets.pushBack(bullet);
flag=true;
}
else
{
for (int i = 0; i < bullets.size(); i++)
{
bullet=bullets.at(i);
if(!bullet->isVisible() && bullet->bulletType==type)
{
flag=true;
break;
}
}
}
if(flag==false)
{
bullet=BulletFactory::createBullet(type);
bullets.pushBack(bullet);
}
return bullet;
}
void ObjectPool::unspawnBullet(Bullet* bullet)
{
bullet->setPositionY(-20);//防止子弹留在原地不停发生碰撞
bullet->setVisible(false);

}

 

源代码与分析类图下载地址:

https://download.csdn.net/download/dmk17771552304/10490498

http://www.lbrq.cn/news/2791963.html

相关文章:

  • 淘宝网站开始怎么做seo在线推广
  • 网站域名选择搜索引擎营销的内容和层次有哪些
  • 厦门国外网站建设公司哪家好做一个网站的步骤
  • 备案博客域名做视频网站会怎么样站长之家端口扫描
  • 江门网站推广技巧方法网络营销怎么做
  • wordpress 最新模板seo怎么发布外链
  • 网站建设公司河南国外域名注册平台
  • 58同城做网站多少钱微博推广方式有哪些
  • seo网站怎么做百度seo优化服务
  • 专业网站制作公司采用哪些技术制作网站?sem对seo的影响有哪些
  • 包头做网站要多少钱温州网站建设
  • 网站客服 资料维护seo页面优化技术
  • 没有网站做cpa怎么赚钱网络营销策划书论文
  • wordpress页脚小工具栏关键词排名优化教程
  • 网站改版iis301跳转如何做计算机培训机构哪个最好
  • 网站建设综合推荐网络推广员是干什么的
  • 青岛网页建站模板网站制作的费用
  • wordpress 远程调用函数优化大师
  • 做旅游网站能成功百度云网盘
  • 大连做网站免费外链网
  • 宜春网站建设百度手机浏览器下载
  • 荔湾网站制作公司百度网站收录查询
  • 没有有知道钓鱼网站在哪儿做网络营销ppt怎么做
  • 做平台网站要增值业务吗大数据营销系统多少钱
  • 免费网站建设apk中国站长网站
  • 网建公司浅谈网站建设的目的和意义网站推广的概念
  • 佛山购物网站建设新浪舆情通官网
  • 网站是怎么建成的网络营销的基本职能
  • 各种网站解决方案百度一下搜索网页
  • 中国建网站报价宁波优化seo是什么
  • JeeSite 快速开发平台:全能企业级快速开发解决方案
  • week3-[分支结构]2023
  • 10M25DCF484C8G Altera FPGA MAX10
  • oracle官网下载jdk历史版本,jdk历史版本下载
  • ISIS高级特性
  • 应急响应常见命令