|
|
如果你会一点C、C++语言,你就可以学习游戏编程了,开发真正的游戏!如果你学过一点C++更好,没学过也没关系。本课程教你从零基础开始开发7个完整的游戏:Brainiac、Light Cycles、Henway、Battle Office、Meteor Defense、Space Out、Stunt Jumper。教程无KEY wmv版本,手机平板等移动设备均可观看!/ x8 c! g/ v8 \7 P& R7 e
【课程目录】7 z7 Q+ S" ], m5 _, u6 F0 }5 Q
第1部分 入门 ' o7 s- r! A J7 {5 U
第1章 学习开发游戏的基础知识 5 c& H) v- V' ?( ~; C2 X
1.1 认识视频游戏
7 s5 G, h A8 G; z 1.1.1 为什么人们如此沉迷于开发视频游戏 0 k0 l. u/ O8 l4 U8 L6 n" C
1.1.2 视频游戏的类型
' o7 q8 I/ ^( }( _ Z1.2 学习游戏设计的要素
9 a; e1 r' v; i) x# e$ g c 1.2.1 提出基本思想
' ^' m: ~4 Q+ s) x. C6 b; x 1.2.2 整理剧情
. V3 O. z* J i# y- z1 B# W 1.2.3 可视化图形
% ^ X. R w+ s2 H 1.2.4 为游戏选择正确的声音 . W+ A! b& @4 ?5 o3 M
1.2.5 使用控制器控制游戏
. D2 Q4 _; z& b9 j7 G 1.2.6 确定游戏模式 & H: H2 Y9 ~2 ?7 c! K& |
1.3 面向对象的编程和游戏
9 ~9 r2 }" [1 |2 m; Y4 a' B 1.3.1 理解OOP / Z9 r! ^( u7 o3 ]5 f0 T
1.3.2 在游戏中应用OOP
0 [. E6 i1 O: O$ k6 o* w1.4 研究相关工具
5 g3 B3 {4 q9 W, k& h- M 1.4.1 编译器和开发环境
) g D* W0 n8 y9 \7 I 1.4.2 选择图形工具
( R* A% x+ W2 X$ y4 O 1.4.3 选择声音和音乐工具 8 W. J. y: {. o! n% r
1.5 小结 u! V3 y+ o& l4 p& e4 C7 |5 c Q
1.6 亲身实践 $ Q" b, N4 \( W! {2 R, l+ V
第2章 创建游戏引擎 & @2 Z7 x' r" R0 r5 ^* D
2.1 什么是游戏引擎
$ B, N4 P+ T9 Z4 a/ Y; a# i: h2.2 考虑游戏引擎的作用
8 B+ m* ?( y8 H0 q4 a( Q, ^, n) Z; ? 2.2.1 将游戏分解为事件 7 {0 W/ E$ C! M! Z/ t
2.2.2 建立游戏的计时机制
3 M( D- q4 b* r+ Q+ g/ Q2.3 开发游戏引擎 " z: s7 X& T; p2 ^
2.3.1 游戏事件函数 - D* f4 @2 r2 @3 P; g& g
2.3.2 GameEngine类 ; _4 C% B) u% r- z+ {- j3 x
2.4 开发Blizzard示例 4 I- D8 P: O" Z6 e+ i
2.4.1 编写程序代码 ! R: Z" Z" D! H) @/ ~
2.4.2 测试完成的程序 , V0 \6 U+ _- M9 k2 f; z8 N [! ?
2.5 小结
- E! I0 l4 P& |2.6 游戏大变身 6 D; \: U3 {7 T0 ^" U3 I: c4 O
第3章 学习绘制基本图形 " s0 Q" `' f+ U8 S, u
3.1 图形基础
2 [6 T8 y r- _2 {0 t 3.1.1 理解图形坐标系统
5 d4 y7 p4 z: [7 L' \+ S# ? 3.1.2 学习颜色的基础知识
2 w' I" |# ]' C- g" x3.2 查看Windows中的图形 # i! B: o- r" U8 ^' W6 q% B5 M
3.2.1 使用设备环境 5 r) [' g- X# T5 y2 W8 f
3.2.2 使用画笔写
0 I" W$ m' b( |; ] 3.2.3 使用画刷绘制
; r' t5 @' o' Y# P 3.2.4 使用位图绘制图像
7 ?: @0 K9 @# d" z" h3 m 3.2.5 使用调色板管理颜色
2 g# W- Y) w% W/ G0 F' z" O8 d3.3 绘制窗口
3 e6 H6 T j3 x, R6 y 3.3.1 绘制文本
+ O6 y" w* i/ @; q+ X2 y5 k 3.3.2 绘制图元 4 d% M. _7 D0 |4 t7 ?
3.3.3 使用画笔和画刷
3 s# V1 N- l3 t# z' k- `. e$ X3 T3.4 开发Crop Circles示例 / Z+ @8 ?% l$ u6 W9 G: t
3.4.1 编写程序代码 6 u( x% i( O. |' d* @
3.4.2 测试完成的程序
' M, o$ {: }% O8 e" W( M3.5 小结 0 e! c# G6 d6 o! r8 \
3.6 亲身实践 ' B3 w, `& I" c0 U" V
第4章 绘制图形图像 - K# g' p, X6 [9 G7 U- r& }3 G
4.1 位图图像的基础知识
5 r5 m! o" R- H4.2 深入学习位图 ' i, ?3 w- K) I' N7 Z3 H
4.3 开发位图类
( Z. p# J2 i# W 4.3.1 位图类的工作原理
0 b$ o+ [( F2 p4 K T 4.3.2 整合代码 3 g) p# Z* N$ N4 S) I
4.4 开发Slideshow示例 4 v5 I, Y: ~( H: E! G
4.4.1 编写程序代码 : {$ K8 D" W! v( t/ D0 m$ d7 _
4.4.2 汇集资源 / J4 o; P8 y% e2 }; L% D+ ?/ s
4.4.3 测试完成的程序
6 A8 H* V F$ Y5 L4.5 小结 0 S; v: @0 R' r9 I) ~$ G
4.6 游戏大变身
; u( W4 X$ r5 p* B9 b第2部分 与游戏玩家交互
, z: O" I, j$ {$ B/ ~5 D: s M9 \5 U第5章 使用键盘和鼠标控制游戏
2 \( j: l7 m& n1 T( y1 N- l2 ^' U5.1 游戏与用户输入
* h1 G+ f+ |: t v5.2 了解用户输入设备 + A7 {# @- n0 C( V3 _
5.2.1 接受键盘输入
* p+ `& d. m' }, D- j% B 5.2.2 响应鼠标
* F. {3 Y1 W, A( w2 A4 I 5.2.3 使用游戏杆交互
' `0 Z$ {% q; N: f6 a% j0 G/ o5.3 评估游戏的键盘输入 7 w; u5 u2 l2 r
5.4 跟踪鼠标 : i% N& U7 W7 P8 b+ @/ e4 `, v
5.5 向游戏引擎添加输入支持 ( V0 {# X9 q2 E
5.5.1 添加键盘支持 # [+ U5 |# C1 O) q$ w* Z
5.5.2 添加鼠标支持
( e: Y4 `! _+ g& d% q; y3 n 5.5.3 修改Bitmap类 # h# Z2 ~2 k9 I
5.6 开发UFO示例
/ |' |, F5 o# X7 @/ y% W 5.6.1 编写程序代码 ' Z' X) j9 E$ s5 v |0 B# m
5.6.2 测试完成的程序
9 F8 w$ v+ Z" M, r' m8 x" X' \5.7 小结 7 {' x# ~9 V0 V- ~0 x
5.8 亲身实践 : ^' Q. b1 Q- i: d" v% b5 ], ]" b
第6章 示例游戏:Brainiac ' P( e' U: G# s- J
6.1 游戏的玩法
' f( z: a+ s; g- c# x3 p7 ?; V, S# F- Z- N6.2 设计游戏 5 Z* C1 C' O# k$ m* Q6 P
6.3 开发游戏
! m( G& g O) s, S+ D$ V6.4 测试游戏
5 }" L" ?& v0 k& p6.5 小结
0 H; g0 y0 l% T6.6 游戏大变身 0 F7 Z0 x6 K* N; d/ I. H
第7章 使用游戏杆改进输入
& b9 F$ l6 ]9 S! G: \7.1 了解游戏杆的基础知识
3 R# _$ a$ n4 S f9 C7.2 校准游戏杆 - c& S& L' b: C( g
7.3 追踪游戏杆的移动 & ?3 B' r5 T9 I7 u5 }2 W3 H
7.4 向游戏引擎添加游戏杆支持 + F T9 y- a1 I7 e
7.4.1 访问Win32多媒体功能 7 z) z$ s5 _; l, t3 R, E6 S
7.4.2 开发游戏杆代码 % _+ ?' ^2 [. o
7.5 开发UFO 2示例 3 n& g9 c! Y, r! r0 ^3 O0 |
7.5.1 编写程序代码 2 \' Z" t7 d1 g& N, }5 N
7.5.2 测试完成的程序
! T \% B J) H: X7.6 小结
; `2 T, k; q8 @7.7 亲身实践
8 a1 Y* N9 }3 d+ n, v第8章 示例游戏:Light Cycles
% B0 j" \3 L! _1 i8.1 游戏的玩法 7 D: n( I, V M7 m: j
8.2 设计游戏 6 m8 w% u7 ~: j5 G! v- g
8.3 开发游戏
+ @3 R7 G7 X& g1 t! i8.4 测试游戏
/ L' K% t0 [! z6 ~) l8.5 小结
5 \) l0 {: S+ J$ N. k8.6 游戏大变身
* S E; I' g: N6 Z第3部分 在游戏中使用子画面
/ b# q9 b$ J0 w" I5 o. ? \" a第9章 使用于画面动画移动对象 S' }7 k2 l3 S C4 S2 {; N
9.1 理解动画的基础知识
* Y! o' c" U7 ^& b& |" R% E. | 9.1.1 动画和帧频 " ]$ _6 @; G5 P( W; X$ |7 ~
9.1.2 了解计算机动画 9 I5 A- U5 U% b
9.2 2D动画与3D动画 2 D! t4 h+ b; ?. y/ ?
9.3 理解2D动画的类型
3 G% v6 z7 y6 p8 c- U2 U( t 9.3.1 基于帧的动画 4 z. Q7 H' Y1 O
9.3.2 基于形状的动画
0 g4 |+ i G9 R7 x) @9.4 将子画面动画应用于游戏
% _$ U0 }6 N2 f/ k( T: x5 m9.5 设计通用的子画面 " T. B( d2 f- B9 I$ K4 ] C |4 _& b
9.6 创建Sprite类 # y: A" ]9 A& J5 _
9.6.1 创建和破坏子画面 8 W3 ]( R! _6 Z. V, S
9.6.2 更新子画面 5 M( Q, g3 c$ Y6 I. |
9.6.3 绘制子画面 % }8 A. X$ u, s3 I. q
9.7 开发Planets示例程序
1 U2 S* l2 H) M2 f% t5 l 9.7.1 编写程序代码 * r! e. {* G" y) b: _0 h
9.7.2 测试完成的程序 $ X) \3 R3 k6 ]& ]8 t
9.8 小结
1 W- I% i u- c- Y; \9.9 亲身实践 7 d% J" b9 y) T! ^
第10章 管理子画面
$ U. G2 Q& E5 _: g3 |; X5 y& i10.1 了解管理子画面的需求 / A: P% R+ h$ d" `
10.2 设计子画面管理器 - k/ s: [' M5 k# R. c; m
10.3 向游戏引擎添加子画面管理器 3 D% ?9 Y( n5 H( V8 K
10.3.1 改进Sprite类
7 Z+ m" N- i C" t; c8 q 10.3.2 增强游戏引擎
4 \2 ]7 ?: _ b' d, {10.4 使用双重缓存消除闪烁
1 b9 f; t, \# U) H' I5 h10.5 开发Planets 2示例 / Z- @2 u- |7 P1 q6 u4 C: ~
10.5.1 编写程序代码 ' E- S5 ]1 m8 @% `5 \# U
10.5.2 测试完成的程序 , m0 p9 ?( ]; o* I. k) B8 x% N1 j6 _
10.6 小结
& |8 |7 _/ @' @+ T& s1 l10.7 游戏大变身
7 ~) f$ u/ T! X7 x W第11章 示例游戏:Henway 0 r8 ]- }; X/ h2 x" n
11.1 游戏的玩法 # s/ O9 }6 J b$ P
11.2 设计游戏
3 @& r# b3 ]; _# l) W11.3 开发游戏
+ Y) l, c2 v4 {, [1 t+ V# Z' b3 S11.4 测试游戏
; A6 S; f' S- ~2 U3 g11.5 小结
+ Q9 n: `$ z0 H2 c+ Z/ f11.6 游戏大变身 # m: c' T+ s1 h; b) a
第4部分 使用声音和音乐
; n, e1 D& ?' I2 S7 Y第12章 播放数字声音效果
' ~5 j2 L! E0 d5 J3 c1 G0 I- R9 \# s12.1 理解数字声音
) K' p! p* Y$ C& L- P12.2 了解Windows波形声音 3 l* ^6 x" g+ y6 Z
12.3 了解声音工具 : v9 r6 M' c C
12.3.1 Sony Sound Forge
) l% \- V$ s& g. W- w3 u( j& {0 [ 12.3.2 Adobe Audition
) v+ c k: m& |- H1 p# @; q 12.3.3 廉价的声音编辑器
& Q, d1 U* f6 |& {12.4 创建和编辑声音
- I6 R+ p" y& o% U: J0 Q* A12.5 查找声音和音乐
& n* V4 }- z v. Y8 u: h12.6 访问波形声音
9 i, p' ?1 M3 s+ z* Y5 i+ W5 F# C+ q12.7 播放波形声音 4 }" I2 Q3 `! \ I4 P) ]7 D
12.7.1 播放文件中的波形声音 4 q0 y: @8 K0 w" ~, B; B$ W8 ~" R
12.7.2 播放作为资源的波形声音
7 N* K+ T3 w. R; H' }9 P. {% g! V 12.7.3 循环播放波形声音 ) O8 P; L' k2 H, a! w$ o6 C
12.7.4 停止播放波形声音
, |8 Q1 I$ m" K5 p& Y( k# r12.8 开发Brainiac 2示例程序
0 \! x( G, h e. q x% j& m 12.8.1 编写程序代码 / x/ Y6 u9 C2 M! X
12.8.2 组合资源 * P4 n \7 ~, B& d
12.8.3 测试完成的游戏
5 s! j7 ]6 {+ r( Q: E, c2 C12.9 小结 ! V; f! k: n- W# Q& ]9 x& |, Z
12.10 亲身实践 2 z( m! w; }+ `! d% i) ^
第13章 播放MIDI音乐
, G6 G& \. H$ [" i! T9 f13.1 感受MIDI音乐
- Q- V' |2 k+ _5 C! n5 R13.2 理解Windows媒体控制接口 + k& z; Z; Y5 `: g8 Q
13.3 使用MCI播放MIDI音乐 * F7 h8 P5 |, A" r: _8 F/ x! u
13.3.1 打开MIDI设备
% h: L# C2 u1 G2 w" ^7 i) T 13.3.2 播放MIDI歌曲 : S6 d1 }% T! S# L8 w V
13.3.3 暂停MIDI歌曲 ' l* @9 W4 \5 h" f7 e) ~
13.3.4 关闭MIDI设备
@( H/ m* p, Y% D13.4 向游戏引擎添加MIDI音乐支持
2 {1 U2 [6 w8 E g0 a13.5 开发Henway 2示例程序
7 b# F8 \ r# h% [9 o 13.5.1 编写程序代码
+ c; E9 n2 |+ ~6 r 13.5.2 测试完成的游戏
% u; k; v( Z( q- u) ^# y9 l* f% p, Z13.6 小结
* \) Q5 K+ K1 b13.7 亲身实践
- F; l( b+ ^" v; U4 B第14章 示例游戏:Battle Office $ I( g$ T4 B- y6 |" ?/ B4 _0 k
14.1 游戏的玩法 0 l- V9 m( r4 n2 D
14.2 设计游戏 * D4 D: ^, u2 G$ S1 C
14.3 开发游戏 * c& R1 s& S; [+ y
14.4 测试游戏
" R8 d, w1 C# q# I14.5 小结 4 i( g3 S5 {6 S% M4 S% g" [
14.6 亲身实践
- D3 n. a: P! e8 _+ {第5部分 高级动画 % S, o' N8 M: x4 }
第15章 实现子画面外观动画 # B0 T x8 {2 s w: v
15.1 再次介绍帧动画 . b/ x2 |* @ d4 ~/ R( G" \- U& ]
15.2 设计动画子画面
/ R8 f9 ?. P' F+ D15.3 向游戏引擎添加动画子画面支持
5 |2 n7 V `9 \" @ `1 W( c6 ? 15.3.1 只绘制位图的一部分 : y, M( P# e- ]( g0 @1 o
15.3.2 对Sprite类实现动画
! k& w" L6 h F: `15.4 开发Battle Office 2示例程序 4 N. v5 Y7 m. F9 W( o. R) X' _3 V
15.4.1 编写程序代码
8 h" [$ i7 O7 j3 x. z! x 15.4.2 测试完成的游戏
- }8 k; y& G0 @# H" W15.5 小结 ! }% K: J# @7 X$ Y* Y7 J
15.6 游戏大变身
+ b7 U B1 S6 [第16章 创建子画面背景
1 h5 r" W+ [' T* a- m9 E16.1 了解游戏背景的重要性 6 t {9 f/ U& a- ~* r7 b
16.2 了解游戏背景的类型 ! j1 }, P9 s B# `! {8 O
16.2.1 纯色背景 & d& Z3 x& C4 k/ u) t
16.2.2 图像背景
- T! a2 ]/ _+ Y) ] Y/ |+ V 16.2.3 动画背景
& V; Z+ O$ B- k) R. T# [6 Z 16.2.4 滚动背景 # Z+ q- U* _9 y O2 k4 V p0 i
16.3 向游戏引擎添加背景支持 1 n, k. ~) W1 b7 A: \
16.3.1 创建基本的背景类 6 y, g7 x1 J' F) J
16.3.2 创建动画背景类 $ |, O/ [8 H/ i, p
16.4 开发Roids示例 . Y' T! t1 _1 P# K( o
16.4.1 编写程序代码 0 I, b' X7 Q; b7 d. w4 n* @: V. s- i
16.4.2 测试完成的游戏 / r) G) ]; r; E- K5 W# A8 s8 j" l
16.5 小结 W! n) j6 l( T
16.6 亲身实践 6 K3 `% W) ^0 d
第17章 示例游戏:Meteor Defense ' h+ M9 J; c1 D5 b# s2 b) x! O
17.1 游戏的玩法 ) @! }* ]" n# O% V- v) G
17.2 设计游戏
6 _4 _/ ]$ E9 \- ~- D6 O6 F17.3 增强游戏引擎中的子画面
3 H* j/ T0 F- u3 M0 _1 [17.4 开发游戏 & K' Q8 h3 O3 V: [; r* X
17.5 测试游戏 3 K. d. z3 d7 y% Y
17.6 小结 % m2 t8 |7 ?+ [, Y1 }* F
17.7 游戏大变身
8 N5 o" \: b1 X2 J! `, {( i第6部分 让游戏拥有大脑 / i( T& H# j& U( i- t
第18章 教游戏思考 / p# \+ v* D# ]/ B, N( J
18.1 理解人工智能' ?! u: n% d; U$ X) b+ ]& b
18.2 了解游戏AI的类型 4 j, _7 c* b* g- J
18.2.1 漫游AI
, m* N" Q7 c0 P0 }: J* f3 {! v 18.2.2 行为AI ; k1 j v& m& X5 p& k+ G
18.2.3 策略AI . @# p8 s+ j; D+ l3 o+ q5 z
18.3 开发AI策略 # o# p( @& I l! U- v% o2 w
18.4 开发Roids 2示例程序
! k" M( `3 K- M9 I2 J! L" m 18.4.1 编写程序代码
% q* A/ @/ ]1 A/ Y' |. Q: w9 K 18.4.2 测试完成的程序 ; N9 W0 m) W- M' H
18.5 小结
0 D6 u0 a1 Z3 b: R18.6 亲身实践
. T9 x7 ^6 \( n: |% h第19章 示例游戏:Space Out
9 f- B) j2 p$ g4 x19.1 游戏的玩法
+ m9 z }0 l6 _0 b19.2 设计游戏 5 {+ m' d+ ~& N% |% f. A
19.3 向游戏引擎中添加另一个子画面特性
2 K2 n7 z8 Q5 H( C g, `9 e19.4 开发游戏 $ V/ w- C2 [; Y2 p2 d* ?1 d
19.5 测试游戏
- j# P& A, t- w: @" Z6 n, E2 E19.6 小结 4 |, S4 [5 y& ~
第7部分 增添游戏的趣味性 + i$ S" ?6 ~) F, k
第20章 使用闪屏增添游戏的活力 1 b) [; Z) P7 I& F1 w: f- y
20.1 闪屏的重要性 ( Q+ p8 E! u. X0 e4 Y1 z
20.2 了解闪屏 . h3 o$ m0 O1 H+ Y: o
20.3 创建Space Out 2游戏
1 ?: O6 f/ o* T9 ?' n6 L& D 20.3.1 编写游戏代码 l4 f0 q0 C8 C- D
20.3.2 测试完成的游戏 0 `* Q! S( F1 a a+ t* b) H2 P$ W
20.4 小结
& A6 C% \* q M5 z) y4 t20.5 亲身实践
: h0 a+ `% q. V7 ~$ p, Q( o第21章 使用演示模式展示游戏 4 B& Y" Z8 a6 Y
21.1 什么是演示模式 ) {3 N D8 A$ `9 J, {
21.2 演示模式的细节 " L2 f4 {! R4 Z7 j
21.3 开发Space Out 3游戏 $ L7 ]4 {* X& [% s
21.3.1 编写游戏代码 l; q' ^/ `3 n) F& o
21.3.2 测试完成的游戏 * _' x+ `, v0 A* r8 z
21.4 小结 - a' }3 k5 v7 q* `0 ]$ q% [ O
21.5 游戏大变身
" `, w+ d5 R7 i9 M# p第22章 记录高分
$ Z. T% j" ]( L$ z2 n, y! w22.1 记录得分的重要性 . l: R- C B+ Q! e% v
22.2 确定高分数据模型 & E1 }% M" `8 B, k0 `- b
22.3 存储和检索高分数据
0 l% N8 Q* ?0 F: X: X22.4 开发Space Out 4游戏
6 y2 r, j$ w. A/ f 22.4.1 编写游戏代码
$ |- e D1 M0 m0 ? z 22.4.2 测试完成的游戏
& Y0 S/ b, f- i0 [" M9 O22.5 小结
2 o; Z* k( O4 K# \6 ^22.6 亲身实践
! X" T6 n7 |) C6 m6 z' R+ @第8部分 附加练习
7 E Z: z7 [7 U* A1 ?第23章 使用滚动背景更改远景 # T( j+ u2 e+ U/ A. R; m, p
23.1 什么是滚动背景
8 Z y |7 N* `( x+ F/ d 23.1.1 横向滚动的背景
3 A% t4 w0 `9 `2 e8 n 23.1.2 纵向滚动的背景
# K3 [4 C4 B" L 23.1.3 视差滚动背景
/ A- A- ] H1 ?% R" ~6 `23.2 理解滚动背景的工作原理 7 p( j- A' o' l4 H
23.3 向游戏引擎添加滚动背景支持 , @) T4 {2 M5 r
23.3.1 创建背景图层类 - O( h9 j- C' y8 B8 I: k+ Y
23.3.2 创建滚动背景类 6 _7 ~1 @( Y! O- X, n2 r
23.4 开发Wanderer示例 2 N4 ~1 \ r9 L$ I% C y
23.4.1 编写程序代码 0 Z4 V* z0 x2 [, V) g
23.4.2 测试完成的程序 M# J0 z2 q: g' }" B7 A! F: G, U
23.5 小结 & ]9 @3 o' ~) J2 w& ~& x2 Q$ ]$ N
23.6 游戏人变身 , ?+ l+ v% {' Z* x
第24章 示例游戏:Stunt Jumper
6 W5 _8 G/ f* W1 ?0 w; G24.1 游戏的玩法 * g7 s: b& k6 Y
24.2 设计游戏 . g$ z$ e3 A% q2 c4 J
24.3 开发游戏 0 e- t9 v& h1 K$ m+ D
24.4 测试游戏 & `% {! I" e- E3 @" j
24.5 小结
* B1 b' J7 w% f' C( D2 @5 r24.6 游戏大变身
9 q$ s3 u+ K, D' U2 Q24.7 亲身实践
, s2 D2 R0 p. {6 M9 [, D6 `- l) ~1 {* c! b) f3 m; o3 ~$ z
【下载地址】' G4 s4 x$ T r' I5 D; Y I: s
( |* L2 \$ Z2 V" k2 J
4 `* U, J/ Y; {( [6 z5 P W |
|