TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
- 软件类别:
- 毕业设计>JAVAWEB
- 软件大小:
- 100+ MB
- 软件语言:
- 简体中文
- 资源密码:
- 回复查看提取码
- 更新时间:
- 2016-12-8 14:17
①科帮网的核心思想是分享,我们更愿意会员拿出资源分享获得J币;
②不禁止转载!只要不恶意诋毁科帮网,不大量发布广告,科帮网欢迎同行合作,共同发展!做资源站就是为了分享;
③科帮网资源来自于网络,不保证每个资源的完整可用,当然如果为J币充值购买,资源出现问题,可联系客服处理!
友情提示本站毕业设计解压密码统一为本站网址www.52itstyle.com或者52itstyle.com
更多毕业设计可加QQ群:26490602
软件介绍
【大连理工大学】java坦克大战项目实训,坦克可以4个方向移动,炮筒可以随鼠标360度旋转,鼠标左右键射击,伤害/碰撞/技能/AI/特效。
1 p$ S5 |( k( l) ~, Z; U
i$ v1 P- ~ F* L8 h% E
# P% W$ B( ^" R/ _ B( C
, w: o: b. `5 B u; `/ b
8 b8 O1 ?2 b2 W: I4 u7 b. N) T
8 v' C% L+ r! v9 O6 O项目说明:; U; d8 F* x, p5 f+ t# @( Q
1.程序结构分析:
1 q5 v, K/ L1 b7 C--1.1 窗体: 顶层容器,用来显示画板等UI组件 * l5 ]( V) a. f( Z* A. r+ q" R2 e: R) R
--1.2 画板: 取出游戏数据进行绘制 & {9 j8 N' z6 v& F" d Q% ^' S6 E
--1.3 资源管理: 统一管理所有素材,任何地方可以直接访问
5 h* b* h d1 B--1.4 数据管理: 要求游戏中任何地方可以直接获取数据 0 s* I$ i6 u v6 y9 t
--1.5 中心计时器: 让画板反复绘制
) S# c7 j( w& o) Z, m) X. Y
, h. o% z& s( y( u3 ?% J) L+ J. G0 w8 c2 R
2.基础结构编写 ' U( w8 O: L3 s# i6 l- `) G! @
窗体:GameFrame extends JFrame / W# V: N2 j% r2 X0 i
画板:GamePanel extends JPanel , r! q- a! `& Y$ `1 t- |: p
资源管理:Res $ m2 W/ |+ `3 ]: d2 }8 A" [6 _& t
数据管理:Data
* o7 R/ @! Z/ U* F- L/ E中心计时器:Timer extends Thread
% T* \# B9 b3 G/ M$ @" J" }
+ q1 Q9 M7 y- K! s- U0 Z1 J$ t4 y* R5 t7 p
3.让坦克动起来
' r/ }4 _- s/ v% t: U9 _--3.1.在Tank中添加move方法,在画板重绘时调用 - _) C0 v! T/ ]4 W" ~! U
--3.2.在窗体中加键盘监听,控制玩家坦克移动
) e' s3 B C$ t. k9 }" I* j- p* K% x--3.3.边界限定,防止坦克移动到视野外
9 y8 c5 F3 w* j* G0 i
9 t; l [4 ]) D9 V5 R. Z6 }) t; B) A A
4.添加可以360度旋转的炮筒
, g( N6 f c$ {--4.1工具类 ( i% [9 s. R" }1 b1 E+ N( K, A
--4.2加入资源(红蓝炮筒) % T6 ]: d5 S; ~3 r! [9 y9 {
--4.3指定方向画出炮筒
/ o( h/ J, h" R) O--4.4加入target变量(目标点),geters and seters,绘制,加鼠标监听,设置目标点
4 Z2 [& r% z7 R2 Z; ^6 h: b& E! Y0 E% T
& A6 o+ h1 v7 ]: [6 b
5.让坦克可以打出子弹
! H* l3 h# }; z$ z--5.1 新建子弹类 " h0 X5 Z& J, P& g' v Q2 v2 O5 q
--5.2 把子弹加入到游戏架构中
; L2 R- Q3 H" p) i# J7 W--5.3 画出子弹 3 x e. y c; U
--5.4 attack ; ]( D, f$ E. \+ z2 ]- h" w( |
. I7 B- b$ G9 V# r
* l+ K8 R7 z$ I; Z6.解决前面问题,调整优化
6 ~( {3 }& h! v--6.1 将点系统数据换成double类型
' z) r$ Y% I+ t6 Y( n$ X; A--6.2 调整坦克的目标点位置在鼠标头部
, J9 l+ _# _1 d. k' k j$ K--6.3 把鼠标监听mouseClick改为mousePressed
+ B* i9 w6 a* r3 F% L: a--6.4 修改两点方向计算方式,让右方向为0度;调整炮筒与角度的关系; 2 x, g7 c/ L5 {1 k3 c3 ]
--6.5 子弹从炮口发出
. n. I. S9 y, U2 p+ ^8 |9 |, w9 `9 ]6 ^- p; W# d; p! ]- x
' _+ `$ Y3 X0 }$ m" \/ E. m% l
7.一大波机器人正在靠近
8 q* Z+ L; t" X2 V' O0 ]--7.1 分队伍,变颜色
& s! M5 {- z! P5 P3 D, A1 B8 v, S--7.2 创建Robot类继承Tank
8 o+ ^. [5 ~4 w# Z. Q! A! p7 s--7.3 简单AI让Robot动起来 ; O2 b3 d( c7 w; N' @+ I
--7.4 把Tank中的target的类型从awt.Point改为ZZPoint(属于数据调整优化) ! ^( [3 U& X$ O& F' x
--7.5 让Robot随机指定目标点 2 a6 E) t+ d- R1 n2 l
--7.6 让Robot随机指定玩家坦克进行攻击(坦克中的设置目标点方法对鼠标坐标进行了优化,这个优化会导致Robot目标点设置不准确,所以需要把那两句调整x,y的代码放到鼠标监听中) 2 X, K6 H5 N& s
2 `. x) E2 h: \1 |2 C. O: X/ L
6 b: s2 }+ Y+ H9 o4 X$ X
8.游戏数据的管理与维护 2 ^) }7 E8 E0 {: y4 L4 A' g
--8.1 工厂模式创建对象
, l: B, g" N7 G3 t--8.2 移除游戏数据的方法
8 O/ D6 p q+ ~+ f, _# M% t! @4 u3 ^6 U( x8 U
( x7 x/ A+ ]2 W3 Z+ x$ H( ]
9.这子弹是真的 " C4 O+ Q; a( b+ d F1 G
--9.1 在子弹移动过程中遍历所有坦克计算距离
4 Y5 V" a7 E1 n/ w( }0 {7 G--9.2 让子弹不伤害自己和队友 / t" `; s2 ~( F- v3 Z2 F
--9.3 给坦克加上攻击力和生命值 . F" _" r" }4 h/ A
--9.4 绘制血条
2 w3 i+ v( }1 J! D' g8 W* M( g5 K6 ~' I2 H: K. a6 R5 l* K0 s
+ K8 x% a: u; L10.特效 & d" m6 |* u- ^. U& _
--10.1 加载素材
. N! [( A3 C$ r( A: [& l2 O$ Q--10.2 编写Effect类,加入到游戏架构中
0 B. A/ ^" [3 O4 S' e$ M--10.3 实现多种特效,添加特效播放速度
& X/ @/ f ]0 X( [8 w& c0 H--10.4 特效播放次数
" x7 ~- P/ M8 \--10.5 特效跟随
) V2 n9 g+ \! V% _- ?, Q+ ~ c
1 Z( q( p$ \3 O6 m; ]5 Y
! }* L4 E0 F; H8 z0 {+ F密码:
. M0 G' ^- v" D- H y( A5 h' A |
|