Nếu mọi người muốn sử dụng bài dịch này trên trang web khác cũng được, nhưng các bạn nhớ ghi nguồn từ hyutars_forum 1229.b4.to nhé, làm như vậy tức là tôn trọng công sức của mình và mình sẽ rất cám ơn về điều đó.Hiện nay mình post bài dịch trên gamevn và forum của mình: http://1229.b4.to , nếu forum gamevn bị chậm thì bạn vào forum 1229.b4.to xem nhé (rất hoan nghênh bạn đến chơi và rất vui mừng nếu bạn gia nhập) Tui mới download cuốn sách tiếng Anh này, và thấy anh em cũng than phiền không có sách tiếng Việt mà đọc, nên tui vừa đọc vừa dịch luôn cho anh em, một số câu hay từ trong bài có thể tui sẽ giữ nguyên vì dịch ra rất tối nghĩa, cũng có thể câu đó tui không bít dịch thế nào, và cũng có thể tui thích viết khác cho nó dzui hơn . Vì trình độ còn hạn chế, mong anh em thấy sai thì chỉ nghen, và nếu ai hứng thú (muốn dich) thì cứ post lên đây nói là dịch phần nào, chứ mất công tui ngồi dịch xong lên thấy anh em đã dịch rùi thì phí thời gian lắm. Chân thành cảm ơn ^^ Lược Dịch cuốn sách Sam teach yourself game programing in 24 hours Part I: GIỜ THỨ NHẤT: Học căn bản về cách làm Game Nếu bạn đã từng xem hay chơi Pong, bạn chắc chắn sẽ nhận thấy được sự tiến bộ rõ ràng trong 30 năm qua, cho phép chúng ta có những video Game như bây giờ. Nếu bạn muốn biết những Game đó hoạt động ra sao, bạn đã chọn đúng sách rồi đó. Tôi bước vào thế giới lập trình game bởi ham muốn tạo ra một thế giới ảo mà mình có thể làm được mọi việc, đặt ra mọi quy luật của riêng mình. Trang bị cho mình một số kiến thức về lập trình và trí tưởng tượng có thể giúp tôi làm được điều đó, tôi đã học bản chất của cách làm Game. Thật không may mắn, tôi phải học nó một cách rất vất vả: phải tự tìm kiếm mọi thứ, luôn bị những lỗi rất cơ bản. Và thật may mắn cho bạn đã đến với Gamevn để xem bài dịch này ( cái này tự chế ), khó khăn đó không còn tồn tại nữa. Giờ này sẽ giới thiệu cho bạn những thứ cơ bản về cách làm Game Trong 1 giờ (nguời dịch: với tui thì lâu hơn T_T, vừa dịch vừa học), bạn sẽ học: - Những loại video game - Những thứ cần thiết khi thiết kế một game mới - Tại sao object-oriented programming (OOP)(cái này dịch ra tối nghĩa lắm) lại quan trọng để phát triển game - Những công cụ cần thiết để bạn trở thành game developer CHƯƠNG I: GETTING TO KNOW VIDEO GAMES (dịch ra dở lắm) Ngay từ khi ngành công nghiệp giải trí mới chớm nở, Video Game đã phát triển như là một thành phần không thể thiếu. Video Game có thể so sánh ngang hàng với phim Hollywood (theo tui là hơn đấy chứ ^^), và thực ra, công việc làm Game nó cũng có tính chất tương tự như làm phim vậy. Nó cũng có cốt truyện, nhân vật, quảng cáo, sự đánh giá của công chúng, những cái đó chủ yếu để kinh doanh. Khi muốn làm game, phải chuẩn bị rất nhiều, bao gồm những nhân vật cơ bản như : designers, animators, and programmers – chúng ta không đề cập đến những cá nhân có tài và những công ty có hứng thú hỗ trợ hoàn thành game. Những game hiện đại như bây giờ tốn cả triệu $ để sản xuất, và hưởng những lợi nhuận khổng lồ từ công sức ban đầu mà họ đã bỏ ra. Bạn có thể đang đọc cuốn sách này vì bạn không có vài triệu $ để ném vào các đề tài Game đắt đỏ đó. Hoặc giả sử bạn có thì cũng định đầu tư vào những chuyện khác kia. Dù thế nào đi nữa, bạn có những hi vọng yếu ớt là có thể làm một Game chất lượng cao mà không cần những thứ $ mắc dịch kia. Cái đó không chỉ có thể, mà nó còn có thể đem lại cho bạn những phần thưởng xứng đáng. Nhưng dù thế nào đi nữa, làm Game là một công đoạn phức tạp đòi hỏi nhân lực và tiền tài. Mục đích của cuốn sách này là làm rõ ràng thực chất của công việc làm Game và chứng tỏ cho bạn thấy : không cần là một triệu phú, càng không cần phải là một thiên tài, bạn cũng có thể làm một Game cho riêng mình !!! Tại sao lại là Video Game? Nếu bạn thật sự ghiền Game, bạn có thể đã biết rõ câu trả lời, những câu hỏi thuờng thấy : tại sao video game lại phổ biến? Và tại sao rất, rất nhiều người lại muốn tự tay làm ra chúng? Tôi nghĩ đó là vì sức cám giỗ của thứ có thể giúp tạo ra một thế giới nhỏ của riêng mình, đó là nơi mà bạn mặc sức tưởng tượng và tô vẽ. Cuốn sách này sẽ biến mong muốn ấy thành sự thật. Để dễ hiểu hơn tại sao mọi người lại bị cuốn hút bởi Video Game, chúng ta hãy nghĩ đến những bộ phim mà chúng ta đang xem. Rất nhiều bạn đã nghĩ: tại sao trong tình cảnh đó lại như thế này, như thế kia có phải là hay hơn không?, hoặc là sao mình lại không thể ở vào tình cảnh đó nhỉ? Video Game sẽ giúp chúng ta tham gia vào “bộ phim” với tư cách là người điều khiển mọi hoạt động của nhân vật chính. Và chúng ta có thể mặc sức tận hưởng những thứ không thể có được trong cuộc sống hiện tại, khi chúng ta điều khiển nhân vât, chúng ta luôn hồi hộp về những diễn biến tiếp theo mà chính chúng ta là những người giải quyết tình huống đó. <Có lược dịch một số chỗ không cần thiết> NHỮNG LOẠI VIDEO GAME: Có 3 loại: Arcade games: (nói như trong cuônc sách thì khó hiểu để dùng ngôn ngữ Việt Nam) các bạn có bít chơi điện tử giựt cần không (cái game thùng, mình bỏ xu vào để chơi ấy). Cái game này có thể xem nhưn là khai sinh của video games và được giới trẻ Mĩ những năm 80 rất yêu thích. Arcade games thường dựa vào cái hardward gắn trong thùng máy, và những cái nút cùng cái cần gạt chính là những điểm đặc trưng của chúng. Mặc dù hiện nay Arcade games vẫn còn tồn tại nhưng vị trí của nó trong thì trường Game là rất nhỏ bé, và cũng không còn mới nữa. Đưng hỉu nhầm, vẫn còn một số Game hay, nhưng bạn sẽ rất vất vả để kiếm ra nó đấy. Console games: xuất hiện nhanh chóng sau arcade games, nó phát triển liên tục từ game kinh điển Pong với Atari 2600 systems cho tới ngày nay tiêu biểu là hệ thống Sony Playstation 2 cùng Microsoft X-Box. Hệ thống Console games đang có những sự cạnh tranh rất quyết liệt, những Game mới chất lượng cùng các ứng dụng kèm theo liên tục ra đời đã chứng tỏ Console games là một trong những trung tâm của ngành công nghiệp Game. Quả là vậy, hiện nay Microsoft đã có một kế hoạch lâu dài cho Xbox, định phát triển nó thành một thứ có thể thay thế hầu hết các dụng cụ kĩ thuật số. Những năm tới sẽ rất thú vị khi chứng kiến console games kết hợp làm một với các các ngành giải trí truyền thống. Computer games: là video game xuất hiện cuối cùng, việc xuất hiện của nó cũng là tất nhiên thôi khi máy tính có những công cụ tuyệt vời: tạo ra những graphic và âm thanh tuyệt hảo. Bây giờ nó là một đối thủ đáng gờm của hệ thống Console games, và thật thú vị, hầu như các game nổi tiếng có trên Console thì cũng có trên PC, console and computer versions, cho nên bạn có thể tùy ý lựa chọn hệ thống mình muốn sử dụng. XBOX là thứ độc nhất trong console có thể chia sẻ vị trí của software game development với PC games. Tôi thích DirectX, nó là Microsoft's game development toolkit vốn có trong các phiên bản Window, và bây giờ có thể mang qua XBOX. (chố này dịch hơi rối) Không may là cuốn sách này không đề cập đến game programming dùng DirectX game development toolkit. Bởi vì DirectXlà một công nghệ phức tạp đòi hỏi phải đầu tư nhiều mới học được. Nếu đề cập tới cái này chắc phải mất tới nửa quyển sách cũng chỉ có thể dạy căn bản mà thôi (-_-‘’), tôi quyết định dùng chỗ sách đó để dạy các bạn game hoạt động như thế nào. Nếu sau khi đọc cuốn sách này, bạn muốn học thêm về DirectX thì bạn tự dịch cuôn sách này mà học ( ) : Clayton Walnum's Teach Yourself Game Programming with DirectX in 21 Days. Tôi muốn làm sáng tỏ các thể loại game vì có sự khác biệt rất lớn về cách thức làm chúng. Ví dụ, arcade games dựa vào những hardward đặc biệt và những công cụ rất đắt tiền và khó tiếp thu cho những người mới vào nghề. Console games cũng không hơn gì, công cụ làm nó rất đắt tiền và khó để học, và thường đòi hỏi những kĩ năng đặc biệt mà chúng ta thường chỉ có thể học khi làm việc trong những công ty làm Game. Computer Game là thứ duy nhất mà chúng ta có thể tự mình làm, công cụ cho computer game programming chúng ta có thể dễ dàng kiếm được (crack là xong chứ gì hehehe). Không chỉ có thế, bạn còn có thể dùng hiểu biết của mình về ngôn ngữ chủ đạo hiện nay là C++ như một công cụ để phát triển game. Quyển sách này tập trung vào việc dạy cách làm Game dùng C++, mặc dù vậy đa số các khái niệm và kĩ năng cũng có thể áp dụng vào arcade và console games. <Mệt quá rùi, để bữa sau> <hyutars>
Nếu mọi người muốn sử dụng bài dịch này trên trang web khác cũng được, nhưng các bạn nhớ ghi nguồn từ hyutars_forum 1229.b4.to nhé, làm như vậy tức là tôn trọng công sức của mình và mình sẽ rất cám ơn về điều đó.Hiện nay mình post bài dịch trên gamevn và forum của mình: http://1229.b4.to , nếu forum gamevn bị chậm thì bạn vào forum 1229.b4.to xem nhé (rất hoan nghênh bạn đến chơi và rất vui mừng nếu bạn gia nhập) CHƯƠNG II: BẢN CHẤT CỦA THIẾT KẾ GAMES Bây giờ bạn đã có cái nhìn tổng quát video game rồi, sẵn sàng học thiết kế game nào! Bạn có ý tưởng gì về game mà mình sắp thiết kế chưa? Hay là bạn không biết làm gì để bắt đầu? Bất kể bạn đang ở trong tình trạng nào, cuốn sách này sẽ giúp bạn. Luôn nghĩ trong đầu rằng: bạn đang trên con đường đến game của mình, bất kể khó khăn nào bạn gặp cũng chỉ là những kinh nghiệm tối cần thiết khi ra thực tế, bạn càng giữ ý nghĩ đó bao lâu thì công việc học tập càng dễ đến đó. Bước đầu tiên bạn nên vẽ lên một sơ đồ tổng quát về game bạn đang làm. Tôi không có ý nói là bạn phải vẽ nên từng cảnh, từng lời thoại là như thế nào, bạn chỉ nên vẽ một cái tổng quát, giống như một bản phác thảo của một bức tranh lớn. Những thứ dưới đây cúng kinh nghiệm sẽ giúp bạn tạo nên một game hay: · Basic idea (ý tưởng căn bản) · Storyline (cốt truyện, tình tiết) · Graphics } · Sound } Cái này chắc khỏi nói cũng biết · Controls } · Play modes (cách chơi) Những dòng dưới đây sẽ giúp bạn đi vào chi tiết. COMING UP WITH THE BASIC IDEA Những bước quan trọng khi design game đều dựa trên nền tảng là ý tưởng đằng sau game. Đó là dòng game shoot-em-up, maze game, role-playing game (RPG), driving game, puzzle game, hay thứ kết hợp bởi các dòng game đó? Hay bạn có ý tưởng làm một dòng game hoàn toàn mới lạ? Đó là sự giải thoát những người tốt, loại trừ những người xấu hay chỉ đơn giản là khám phá ra những vùng đất lạ? Nhân vật đang sống vào thời nào, cơ cấu xã hội ra sao? Đó là những câu hỏi căn bản bạn nên hỏi để tạo nên cái gọi là basic idea. Nghĩ về nó và viết tất cả ra giấy. Đừng e ngại gì cả, cứ ghi tất cả các thứ gì nảy sinh trong đầu nếu bạn không muốn quên. Hãy ép chính bạn nghĩ rằng, những thứ này là rất quan trọng và từ đó việc nghĩ ra các ý tưởng sẽ rõ ràng hơn đến không ngờ. Nếu bạn gặp rắc rối với việc nghĩ ra ý tưởng, hãy lấy nguồn cảm hứng từ các game nổi tiếng hiện nay. Rất nhiều game dựa trên phim, trên lịch sử hoặc thể thao, nhưng ngược lại cũng có những game quá nổi tiếng, nên phim lại dựa trên game mà ra (Tomb Raider, Final Fantasy, Resident Evil, vân vân…).Và cuối cùng, chúng ta đang làm GAME, nên bất cứ ý tưởng kì quái nào mà bạn nghĩ ra được, nếu hay thì đều nên đưa vào game, việc dựa vào các game hay movie khác cũng nên hạn chế, không nên vay mượn quá nhiều. Và nên nhớ một điều, bất kể bạn tạo ra được hình ảnh đẹp tới đâu, âm thanh tuyệt hảo đến thế nào thì điều chủ chốt vẫn phải là FUN, đúng vậy, game cần thiết nhất phải là dzui. Trên đời này có ai lại không cố gắng đi tìm niềm vui đâu? Tôi có một anh bạn là pro game programe, và anh ta đã phát biểu rằng: Trên thực tế có rất nhiều game yếu về đồ họa, âm thanh trung bình nhưng vẫn được thị trường chấp nhận vì, đúng vậy, đơn giản vì nó vui. Một ví dụ : dòng game Combat trên Atari 2006. Đó là game chiếm đa số trên hệ thống console này, hồi đó game combat phải chịu đựng rất nhiều thiếu thốn về graphic và sound. Nhưng dù thế nào đi nữa, game Combat vẫn rất hay, có cơ hội cạnh tranh với những game hiện đại. Bề ngoài của console này sau bao năm vẫn không thay đổi gì nhiều, thêm Granted_joystick và một số linh kiện như là force feedback, nhưng cuối cùng cho tới ngày nay nó vẫn là một thứ cầm tay với bề ngoài cũng xêm xêm như lúc trước. Và mặc dù arcade game có từ năm 1982, đến nay nó vẫn còn được chấp nhận, tất cả vì nó FUN. Game không có công nghệ 3D xa hoa hay những âm thanh nổi, nó vẫn tiếp tục đi con đường mà nó vạch ra. Những thứ tôi nói bên trên chỉ nhằm mục đích khẳng định với các bạn rằng: phải luôn đặt FUN lên hàng ưu tiên của game và phải làm cho game FUN bằng mọi cách. Sau khi có basic idea, bạn tiếp tục đầu tư vào cốt truyện. PUTTING TOGETHER THE STORYLINE Bạn nghĩ cốt truyện chỉ dùng cho phim và nhưng thứ phức tạp khác thuộc về điện ảnh? Hoàn toàn sai lầm. Ngay cả với những action game đơn giản, chỉ có 2 người oánh nhau thì việc phát triển cốt truyện giúp cho bạn thiết lập được sự hợp lý của game, đồng thời đem game lại gần với thế giới hiện tại hơn.Bạn có nhớ game Pong mà tôi đề cập từ đầu bài không?, mặc dù nó thành công không cần cốt truyện hay, nhưng nó có thể hấp dẫn hơn nếu cốt truyện hấp dẫn hơn. Chẳng hạn trái banh là một nguyên tử và bao bọc xung quanh một tế bào hạt nhân, và nếu nó đi khỏi thì hạt nhân sẽ bị chảy. Bạn phải làm sao đó để giúp hạt nhân bỏ trốn. Đó là những thứ mà tác giả cuốn sách này nghĩ (tui thấy chẳng dzui tí nào ^^), có thể Pong sẽ có hình tượng tốt hơn trong lòng mọi người, chứ bây giờ nó chỉ đơn giản là một trái banh và nhưng hàng ngang dọc. Nếu bạn thực sự muốn đầu tư vào việc phát triển cốt truyện thì bạn nên làm một cái kịch bản game (tất nhiên bạn có thể bỏ qua nếu chỉ là một game không cạnh tranh thi đua gì hết). Giống như kịch bản phim vậy, kịch bản game sẽ nói về những cảnh diễn ra trong game, phác họa về những gì xảy ra, bạn dùng tranh hay chữ tùy ý. Kịch bản là công cụ rất quan trọng vì nó giúp ta mường tượng một cách tổng quát về game. Có được kịch bản sẽ giúp bạn không đi lệch ra chủ đề của game, giúp game xuyến suốt, không bị rối.Bạn xem một cái storyboard (kịch bản) của một phim nổi tiếng nhá, bạn có nhận ra nó không?: Chịu thua? Đây chính là phim nổi tiếng Jaws (lạ hoắc, ông nội tui còn không bít nữa là … ^^), có thể là phim ưa thích suốt đời của tôi. Như những gì bạn nhìn thấy, đây chính là storyboard. Tất nhiên một cái storyboard của game hay phim phải nhiều hơn 4 cái khung ảnh trên đây. Visualizing the Graphics Cái tiếp theo mà tôi đề cấp đến chính là đồ họa (graphic). Mặc dù game tất nhiên có thể rất vui không nhất thiết phải có chất lượng đồ họa cao, nhưng good graphic có thể làm nổi vật game của bạn. Một điều quan trọng nữa là bạn phải chú ý mức độ phân giải mà bạn chọn cho game. Bạn có thể chọn 256 colors để game chạy nhanh hơn và có thể chơi được trên các máy tính cũ, hoặc nếu chọn độ phân giải cao hơn, tất nhiên hình đẹp hơn và máy tính sẽ mất nhiều thời gian hơn để điều khiển và vẽ hình trong game. Chú ý nhá: hiện nay có rất nhiều công cụ để vẽ, nên bạn có thể tạo nên graphics tuyệt đẹp mà không cần phải là họa sĩ. Mặc khác, nếu bạn của bạn có khả năng về lĩnh vực này hơn thì bạn nên rủ người đó nhập nhóm, dù sao làm việc tập thể vẫn tốt hơn. Screen resolution là một vấn đề cần lưu tâm với hầu hết các games. Nếu bạn chú ý đến sự rung rinh của màn hình và cái monitor của bạn phát ra những tiếng đông kì lạ khi bạn bắt đầu game, tức là máy tính của bạn nên dùng Screen resolution khác, trò chơi sẽ chuyển thành Screen resolution mà bạn đang dùng. Hiện nay phổ biến nhất là 800x600, có nghĩa là 800 pixels theo hàng ngang và 600 pixels theo hàng dọc của màn hình. Nếu cái monitor của bạn lớn hơn 15 inches, mức độ phân giải có thể chỉnh ở mức cao hơn, của tôi đang dùng là 1280x1024. Điểm nổi bật của Screen resolution là nó sẽ ảnh hưởng trực tiếp đến kích thước của graphics rong games. Hầu hết những Games có tính chất thương mại đều được thiết kế để có thể chạy ở nhiều resolution khác nhau. Và cái quan trọng cuối cùng trong mục này là thuật phối cảnh cho nhân vật. Với 2D,3D, hay kết hợp của hai cái đó? Tôi có thể nhìn thấy nhân vật của mình (như FF) hay tôi có thể nhìn thấy những gì mà nhân vật tôi nhìn thấy (giống Half life á). Bạn cần phải suy xét thật kĩ, nó có sức ảnh hưởng to lớn đến độ phức tạp của cách thức làm game, nó phải được quyết định ngay lúc bắt đầu bắt tay thiết kế. <Chài, oải, thui đi ngủ, để sau post tiếp nghen> <hyutars>
xin mod lock topic lại giùm, hình như không topic này không cần thiết lắm (ít người xem), nên khỏi tốn công vô ích
Ko có gì là khôgn cần thiết cả, bài dịch của bạn rất có ích đối với tất cả mọi người, nhất là newbie. Hãy cố gắng lên, chắc hẳn mọi người đang chờ bạn viết xong một thể rồi mới post bài thôi ^^
đúng vậy, học mới có được 1 tiếng trong 24 tiếng mà xin mod lock lại rồi. bài viết của bạn hay lắm, nếu post tiếp nữa đảm bảo sẽ có nhiều người hưởng ứng cho mà xem...cố lên.
rất tốt đó nhưng chỉ nói đại khái chứ đâu có hướng dẫn những bước đầu tiên cho dân mới vô nghề chứ ko nói cánh sử dụng cả nên post cánh sữ dụng mấy cái chương trình phần mêm làm thì tốt hơn ( xin anh along bead tha cho em đừng cãnh cáo em em chỉ nói những gì em nghỉ thôi) bạn có thể kiếm sách nào dạy tạo engine ko mình cảm ơn nhiều lắm
cảm ơn,lên tinh thần gòi, mình sẽ viết tiếp, ngày mai sẽ post bài tiếp theo ::) do mình dịch từ đầu sách, nhưng mà sách mới vào dạy basic như vậy nên mình dịch như vậy thôi, bạn cố chờ đi, hoặc tải sách tiếng ANH về, bên mục 5 cuốn sách ... đó phần tạo engine nằm bên giờ thứ 2 hay thứ 3 thì phải, nếu bạn có thể thì tải sách tiếng Anh về đọc
Nếu mọi người muốn sử dụng bài dịch này trên trang web khác cũng được, nhưng các bạn nhớ ghi nguồn từ hyutars_forum 1229.b4.to nhé, làm như vậy tức là tôn trọng công sức của mình và mình sẽ rất cám ơn về điều đó.Hiện nay mình post bài dịch trên gamevn và forum của mình: http://1229.b4.to , nếu forum gamevn bị chậm thì bạn vào forum 1229.b4.to xem nhé (rất hoan nghênh bạn đến chơi và rất vui mừng nếu bạn gia nhập) Bắt đầu từ bài này mình sẽ cố gằng rút ngắn bài dịch khúc này tiếp và kết thúc chương II Developing an Ear for the Sound Âm thanh là một trong những yếu tố tưởng chừng chẳng quan trọng gì mấy, cho tới khi mà các bạn chơi thử game mà không có nó. Thật vậy, hãy thử tắt cái loa khi đang chơi một trong những game mà bạn ưa thích, bạn sẽ thấy rõ ràng sự khác biệt. Nói một cách khác, nếu như cốt truyện và hình ảnh là cái bánh kem thì âm thanh chính là trứng_thứ làm nên hương vị chủ yếu của cái bánh. Một điều quan trọng là bạn nên dùng âm thanh ở mọi nơi, ở mọi tiểu tiết nhỏ nhất, và nếu bạn muốn làm được điều đó, bạn nên quen với việc sử dụng vài loại music soundtrack. Thứ đầu tiên ta quan tâm trong sound chính là chất lượng của sound, thứ mà làm ảnh hưởng sâu sắc đến dung lượng và tốc độ xử lí của game. Với những tiếng động, bạn nên dùng wave (WAV) files. Bạn phải chọn sampling rate (chố này tui không biết dịch thế nào, nên sẽ trích một đoạn ghi chú của tác giả: Sampling là việc chuyển đổi âm thanh dạng wave thành âm thanh kĩ thuật số có thể lưu trữ và chơi trên máy tính. Bạn có thể học về sampling ở giờ thứ 13: "Getting Acquainted with Digital Sound and Music”) (nguyên văn nè: Sampling refers to the process of converting sound waves into a digital format that can be stored and played on a computer) , chẳng hạn như âm thanh ở dạng mono hay stereo, ở dạng 8 bit hay 16 bit lưu trữ, nhưng bây giờ cứ hiểu rằng việc đó ảnh hưởng rất lớn đến chất lượng và tốc độ thi hành của sound. Ví dụ, chất lượng của một đĩa CD thường là 44kHz và 16bit stereo. Chất lượng của đĩa CD tất nhiên không thể chê vào đâu được nhưng nó tốn rất nhiều dung lượng bộ nhớ, chẳng hạn một CD âm thanh dài 70 phút và nó sẽ cần 600MB để lưu trữ. Bạn sẽ phải giảm chất lượng của nó để giảm dung lượng của game, đồng thời tăng tốc độ luôn. Music thường tồn tại ở rất nhiều định dạng, mặc dù vậy, chúng ta nên dùng chúng ở dạng MIDI (Musical Instrument Digital Interface) để tiết kiêm bộ nhớ, midi music thường được tạo bởi các dụng cụ âm nhạc ảo trên máy tính. Do đó để tạo được MIDI rất khó, tốt nhất là cứ dùng MIDI có sẵn, có thể chỉnh sửa lại một chút. Thật may mắn là trong việc design game, bạn chủ yếu chỉ cần để ý tới việc viết được một khúc code chơi MIDI (theo mình hiểu chắc ý tác giả muốn nói ta nên dùng các đoạn nhạc có sẵn). Dictating Game Play with the Controls (điều khiển game bằng controls) Controls là một phần rất quan trọng của game's design, nó chính là cái giúp người chơi giao tiếp với trò chơi. Bạn nên hỗ trợ nhiều input device trong game (mouse, keyboard, joystick…), như vậy sẽ thỏa mãn được ý thích của nhiều người. Nhiệm vụ của bạn là quyết định thứ gì quan trọng, và chúng điều khiển game như thế nào, sau khi các bạn đã hỗ trợ một số input căn bản (mouse, keyboard), nếu bạn thích thêm một vài loại device khácthì cũng không dư thừa, nó sẽ làm game của bạn phong phú hơn. Có một lưu ý nhỏ: Gamepad cũng giống joystick, cho nên không cần thiết phải hỗ trợ cho cả hai loại, game có thể hoạt động với joystick thì đa số cũng có thể hoạt động với game pad. Deciding on the Play Modes Cái cuối cùng bạn cần quyết định là chế độ chơi. Trò chơi là one-player game, two-player game, hay là network-game có thể giúp nhiều người chơi? Đó là loại game chơi thi đua nhau, hay là chơi đồng đội? hay cả hai? Quyết định của bạn ảnh hưởng rất lớn đến tính chất Fun của game và độ khó khi làm game. Cụ thể, chế độ network là một kĩ thuật rất khó ><. Tôi không có ý làm cho bạn sợ, tôi chỉ muốn nói rằng, đó là một lãnh vực pro trong việc design game. Để hiểu rõ hơn, tôi đưa cho bạn một ví dụ: Tôi đã từng phát triển một combat game tên là Combat Tanks của console Atari 2600. Ban đầu, đây chỉ là trò chơi 1 đấu 1, lúc đó tôi vẫn chưa nghiên cứu về network(là một kĩ thuật khó lúc bấy giờ), cho nên 2 người chơi phải ngồi cùng một cái máy tính, điều khiển bằng một cái bàn phím. Sau một thời gian thử nghiệm, tôi quyết định thêm chế độ một người chơi, tức là player VS com. Tôi tưởng là rất dễ dàng để tạo ra một com có tính toán chiến thuật giống con người, nhưng tôi đã hoàn toàn sai lầm, và thực tế là tôi không thể hoàn chỉnh được ý tưởng đó. Cho nên tôi đã làm cách khác, thay vì là 1 player VS 1 intelligent com, tôi sửa thành 1 player VS nhiều stupid com (com: computer= máy tính, intelligent= thông minh, stupid= ngu ngốc), kết quả, có 2 chế độ game, nếu bạn chơi hai người thì các bạn sẽ dùng 2 tank để đấu với nhau, và nếu bạn chơi một người thì bạn sẽ đấu với nhiều com. Và thực tế rất game hấp dẫn, không cần thiết phải tạo một int com ( và tôi cũng không cần phải đau đầu để tạo ra một int com). Game này đã có được 10 năm tuổi, nếu bạn thích có thể download về chơi thử ở website http://www.michaelmorrison.com/compgames.html . Tôi viết game này cùng một người bạn là Randy Weems. Đây là một người bạn tôi hoàn toàn tin tưởng và có thể phó thác kiến thức của tôi cho anh ấy. Và các bạn nên hiểu rằng, tôi không có ý nói là phải chọn con đường dễ hơn khi tạo game. Ý của tôi là: chúng ta có thể đi đến cùng một mục đích bằng nhiều con đường khác nhau. Trường hợp của tôi, tôi chỉ cần thêm vào những enemies thú vị như foot soldiers, bombers, và helicopters (trực thăng). Một chút ý tưởng sáng tạo cũng là một kĩ thuật làm game không thể thiếu.
Nếu mọi người muốn sử dụng bài dịch này trên trang web khác cũng được, nhưng các bạn nhớ ghi nguồn từ hyutars_forum 1229.b4.to nhé, làm như vậy tức là tôn trọng công sức của mình và mình sẽ rất cám ơn về điều đó.Hiện nay mình post bài dịch trên gamevn và forum của mình: http://1229.b4.to , nếu forum gamevn bị chậm thì bạn vào forum 1229.b4.to xem nhé (rất hoan nghênh bạn đến chơi và rất vui mừng nếu bạn gia nhập) CHƯƠNG III: Object-Oriented Programming and Games Vì bạn có chút kiến thức về C++, nên có lẽ bạn đã nghe về object-oriented programming (OPP) (lập trình hướng đối tượng). OOP là một kĩ năng chia chương trình thành những đối tượng khác nhau, mỗi đối tượng giữ một đoạn code của chính nó. OOP rất hữu ích khi làm game vì game sẽ dễ hiểu hơn nếu bạn chia nó thành những đối tượng (object). Vì lí do đó, C++ là một ngôn ngữ lí tưởng để làm game. Những mục sau đây sẽ làm rõ hơn về OOP và cách thức sử dụng OOP trong lập trình game. Understanding OOP Ý tưởng đằng sau OOP là giúp chương trình gần gũi hơn với mọi người. Ví dụ, khi bạn xét một môn thể thao, chẳng hạn hockey game (người dịch: cái môn trượt băng đánh bóng vào gôn bằng gậy đó), bạn có thể nói đến rink, the players, the nets, and the puck (cứ hiểu đó là các cầu thủ và dụng cụ chơi), về phía computer , nó chẳng biết cầu thủ và dụng cụ là cái gì cả, nó chỉ hiểu một đống số gồm 0 và 1 thôi. Ngôn ngữ lập trình là thứ giúp chúng ta giao tiếp với máy tính, ra lệnh cho máy tính bằng ngôn ngữ quen biết của chúng ta, chứ không phải các số 0 và 1 rối rắm. Phần quan trọng của OOP là classes of object (class: dạng như một cái tổng thể, sau đó nó chia thành các thứ nhỏ hơn là object). Nếu bạn tạo một họkey game thì bạn phải tạo một cái hockey player class, những player của game sẽ nằm trong class này, nhìn hình: Hình: Rất nhiều player object được tạo bởi class. Hình trên đã biểu hiện rất rõ cách thức tạo ra object từ class. Một cái quan trọng: bạn có thể tạo subclass từ class, giúp chúng ta thêm một số đố tượng đặc biệt vào trong đó. Subclass kế thừa những tính chất của class, và có thêm một số đặc trưng riêng của chúng. Giống như trong gia đình, con cái thừa hưởng gien của cha mẹ, và chúng còn có một số tính chất của tiêng chúng. Hyutars : để hiểu hơn về lợi ích của OOP, tui xin trích dẫn ý kiến của snow về bài toán: yêu cầu đặt ra là bạn phải viết 1 chương trình dọc dữ liệu từ 1 file chứa các thông tin về số nhân viên, thông tin của từng nhân viên của 1 công ty, xử lí và trả lại thông tin về lương sẽ trả tháng này của từng nhân viên. +Bây giờ giả sử tất cả các nhân viên đó đều thuộc về 1 công ty và có những chức vụ khác nhau. Như vậy nếu nhìn theo hướng thủ tục bạn sẽ chỉ thấy việc phải xử lí riêng cho từng loại nhân viên thuộc từng chức vụ 1 và việc này hơi “rối mù“ 1 chút trong chương trình và dễ gây nhầm lẫn cũng như sẽ khó cho việc sửa chữa, nâng cấp về sau nếu như xuất hiện thêm những chức vụ mới. +Nhưng nếu bạn nhìn theo hướng đối tượng (OOP) bạn sẽ thấy rằng đầu tiên ở đây có chung 1 loại đối tượng lớn nhất là “nhân viên”. Tiếp theo từ “nhân viên” ta có thể tách ra những đối tượng con của nó là “công nhân”, “trưởng phong”, “thư kí”, “giám đốc”, mỗi 1 đối tượng con sẽ có chung các đặc điểm của đối tượng cha và có riêng các đặc tính riêng của nó. Như vậy khi có thêm chức vụ thì bạn chỉ đơn giản thêm vào 1 đối tượng con mới chứ ko cần sửa lại đoạn mã đã viết ban đầu. Applying OOP to Games Bạn nên hiểu rằng games là mô phỏng của một số thứ tồn tại thực tế ngoài đời, sau đó thêm thắt một chút gì đó. Hãy tưởng tượng đến một advanture game hay một sport game nào đó, bạn sẽ thấy rõ: cây cối, cầu thủ, thú vật … đều giống ngoài đời. Hiểu được như vậy, bạn sẽ dễ dàng qui đổi chúng thành object và xếp chúng lại thành một class. Như thế bạn đã ứng dụng được OOP vào game. Ví dụ : Xét một game rpg: Class World: bao gồm map và những hình ảnh đặc biệt trên nó, những object khác là vị trí của từng cái trong map, chẳng hạn tọa độ X Y. Những object của nhân vật thì bao gồm: HP, item (weapon, keys…). Trò chơi sẽ tự động liên lạc với nhân vật , sai khiến nó đi hướng nào bằng input. Item của nhân vật cũng có thể chia thành những object. Xét một cái đèn dầu, nó phải tính toán xem còn bao nhiêu dầu ở trong đó, khi hết phải biết tắt, khi đền sáng thì dầu phải giảm, khi không thắp sáng thì giữ nguyên … Ngoài ra còn có class bao gồm NPC, chim chóc, cây cối…. đó là những thứ điều khiển bằng computer, chẳng hạn ta qui định chúng phải đuổi theo hay trốn chạy cái gì đó, chạy đến chỗ nào… Nói chung tác giả viết dài dòng rắc rối lắm, anh em nhìn cái sơ đồ này sẽ rõ: Chú thích : organism : tổ chức sinh vật, chỗ slimy và hairy các bạn có thể hiểu là sinh vật hoạt động và sinh vật không hoạt động. Cái hay của OOP là: mỗi object có thể tự động làm những công việc thuộc chức phận của nó, cho nên game không phải quan tâm quá nhiều đến object, game chỉ cung cấp môi trường hoạt động cho object tồn tại. Môi trường đó chính là màn hình game để object được vẽ lên, và những sự kiện xảy ra (update loop) để nói cho object biết cái đó đã tới (phức tạp đúng hông), ví dụ nè: với creature (npc, thú vật …), update sẽ quyết định hướng đi của nó, hay quyết định nó đánh hay nó chạy, với main character, update bao gồm những hành động dựa trên user input. Cái chính tôi muốn nói ở đây là object có khả năng độc lập, nó tự biết phải ứng xử như thể nào. (theo tui thì mọi người không cần phải hiểu kĩ đoạn này cho lắm, theo cách hiểu của tui thì: khi ta lập trình object, ta đã qui định chúng phải làm gì khi xảy ra cái gì, cho nên sau này cứ thế mà chúng hành động thôi) Và cái hay nhất nhất của OOP chính là khả năng tái sử dụng của chúng, chẳng hạn như bạn làm xong một game rồi, bạn bắt đầu làm game thứ hai, thay vì có một số cái bạn phải viết lại, hãy dùng object trong game cũ. Chỉnh sửa lại một chút (class,new subclass… bạn sẽ hiểu rõ hơn khi học lập trình game) là có thể chạy được, tuyệt vời !!!.
Nếu mọi người muốn sử dụng bài dịch này trên trang web khác cũng được, nhưng các bạn nhớ ghi nguồn từ hyutars_forum 1229.b4.to nhé, làm như vậy tức là tôn trọng công sức của mình và mình sẽ rất cám ơn về điều đó.Hiện nay mình post bài dịch trên gamevn và forum của mình: http://1229.b4.to , nếu forum gamevn bị chậm thì bạn vào forum 1229.b4.to xem nhé (rất hoan nghênh bạn đến chơi và rất vui mừng nếu bạn gia nhập) CHƯƠNG IV: Exploring the Tools of the Trade Trước khi bắt tay vào việc làm game, bạn phải có công cụ trước đã, mặc dù có nhiều công cụ, nhưng tóm lại chúng nằm trong 3 mục chủ yếu này: · Compiler · Graphics tools · Sound and music tools Chúng ta sẽ hiểu rõ từng cái trong đoạn dưới đây: Compiler Bất kể bạn dùng ngôn ngữ gì, bạn đều cần nó để chuyển những đoạn mã mà bạn viết thành những chương trình thi hành. Vì cuốn sách này tập trung đề cập tới ngôn ngữ C++, bạn cần C++ compiler để tạo Windows applications ( đừng lo nhá, khi bạn cài C++ thì đã có cái này rồi). Những cái hay mà tôi khuyên bạn sử dụng là Microsoft Visual C++, Borland C++Builder hoặc free compilers như DJGPP (cái này tui không biết, tui mới vào nghề thôi ><). Graphics Tools Đây là công cụ để tạo hình ảnh cho game, bạn có thể dùng Paint trong windows, nếu bạn định vẽ bằng tay, bạn sẽ dùng máy scan và chỉnh sửa chúng bằng các tool chỉnh sửa hình vẽ. Nếu bạn có tiền, bạn nên dùng Adobe Photoshop, đây là một công cụ tinh chỉnh ảnh tuyệt vời (Việt Nam mình là crack hết, 8k/CD ) Sound and Music Tools Bạn có thể lấy music hay sound từ microphone hay audio CD. Dùng phần mềm edit sound, dùng Sound Recorder trong window cho những âm thanh đơn giản, hoặc mua đĩa crack (cái này tui nói, tác giả nói là dùng tiền để mua) Cool Edit Pro (nếu ai có thì share cho anh em nha). Cách làm như sau: mắc nguồn vào (microphone, CD player, …) và bắt đầu chỉnh sửa bằng sound editing software. Bạn cần chăm sóc kĩ đoạn âm thanh sau khi edit, nhớ cắt bỏ mấy khúc dư thừa. Nếu bạn muốn tự mình tạo ra MIDI music, bạn phải dùng công cụ MIDI authoring tool. Cái này khác với các công cụ edit sound thông thường, nó có thể giúp bạn thêm các đoạn nhạc vào source có sẵn, có thể bằng cách kết nối MIDI music keyboard vào máy tính, sau đó chơi nhạc, nếu sound card của bạn có cổng MIDI ( thường thì máy tính nào cũng có ), nhạc bạn chơi sẽ được lưu trữ bởi MIDI software. Sau đó bạn có thể chỉnh sửa chúng cho hay hơn.
Nếu mọi người muốn sử dụng bài dịch này trên trang web khác cũng được, nhưng các bạn nhớ ghi nguồn từ hyutars_forum 1229.b4.to nhé, làm như vậy tức là tôn trọng công sức của mình và mình sẽ rất cám ơn về điều đó.Hiện nay mình post bài dịch trên gamevn và forum của mình: http://1229.b4.to , nếu forum gamevn bị chậm thì bạn vào forum 1229.b4.to xem nhé (rất hoan nghênh bạn đến chơi và rất vui mừng nếu bạn gia nhập) CHƯƠNG 5: TÓM TẮT Mặc dù giờ thứ nhất chưa dạy gì cho bạn về code, nhưng nó giúp bạn có những kiến thức căn bản quan trọng. Mục đích của bài học này là hiểu được các khái niệm, bạn biết được bản chất của game, biết về OOP và tại sao nó lại quan trọng khi làm game, ngoài ra còn giới thiệu cho các bạn các công cụ tối cần thiết dành cho game maker. Giờ thứ hai: "A Windows Game Programming Primer" bạn sẽ được học về Windows API, và nó đem lai lợi ích gì cho game developer. Quan trọng hơn, bạn sẽ viết mã skeletal Windows application cho phép bạn tạo hình dáng căn bản của game. Q&A (question and answer) 1/ Why is screen resolution such a big deal for games? Screen resolution là kích thước của màn hình, không phải inches mà là pixels. Thông dụng là 800x600 hoặc cao hơn. Bạn có thể kiểm tra screen resolution của máy bạn bằng cách: chuột phải trên desktop, chọn properties, chọn tab setting, bạn có thể tùy ý điều chỉnh để coi như thế nào. Những game bạn được học trong cuốn sách này sẽ có cách tránh được lỗi thay đổi screen resolution bằng cách chỉnh specific game screen size. 2/ Should I invest in game development tools? (Tôi có nên đầu tư vào game development tools không?) Vì chúng ta ở Việt Nam, mọi phần mềm đa số đều bị crack, câu hỏi này không cần thiết phải trả lời (không biết đáng vui hay đáng buồn đây ? -_-) Workshop Câu hỏi: 1/ Có bao nhiêu loại video game? 2/ Khi làm game cần cân nhắc đến những điều gì? 3/ Storyboard là cái gì? (câu này không cần thiết lắm, cứ hiểu là kịch bản) 4/ Chất lượng cao nhất của sound có thể dùng trong game? Bài tập: 1/ Chơi một video game mà bạn yêu thích, hãy thử chia game đó thành các class và object. Chú ý đến các hiệu ứng âm thanh của từng object 2/ Thử tạo class và object cho game tương lai của bạn coi sao ? Hyutars : Vậy là xong giờ thứ nhất, hiện giờ mình đang bận thi nên không biết có post thường xuyên được không, các bạn thông cảm hén. Thui mình đi học bài đi thi đây (mai thi tiếng Anh, nhẹ nên mới có thời gian viết nhiều như thế này, byebye) <hyutars>
Mình định dịch tiếp thì xuất hiện vấn đề mới, quyển sách này hướng dẫn rất sơ lược về lập trình Window bằng C++,do đó mình phải tự học bằng tài liệu khác.Mình mượn sách trên thư viện trường, định kiếm sách điện tử up lên cho mấy bạn nhưng kiếm không thấy. Vậy bạn nào có thì up lên cho mọi người cùng học nhé. Lập trình Window bằng C++, chừng nào học xong mình dịch tiếp
Tôi đọc quyển này rồi, kô cần phải học sâu vào Lập trình window = c++ đâu. Chỉ cần biết những thứ trong quyển này là đủ rồi . Vì thực ra có cần gì nhiều đâu chỉ cần tạo 1 cái window thế thôi. Bác Hyutars cứ dịch tiếp đi.
Mình cũng muốn dịc tiếp lắm, nhưng thực ra khó khăn là thế này: mình mới học năm 1 CNTT nên chỉ biết lập trình căn bản trên cửa sổ cmd, lúc dịch mình bắt gặp rất nhiều từ lạ như định nghĩa Hungary, handle ... cho nên mún dịch chuẩn cũng hơi khó ><. Nhưng các bạn đừng lo, mình đã mượn được trên thư viện một cuốn rất hay,đang đọc, do đó sẽ cố gắng dịch tiếp, hẹn các bạn 3 ngày nữa nha
Nếu như vậy tôi nghĩ ông sẽ gặp khó khăn đấy.Quyển này nhìn đơn giản thôi nhưng có n` cái cũng khá phức tạp. Theo tôi ông nên dịch quyển này thì hơn: Beginning C++ Game Programming by Michael Dawson. Vừa dịch vừa học, quyển này dạy c++ bằng cách dạy làm những game cơ bản. Tôi thấy rất hay và dễ hiểu. Thích thì tôi vứt ebook+ source cho
ừm, nhưng mà mình lỡ dịch cuốn sách này rồi, không thể bỏ được. >< Không sao đâu, khi gặp chỗ nào khó mình sẽ kiếm sách đọc, hay là nhờ tutukun giúp đỡ ^^ nhưng bạn cũng share cuốn sách đó cho mình đi nhá, bạn upload lên đây hay gửi vào hyutars@inbox.com , cảm ơn bạn nhìu há ::)
Nếu mọi người muốn sử dụng bài dịch này trên trang web khác cũng được, nhưng các bạn nhớ ghi nguồn từ hyutars_forum 1229.b4.to nhé, làm như vậy tức là tôn trọng công sức của mình và mình sẽ rất cám ơn về điều đó.Hiện nay mình post bài dịch trên gamevn và forum của mình: http://1229.b4.to , nếu forum gamevn bị chậm thì bạn vào forum 1229.b4.to xem nhé (rất hoan nghênh bạn đến chơi và rất vui mừng nếu bạn gia nhập) Giờ thứ 2: Ở giờ thứ hai, mình sẽ viết khác trong sách, nhưng những kiến thức thì cũng như vậy, thậm chí còn kĩ hơn trong sách. Nội dung chủ yếu của chương này nói về cách tạo một chương trình Windows căn bản, giúp các bạn tiến gần hơn đến lập trình Windows Games. Mọi người chú ý nhá: “Windows” là dùng để chỉ hệ điều hành, còn “Window” dùng để chỉ vùng hình chữ nhật trên màn hình, nhận dữ liệu nhập vào (input) của người sử dụng và hiển thị kết quả xuất ra (output) ở dạng chữ và đồ họa. Những window rõ ràng nhất trên màn hình của bạn là các cửa sổ ứng dụng. Những Window này có một thanh tiêu đề chứa tên của chương trình, một trình đơn (menu), có thể có một thanh công cụ (toolbars) và một thanh cuộn (scrool bar). Một kiểu khác là hộp thoại (Dialog Box), có thể có hay không có thanh tiêu đề. Ít rõ ràng hơn là các push button, radio button, check box, list box, scroll bar và các trường nhập dữ liệu của hộp thoai. Mỗi đối tượng trực quan nhỏ này cũng được gọi là một Window. Cụ thể hơn, chúng được gọi là các “window con” (child window) hay “window điều khiển” (control window) hay “thành phần điều khiển window con” (child window control). Người sử dụng thấy những Window này như các đối tượng trên màn hình và tương tác trực tiếp với chúng bằng cách sử dụng chuột và bàn phím. Một điều thú vị là quan điểm của lập trình viên cũng giống quan điểm của người dùng. Window nhận input của người dùng theo các dạng thông điệp (messages) được gởi tới window. Một window cũng sử dụng các thông điệp để giao tiếp với các window khác. Hiểu rõ các thông điệp chính là một phần quan trọng để học viết chương trình cho windows nói chung, windows games nói riêng. Thông điệp Windows (Messages) và Thủ tục Window (Window Procedure): Ta hãy xét một ví dụ về các thông điệp của Windows. Như bạn biết, hầu hết các chương trình Windows đều có các cửa sổ ứng dụng có thể thay đổi theo kích thước. Tức là, bạn có thể dùng chuột rê sát đường viền Window và kéo để thay đổi kích thước. Thông thường chương trình sẽ đáp ứng thay đổi kích thước này bằng cách thay đổi nội dung window của nó. Chính Windows chứ không phải ứng dụng quản lý mã thay đổi kích thước cửa sổ. Tuy nhiên ứng dụng “biết” cửa sổ đã bị thay đổi kích thước bởi vì nó có thể thay đổi định dạng nội dung nó hiển thị. Làm cách nào ứng dụng biết người dùng đã thay đổi kích thước của nó ? Đối với các lập trình viên đã quen lập trình trên môi trường ký tự truyền thống, không có cơ chế để hệ điều hành chuyển tải thông tin loại này đến người dùng. Để trả lời câu hỏi này ta cần hiểu kiến trúc Windows. Khi người sử dụng thay đổi kích thước một Window, Windows gửi một thông điệp đến chương trình để chỉ thị kích thước mới của Window. Chương trình sau đó có thể chỉnh nội dung window của nó để phản ánh kích thước mới. Windows gửi một thông điệp đến chương trình có nghĩa là Windows gọi một hàm trong chương trình – một hàm bạn viết và là phần cốt yếu của chương trình bạn. Các thông số của hàm này sẽ được Windows đặt các giá trị mô tả thông điệp xác định Windows muốn gửi đến chương trình bạn. Hàm này trong chương trình của bạn được gọi là “thủ tục Window” (window procedure). Có lẽ bạn đã quen với việc một chương trình gọi hệ điều hành, ví dụ một chương trình mở một tập tin trên đĩa. Điều bạn chưa quen là hệ điều hành thực hiện một lời gọi đến một chương trình. Tuy nhiên, điều này là cơ sở của kiến trúc Windows. Mọi window mà một chương trình tạo ra đều có một thủ tục window kết hợp. Thủ tục window này là một hàm hoặc nằm trong chương trình hoặc trong một thư việc liên kết động. Windows gửi một thông điệp đến một cửa sổ bằng cách gọi thủ tục window. Thủ tục window xử lý một số việc dựa trên thông điệp và trả điều khiển lại cho Windows. Window Class: Chính xác hơn, một cửa sổ luôn được tạo ra dựa trên một “lớp của sổ” (window class). Lớp cửa sổ chỉ định thủ tục window xử lý các thông điệp đến window. Việc sử dụng một lớp cửa sổ cho phép nhiều của sổ được tạo ra trên cùng một lớp cửa sổ và do đó sử dụng cùng thủ tục window. Ví dụ, tất cả các nút nhấn (button) trong tất cả các chương trình Windows dựa trên cùng một lớp cửa sổ. Lớp cửa sổ này kết hợp với một thủ tục window nẳm trong một thư viện liên kết động Windows mà xử lý các thông điệp gửi đến tất cả các window button. Trong lập trình hướng đối tượng, một đối tượng là một kết hợp của mã và dữ liệu. Một window là một đối tượng. Mã là thủ tục window. Dữ liệu là thông tin được giữ bởi thủ tục window và thông tin được giữ bởi Windows đối với từng cửa sổ và lớp cửa sổ tồn tại trong hệ thống. Một thủ tục window xử lý các thông điệp đến Window. Thông thường những thông điệp này báo cho một cửa sổ thông tin input của người dùng từ bàn phím hay chuột. Ví dụ, một thông điệp gửi đến một nút nhấn cho biết nó bị “click”. Các thông điệp khác báo cho một window biết khi nó bị thay đổi kích thước hay cần vẽ lại. Khi một chương trình Windows bắt đầu thực hiện, Windows tạo ra một hàng đợi thông điệp (message queue) của chương trình. Hàng đợi này lưu tất cả các thông điệp đến các window do chương trình tạo ra. Một ứng dụng Windows bao gồm một đoạn mã gọi là “vòng lặp thông điệp” (window loop) để lấy những thông điệp này từ hàng đợi và phân phát chúng cho các thủ tục window thích hợp. Ngoài ra, các thông điệp khác có thể gởi trực tiếp đến các thủ tục window, không thông qua hàng đợi. Định nghĩa Hunggary: Đoạn tiếp theo mình sẽ đưa một ví dụ, trong đó bạn sẽ thấy có một vài ký tự lạ, đó là vì lí do như sau: Các lập trình viên sử dụng qui ước gọi tên biến là Định nghĩa Hunggary (Hungarian nation) để tôn vinh lập trình viên huyềnh thoại Charles Simonyi (người Hunggary) của Microsoft. Rất đơn giản, tên biến bắt đầu với một hay nhiều chữ thường định nghĩa kiểu dữ liệu của biến. VD: tiếp đầu ngữ sz trong szCmdLine đại diện cho “string terminated by zero” (chuỗi chấm dứt bởi 0), tiếp đầu ngữ h trong hInstance và hPrevInstance đại diện cho handle, tiếp đầu ngữ i trong iCmdShow đại diện cho integer… Khi đặt tên cho biến cấu trúc, bạn có thể sử dụng tên cấu trúc (hay viết tắt của tên cấu trúc) kiểu chữ thường hoặc là một tiếp đầu ngữ của tên biến hoặc là toàn tên biến. VD: trong hàm WinMain, biến msg là một cấu trúc của kiểu MSG, wndclass chính là một cấu trúc của kiểu WNDCLASS … Định nghĩa Hunggary giúp bạn tránh những lỗi về ghép sai kiểu vì tên của một biến đã mô tả sự sử dụng và kiểu của nó.
Nếu mọi người muốn sử dụng bài dịch này trên trang web khác cũng được, nhưng các bạn nhớ ghi nguồn từ hyutars_forum 1229.b4.to nhé, làm như vậy tức là tôn trọng công sức của mình và mình sẽ rất cám ơn về điều đó.Hiện nay mình post bài dịch trên gamevn và forum của mình: http://1229.b4.to , nếu forum gamevn bị chậm thì bạn vào forum 1229.b4.to xem nhé (rất hoan nghênh bạn đến chơi và rất vui mừng nếu bạn gia nhập) Thui nói lý thuyết quá nhiều rồi, chúng ta bắt tay vào viết thử cái chương trình windows nào: CHƯƠNG TRÌNH HIỂN THỊ CỬA SỔ HELLO WINDOWS 98 Chọn New Project >> Win32 Application Sau đó chọn New >> Source file Chương trình tạo ra một cửa sổ ứng dụng thông thường như hình dưới đây, có một âm thanh nhỏ khi bật ứng dụng này: Các bạn chú ý: Nếu bạn sử dụng Microsoft Visual C++, bạn cần chèn thêm một thư viện đối tượng sử dụng vào linker. Chọn tùy chọn Settings từ trình đơn Project, chọn tab Link. Chọn General ở Category và thêm WINMM.LIB (Window multimedia) vào text box Object/Library Modules. Bạn cần làm điều này vì chương trình sử dụng một phép gọi hàm multimedia và thư viện đối tượng multimedia không được đưa vào một project mặc định. Nếu không, bạn sẽ nhận một thông báo lỗi từ linker chỉ định rằng hàm PlaySound không được phân giải (unresolved). Đa số các mã lệnh trong chương trình trên đều là phần đầu của chương trình Windows. Bạn không cần nhớ hết tất cả cú pháp để viết phần đầu này, nói chung bạn có thể chép chương trình đã tồn tại và sửa chúng. Bản chất của phần chữ xuất hiện ở giữa màn hình: nó nằm trong vùng client (client area) của chương trình. Chúng ta cần nhớ rằng vùng client là vùng của window mà một chương trình tự do vẽ và đưa output trực quan đến người dùng. Không cần nhớ nhưng các bạn cũng cần phải hỉu tí xíu: Chương trình trên gọi hơn 18 hàm, theo thứ tự xảy ra, những hàm này bao gồm: - LoadIcon: Nạp một icon sử dụng cho chương trình. - LoadCursor: Nạp một con trỏ chuột sử dụng cho chương trình . - GetStockObject: Nhận một đối tượng đồ họa, trong trường hợp này là một brush dùng để vẽ nền của window. - RegisterClass: Đăng kí một lớp window cho cửa sổ chương trình. - MessageBox: hiển thị một message box. - CreateWindow: Tạo một cửa sổ dựa trên một lớp cửa sổ. - ShowWindow: Hiển thị cửa sổ trên màn hình. - UpdateWindow: Để cửa sổ tự vẽ: - GetMessage: Nhận một thông điệp từ hàng đợi thông điệp. - TranslateMessage: Dịch một số thông điệp bàn phím. - DispatchMessage: Gửi một thông điệp đến một thủ tục window. - Playsound: Thực thi một tập tin âm thanh. - BeginPaint: Khởi động việc vẽ window. - GetClientRect: Nhận kích thước vùng client của Windows. - DrawText: Hiển thị một chuỗi văn bản. - EndPaint: Chấm dứt việc vẽ window. - PostQuitMessage: Đặt một thông điệp “thoát” vào hàng đợi thông điệp. - DefWindowProc: Thực hiện việc xử lý mặc định các thông điệp. Tạm thời bạn chỉ cần nghiên cứu vậy thôi, thắc mắc gì cứ post bên diễn đàn http://1229.b4.to nhé, mình sẽ cố gắng giải đáp