Thực Tập Cơ Sở Lập Trình Game Di Động Với J2ME
!"#$%&"'()* !"#$ Page +,"!-$ !" #$%&'()*+,- .#/01%*+,- 2 *+,3%4562 3%4%&%708%77 %4 08%779 2 48%779 84:%4 08%77 %4 +%%4 08%77- 2; #<%=>?0@ABCDE0 !3%4; D8FG%4; )HI001%%4; 2< !J K%4; J0D& F%4&CL0KMN O74%74% %22 %4% %2 8%77:% %01%8P%F:Q2; +7R8S$% T F0U !2N S0E2N V S7W8E/X 2SYJ0?RUZ/[01%8%4 2 S$A8G01%8%4 FC! SYW8\G0U% %\IC! Page 9 (0]8 !3%4*+,01%4/4%79 3%4479 GF!AD&0K; Page 2 ."/01- %&'()(*+,-(.(*./-!01-2345 647889:(. ;(1- !<'!=(> 345-?(@A3B0C5 -?'-.+3 (6:D(.--# (E3(F-?1.-.+3 BG -H()--?I(JA5;-E+)*-+K-H()LMANB2$(JA-?# O' A !-E-+&5-6A3J9(P+1-A5&'-?& 3-6-?4!()Q9R9STU5O'&'34>BV.3 -#4I.K9>4-W-&-?$34>()-!01-234(3--?I5J -K46AX(JA5AN >4Y(K-55B Page 213 45/6-789!"#$ U5>4L-?#+5-Z-[\.3(E-E-B?E-JK(P(I4 ?+1-]3A-?#()9(P+1-A5;!E]3J9^3.(J(E^ ]3@;A-?#()_Q`5.H-1.K@'a A-?#34>()B 3: ;$<=8=>?9@"0#$ :3.AW-;3A-?# ()^ A-?# UA5-3 \.3-/4A(E+)9:D-45#3-4DA545.^,]3-E- +&B2;(K(JA!:@\.3-?Y+W-(HUBb-E;3-3c \.3-/4(E^:3.;3F^L.W-dc4 ()]3FBc4:3.^eJ+)9:D-945.^,45 #5f-?* A-?#d:3.B A !+) ")A5413cYA5>34>4 ?A5+)(*G-? ^.H- \.-?#!5(*J:O':E--aBg'5 ()J+@hG54J-I!(*B Q)-A !+):G(IA.-?;A5+)RQiR> ?Q33>4>- ^->4jBRQA5+)45-@-c(*A.:-3-,-O'BkW 4)-D'-? 34>-3G+)5(IA.- ;$3 (I4 W-B-@-(J(*- A-E-> B /4 HU/4+)J-IL?3(1- !B (3!K3 1(1- 3& Page 2 5W(KK+):A-?#-3c\.3-/4(E:D-]3-Z A !-E-+&'-IBD-45#]3(1- !45-3A-?#J ?W-A(E-E-:E3 15A-?#B b#7^(3!K]A !(1- ! (: A$B-CD$+$;'()* (:3 5EAF"8=>'()* O^!E]3-E-+&()-#@;A-?# adJ!E^ -? UB? (J@;E4-& K.W-A5_Q`i_33Q +A>`- j -( 5l2--?IBm/A5 @;A-?#Q +A>+n_33Bk-?#+n_Q`3+n_33J . J-I!-? K. -E-+& O: 3.<S?-> >9 ?. >>?o>?>=94pA5f-?*4@-?$q33i_R`r_33R.-4>`? 44>-jB "I.(s(/JA^--?I]3-E-+&()Jf-?*4 _33i_330? 3AQ3>jB Page - 7B [+E]3_Q` B 2K-3t]3_Q` uB 6+A-?#_Q` b#[+E]3-E-+&f-?*4 _33 . ^(3!]3c494fcf-?*4)-TUv?(IA -?# -E-+&(J:A544)-O'Jf-?*-D6W3 /4-39(sY3-#-3:@-IE- >4)-A45E-? -Z A !45^M'-1454(Jf-?*B (:( D9G$'()* Q'-.]3_Q`A5 w$A-?#E-O'()A-E- +&()45:@\.3-/4(EO]34B3.(/A5/A -> -]3_Q`(*L/-?k%i-E-+&:E-H!EKW. #jB Page 9 b#u--? K-_Q` 2_Q`s4-^3. • O-E-+& • 4 _33 • W.# • 1-?! 7BB7 O-E-+& m/A5-E-+&()9J+)5+)LMANBQPG5:@A54)- ]3_Q`JA5<-]=.WO-D* 15 (P-5--O'_Q`BQf4)--E-+&():3.^eJ +)LMAN:3.5-A1:3.B_Q`J3-?cA5.W4)-4@ -?$.x -W-A !-E-+&()B 7BB 4 q33 4F.s_33(*+&J.I([-54F+-> >BQF5^3. (J(*.I-54F4]3-E-+&()B0J-IJ-4 _33i0? 3AQ3>y0QjA5+)+&4F+-> >9J14 ' .I4F+-> >]3-?#_33-5@;4(I!-? Page ; -E-+&()BJz3A5-E-+&5 f-?*0Q-#J-I!(* -?#_Q`B !"#$%$&' b#{V.-?#L/O' -E-+&() 7BBu W.# W.#k%i >->9k4->%>> |.3- r-E-+&:E-H !EKW.#j(&z3(P-4 0Q5(&z34)--* AJ:6f-?*1?);-E-+&-.)A !k%B 7BB{ 1-?! 1-?!Qv%UiQ +A>v| ?43- %>>U? |A>y-@--E-+& ()j.WTUv-/-1 A-?#B1-?!(*L/ -?AW.#5.WK.-1^ -W.#B (:H IFG?9'()* BuB7 ")Qv%A>- Page N Qv%A>-A54)-O'_33(*-E-:E-(I!-?-E-+&()BQ)- Qv%A>-O3A_33G+k%5Qv%UBQ)-+)Qv%A>-s44)- PK.Qv%A>-(*(JJG3.5w-? |A>_TRB}A>_TR^~ ^5 15(P-5 (1- !B0W(K]3A-?#A5-! ?3Qv%A>-B 3.(/A5W.-?aA-?#]34)-Qv%A>-B Q)-Qv%A>-Ju-OJ99ij9-J ij95@ J9K7ijB% (/A54)-+):.A-?#]34)-Qv%A>- 5"K9 3+ ^M'A-E--? -1Qv%U5k%B b54:-! )!? 9*L? ij b54:-! (*-14)-A:Qv%A>-:()B J99MNO -O5(*Y++)\.ANO'::-! Qv%A>-5 4f:Qv%A>--?K-Z-?!-3.^>B -J MNO -O5Y+)\.ANO'4f:O'-!4Z O'(3--B^M'3.^>T-3J4)--5. ]3Qv%A>-(I5+) O':B Page V import javax.microedition.midlet.*; public classextends MIDlet public void public voidstartApp() { } public voidpauseApp() { } public voiddestroyApp [...]... bắt tay vào luôn với một mảng kiến thức rất thú vị của J2ME là Game API Phần hai gồm hai mục: Giới thiệu lý thuyết Game API của J2ME Công cụ lập trình Java Game của Netbeans 1 J2ME Game API 1 2 3 4 5 Lớp Canvas Lớp Layer Lớp Sprite Lớp TiledLayer Lớp LayerManager Thực tế ta hoàn toàn có thể làm game J2ME với kiến thức về lập trình di động J2ME, và đặc biệt... phí Page 27 Lââp trình game di đôâng với J2ME Tin2_K50 Phần 3 Tổng Quan, Kịch Bản Và Phân Tích Lập Trình Game 1 Tổng quan về làm Game Phần này em sẽ nói về phân loại game, các đòi hỏi về một chương trình game, và cuối cùng là các bước phát triển game 1.1Phân loại game Thế giới game rất đa dạng và được phân loại như sau: • Action game: Game hành động: đòi hỏi... import javax.microedition.lcdui.*; Trong chương trình game em làm có sử dụng cả hai thành phần trên, trong đó các thành phần mức cao (Textbox, List, Form ) để tạo menu game còn mức thấp (Canvas) để tạo ra các nhân vật và giao di ̣n game Page 12 Lââp trình game di đôâng với J2ME Tin2_K50 Phần 2 J2ME Game API Phần một đã nói tổng quan về lập trình cho di động, sau đây em... đến đồ họa (Game đua xe Harley) • Game Puzzle: Game đố – thường đơn giản về đồ họa (Game Tetris) • Adventure Game: Game phưu lưu – (Game Diablo) • Strategy Game: Game chiến thuật – là game rất được ưa chuộng (Warcraft ) những game này khó làm và đòi hỏi nhiều AI • Traditional Game: Game truyền thống – ví dụ đánh bài, xúc sắc 1.2Những đòi hỏi chung của một game Tùy vào... trọng khi làm game Làm game cũng giống như lập trình các ứng dụng khác, vấn đề tạo ra một khuôn mẫu đúng đắn cho việc phát triển ngay từ đầu là rất quan trọng Thay vì có ý tương và bắt tay vào viết code luôn, ta phải tạo một khung sườn chi tiết cho việc lập trình Page 28 Lââp trình game di đôâng với J2ME Tin2_K50 Nó làm cho việc lập trình trơ nên sáng sủa... nhiên thời gian làm game sẽ rất tốn kém và khối lượng công việc liên quan đến vẽ giao di ̣n là rất lớn Qua tìm hiểu em thấy J2ME có một gói hỗ trợ tốt cho lập trình game gọi là chung là Game API Các lớp của nó nằm trong javax.microedition.lcdui .game Một số lớp quan trọng của nó như: GameCanvas, Layer, Sprites, TiledLayer, và LayerManager • GameCanvas: kế thừa... của đối tượng Page 34 Lââp trình game di đôâng với J2ME Tin2_K50 Hình 15: Use Case chuyển trạng thái của game Đây có thể xem là một bộ khung các trạng thái của game, ví dụ khi một người mới bắt đầu chơi game sẽ có một màn hình giới thiệu và có menu để lựa chọn, trạn thái đó của game gọi là intro game state Kế đến khi chọn new game để bắt đầu, một màn... 15 Lââp trình game di đôâng với J2ME Tin2_K50 Quay trơ lại với phương thức getKeyStates(); nếu như một phương thức lấy mã của phím nhấn tương tự của lớp Canvas là getKeyCodes() sẽ kiểm tra tất cả các phím xem phím nào nhấn thì phương thức mới của lớp GameCanvas chỉ kiểm tra với các phím chức năng do đó thời gian nhận biết được phím bấm của lớp GameCanvas... loại game mà có những đòi hỏi này khác nhau về mức độ: • Fun – Chơi game phải vui nhộn • Addictive – Game phải có tính cuốn hút • Compelling – Game có tính cạnh tranh • Commercial successful – Cuối cùng game phải thành công trên thị trường 1.3Quy trình phát triển game Em sẽ không đi xâu vào những phần này tuy nhiên cũng có một số chú ý quan trọng khi làm game. .. chuyển động ơ đây tự quay tròn tại chỗ của nó Để tạo được hình ảnh quay như vậy thì làm như sau: Page 18 Lââp trình game di đôâng với J2ME Tin2_K50 Hình 9: Nhân vật Player trong chương trình game Ở trên có một ảnh lớn chứa 16 ảnh nhỏ được đánh số từ 0 theo thứ tự từ trái sang phải và từ trên xuống dưới, theo thứ tự này thì ảnh trên tạo nên chuyển động . 1A5?W-AB V.3-#4I.>4-W_Q`J4)-Jf-?*-H- A-?#34>YA5. A534>TUvBA]3Jn4-? javax.microedition.lcdui .game. Q)-^HA .3 -?Y ]3 J 34>33^9 k3>?9 ?->^9. MNO -O5Y+).ANO'4f:O'-!4Z O'(3--B^M'3.^>T-3J4)--5. ]3Qv%A>-(I5+) O':B Page V import javax.microedition.midlet.*; public classextends MIDlet public void public