自定义View6 -塔防小游戏:第三篇防御塔随意放置+多组野怪

这篇博客介绍了如何使用自定义View实现塔防小游戏,包括防御塔的动态添加、不可移动、弯曲道路的设计以及防御塔与野怪的交互。主要内容包括:开启和暂停游戏、防御塔的绘制、野怪路径的计算与渲染、防御塔的攻击逻辑以及炮弹动画的实现。文章探讨了多个防御塔的独立攻击以及野怪行走速度的控制问题。
摘要由CSDN通过智能技术生成

🚀 优质资源分享 🚀

学习路线指引(点击解锁) 知识定位 人群定位
🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

第一篇:一个防御塔+多个野怪(简易版)第二篇:防御塔随意放置第三篇:防御塔随意放置+多组野怪

1、动态addView防御塔

2、防御塔放置后不可以移动

3、弯曲道路

4、素材替换

第四篇:多波野怪

第五篇:杀死野怪获得金币

第六篇:防御塔可升级,增强攻击力,增大射程

描述:防御塔可以放置多个,每一个都是独立的,他们的攻击互不影响(防御塔随意拖动在第二篇),这里用到的知识是,自定义view的拖动,防御塔是否可以攻击的计算,防御塔的攻击路径。

1、放置防御塔

  • 新建类ActivityTower5,主要控制放置塔的回调
  • 新建BattlefieldView5,主要渲染战场
  • 新建TowerView5,主要绘制防御塔,(其实野怪也需要单独创建view)

1.1ActivityTower5首页该做些什么?

这次我们想要做成动态的,由用户自行开启,玩累了还能暂停,而且有钱可以创建多个防御塔(后续加入攻击野怪获得金币),所以创建开启按钮,暂停按钮,创建A炮(后续有B炮,C炮…),代码如下

xml version="1.0" encoding="utf-8"?
<layout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/layout\_relative"
 ......
 android:gravity="center"
 ......>

    <com.liu.lib\_view.tower.tower4.BattlefieldView4
 android:id="@+id/TowerView"
 ......
 />
    <LinearLayout
 android:id="@+id/bottom"
 ......>
        <Button
 android:id="@+id/start"
 ......
 android:text="开始"/>
        <Button
 android:id="@+id/pause"
 ......
 android:text="暂停"/>
        <Button
 android:id="@+id/create"
 ......
 android:text="创建A炮"/>
    LinearLayout>
RelativeLayout>
layout>

这次添加一些素材,这些都是在网上随便找的,一个背景图片,一个防御塔,一个野怪,这次做成横屏的,我们需要记录一下弯曲道路的xy坐标,封装成一个list(下面有解)。

1.2、BattlefieldView5渲染战场

集成ViewGroup,因为我们要在里面添加其他View,只有ViewGroup才有addView方法,这里我们声明一些属性,妖怪大道、野怪、防御塔画笔这些必不可少,我们这次是多个防御塔就要创建towerList来存储我们创建的防御塔,野怪数量也是如此。

注意:集成ViewGroup这里要写setWillNotDraw方法,不然onDraw()不执行。

我们设置完背景图片后,开始渲染战场,首先绘制道路,这次是弯曲的,会用到Path类,

  • moveTo(x,y)  移动的起始点
  • lineT
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值