1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu và phát triển các ứng dụng trên di động

74 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 74
Dung lượng 1,22 MB

Nội dung

LỜI CẢM ƠN Trước hết em xin chân thành thầy Lê Thụy giáo viên hướng dẫn em tình thực tập Thầy giúp em nhiều cung cấp cho em nhiều tài liệu quan trọng phục vụ cho trình tìm hiểu đề tài “Tìm hiểu Lập trình đồ họa Symbian” Thứ hai, Em xin chân thành cảm ơn thầy cô môn công nghệ thông tin bảo bảo em trình học rèn luyện năm học vừa qua Đồng thời em cảm ơn bạn sinh viên lớp CT901 gắn bó với em trình rèn luyện trường Cuối em xin chân thành cảm ơn ban giám hiệu trường Đại Học Dân Lập Hải Phòng tạo điều kiện cho em có kiến thức, thư viện trường nơi mà sinh viên trường thu thập tài liệu trợ giúp cho giảng lớp Đồng thời thầy cô trường giảng dạy cho sinh viên kinh nghiệm sống Với kiến thức kinh nghiệm giúp em cho cơng việc sống sau Em xin chân thành cảm ơn! Hải Phòng, tháng năm 2009 Sinh viên Phan Mạnh Cường MỤC LỤC Mở đầu CHƢƠNG 1: Tổng quan hệ điều hành Symbian điện thoại thông minh Series 60………………………………………………… ………….5 1.1 Giới thiệu hệ điều hành Symbian 1.2 Các mơ hình thiết bị sử dụng hệ điều hành Symbian 1.3 Các tiến trình tiểu tiến trình Symbian 1.3.1 Tiến trình 1.3.2 Tiểu trình 1.3.3 Tiến trình tiểu trình nhân 1.3.4 Quản lí điều phối tiến trình CHƢƠNG 2: Kĩ thuật lập trình C++ Symbian 2.1 Các kiểu liệu 2.2 Quản lí lỗi 10 2.2.1 Cơ chế bắt lỗi mà Symbian hỗ trợ gồm: 10 2.2.2 Hàm Cleanup stack 12 2.2.3 Hàm dựng pha 14 CHƢƠNG 3: OPENGL ES 18 3.1 Giới thiệu OpenGL ES 18 3.2 Nhập liệu từ phím (Keyboard Input) 18 3.3 Dựng (Rendering) 19 3.4 Phép chiếu trực giao (Orthographic Projection) 20 3.5 Màu sắc đánh bóng (Color and Shading) 22 3.6 Phép biến đổi (Transformations) 24 3.7 Chiều sâu (Depth) 27 3.8 Hình phối cảnh (Perspective ) 29 3.9 Hình khối (Solid Shapes) 33 3.10 Bộ lọc mặt sau (Backface Culling) 35 3.11 Ánh sáng (Lighting) 36 3.12 Định hướng ánh sáng (Directional Lighting) 39 3.13 Dán chất liệu (Texture Mapping) 41 3.14 Hàm chất liệu (Texture Functions) 50 3.15 Pha trộn (Blending) 53 3.16 Minh bạch đối tượng (Transparency) 58 3.17 Hiệu ứng sương mù (Fog) 60 CHƢƠNG 4: Áp dụng OpenGL ES để tạo ứng dụng đồ họa 3D 64 4.1 Phát biểu toán ứng dụng 64 4.2 64 4.2.1 64 4.2.2 65 4.2.3 Xây dựng đối tượng, bắt nút di chuyển đối tượng 66 4.3 Một số hình ảnh Games 70 4.4 Cách tạo file sis để cài đặt lên thiết bị di động 72 Kết luận 73 Tài liệu tham khảo 74 Mở đầu Hiện ngành công nghiệp phần mềm phát triển ngành công nghiệp phần mềm điện thoại di động khơng nằm ngồi xu Tuy cịn nhiều hạn chế phần cứng điện thoại di động thể sức mạnh nhiều lĩnh vực khác giải trí, tiện ích, tốn điện tử v.v… Ngành cơng nghệ phần mềm di động non trẻ Việt Nam việc nghiên cứu phát triển ứng dụng di động cần thiết Em nhận thấy nhu cầu người lĩnh vực giải trí di động ngày cao Chính vị em thực hiên đề tài nhằm hiểu rõ kĩ thuật lập trình thiết bị động, đặc biệt kĩ thuật xây dựng đồ họa 3D di động để tạo nên game 3D hoàn chỉnh CHƢƠNG 1: Tổng quan hệ điều hành Symbian điện thoại thông minh Series 60 1.1 Giới thiệu hệ điều hành Symbian Symbian công ty phần mềm chuyên phát triển cung cấp hệ điều hành tiên tiến, mở, chuẩn mực dùng cho thiết bị di động – hệ điều hành Symbian Công ty thành lập vào tháng nam 1998 đặt trụ sở Anh Mục tiêu công ty Symbian phát triển hệ điều hành Symbian thành hệ điều hành chuẩn sử dụng rãi cho hệ thống kĩ thuật số di động toàn giới Ðựơc hậu thuẫn củaa nhà sản xuất điện thoại di động hàng đầu giới, công ty Symbian không ngừng phát triển: Các cổ đông công ty Symbian Ban đầu công ty Psion xây dựng EPOC platform dùng để điều khiển thiết bị nhỏ, đạt số kết định sau đó, cơng ty điện thoại di đông hàng đầu (Nokia, Siemens…) mua lại Psion, thành lập công ty Symbian tiếp tục phát triển EPOC với tên gọi hệ điều hành Symbian Ngày nay, hệ điều hành Symbian hệ điều hành sử dụng rãi thiết bị di động Như cam kết cung cung cấp chuẩn mở hỗ trợ thiết bị người dùng di động mà Symbian trở thành lựa chọn hàng đầu ngành công nghiệp thiết bị di động hệ điều hành Symbian chuẩn mở nên nhà sản xuất cung cấp quyền sử dụng thiết bị Các nhà sản xuất có giấy phép sử dụng hệ điều hành Symbian 1.2 Các mơ hình thiết bị sử dụng hệ điều hành Symbian Hệ điều hành Symbian thiết kế cho hai loại thiết bị di động chiến lược Communicator Smartphone Communicator máy PDA với khả liên lạc vô tuyến thiết bị di động Trong Smartphone điện thoại di động với tính nang PDA bổ sung Với hai loại thiết bị này, Symbian cơng bố số mơ hình thiết kế tham khảo cho nhà sản xuất Hiện nay, tất thiết bị di động thông minh thi trường xác định dùng ba mơ hình sau: Mơ hình Crystal: Mơ hình Crystal định nghĩa loại Communicator bỏ túi với hình dáng máy laptop Crystal sử dụng hình màu theo chuẩn ½ VGA mơt bàn phím QWERTY, hỗ trợ hình cảm ứng để nhập liệu với bút stylus Mơ hình Quartz: Mơ hình Quartz định nghĩa loại Communicator với hình dáng máy Pocket PC Quartz sử dụng hình màu theo chu?n ¼ VGA, thiết bị di động dùng bút stylus nhập liệu qua tuong tác với hình cảm ứng Mơ hình Pearl: Mơ hình Pearl định nghia loại Smartphone với hình dáng kích thước điện thọai di động thơng thường Pearl hỗ trợ hình màu với nhiều kích thước, tiêu chuẩn khác nhau, sử dụng bàn phím số điện thoại để nhập liệu 1.3 Các tiến trình tiểu tiến trình Symbian 1.3.1 Tiến trình Giống hệ điều hành khác, tiến trình (process) đơn vị sở cần bảo vệ symbian Mỗi tiến trình có khoảng không gian địa riêng Địa ảo chương trình thực thi đc ánh xạ thành địa vật lí ROM (với chương trình thực trực tiếp ROM) RAM (chứa ma chương trình, liệu động thành phần khác cần cho hoạt động chương trình) tạo khơng gian nhớ cho tiến trình Cơng việc ánh xạ thực đơn vị quản lí nhớ (Memory Management Unit – MMU) Do địa mã chương trình ROM ln cố định nên chương trình ROM dùng chung (2 ứng dụng sử dụng DLL lưu ROM) Còn RAM, tiến trình có vùng nhớ riêng, khơng truy xuất lẫn 1.3.2 Tiểu trình Tiểu trình (Thread) đơn vị sở thực thi chương trình symbian Một tiến trình bao gồm nhiều tiểu trình tiểu trình sử dụng vùng nhớ cung cấp cho tiến trình Thơng thường symbian, tiến trình có nhiều tiểu trình 1.3.3 Tiến trình tiểu trình nhân Trong nhân, có tiến trình hoạt động: tiến trình nhân Nó hoạt động chế độ dặc quyền có hoạt động phục vụ cho nhân: tiểu trình phục vụ nhân (Kernel sever) tiểu trình rỗng (null) Tiểu trình phục vụ nhân tiểu trình có mức độ ưu tiên cao hệ thống Bất có yêu cầu sử dụng dịch vụ hệ thống nhân tiểu trình lại hoạt động Nược lại, tiến trình null tiểu trình có độ ưu tiên thấp hệ thống Tuy lại đóng vai trị quan trọng hệ thống điện thoại symbian khởi động, hệ điều hành bắt đầu hoạt động tiểu trình null tiểu trình chạy với nhiệm vụ nạp file sever Khi hệ thống hoạt động, tiểu trình null khơng gọi có độ ưu tiên thấp Nhưng hệ thống khơng cịn phục vụ cho ứng dụng tiểu trinh null thực Nhiệm vụ lúc gọi phần quản lí lượng để đưa hệ thống vào trạng thái “ngủ” để giảm thiểu hao hụt lượng 1.3.4 Quản lí điều phối tiến trình Việc điều phối quản lý tiến trình, tiểu trình nhân đảm trách Bộ điều phối tiến trình hoạt động theo chế độ ưu tiên với ngun lý khơng độc quyền suer dụng thuật tốn điều phối Round Rubin: chu kì, tiểu trình có độ ưu tiên cao chạy trước tiên, tiểu trình khác trạng thái tạm hỗn (suspend) Nhân hệ thống kiểm tra độ ưu tiên tiểu trình đầu chu kỳ phục hồi hoạt động (resume) cho tiểu trình tiểu trình có độ ưu tiên lớn tiểu trình hoạt động Thông thường để xây dựng chế quản lý kiện cho tiến trình, hệ điều hành sử dụng chế đa tiểu trình (multi thread): ví dụ tác vụ tính tốn lâu phức tạp xử lí tiểu trình tiểu trình khác tiếp tục chờ xử lý kiện nhập người dùng Cơ chế symbian có hỗ trợ dùng xử lí khơng mạnh mẽ máy vi tính sử dụng nhiều tiểu trình khơng phù hợp với mơ hình sử dụng sever symbian Do symbian sử dụng chế tối ưu cho hoạt động ứng dụng sever: vấn đề quản lý kiện xủ lý tác vụ đồng thời thực nhờ đối tượng đặc biệt symbian, active object Mỗi tiểu trình hệ điều hành symbian có điều phối active scheduler đảm trách việc quản lý kiện thông qua việc quản lý điều phối nhiều active object CHƢƠNG 2: Kĩ thuật lập trình C++ Symbian 2.1 Các kiểu liệu Mơi trường lập trình Symbian cung cấp kiểu liệu tương đương với kiểu xây dựng sẵn C++ Ðó lớp liệu mà sử dụng không cần cấp phát hay hủy cách tường minh; lớp bắt đầu kí tự T Lưu ý, lập trình Symbian khơng nên dùng kiểu liệu xây dựng sẵn C++ mà dùng (lớp) kiểu co mà Symbian cung cấp Lý đơn giản thiết bị thực (chạy hệ điều hành Symbian) khơng làm việc tốt với kiểu liệu xây dựng sẵn C++ kiểu số ngun: Kiểu liệu có dấu Kiểu liệu khơng dấu TInt8 TUint8 TInt16 TUint16 TInt32 TInt32 Kiểu liệu C++ tương đương signed char & Số nguyên bit có dấu unsigned char khơng dấu short int & unsigned Số nguyên 16 bit có short int dấu không dấu long int & unsigned long Số nguyên 32 bit có int dấu khơng dấu Số ngun 64 bit TInt64 TInt Mô tả TInt int & unsigned int Số ngun 32 bit có dấu khơng dấu Kiểu số thực: Kiểu liệu Kiểu liệu C++ tương Mô tả đương TReal32 float Số thực 32 bít TReal64 double Số thực 64 bít TReal Tương đương với TReal64 Lưu ý: Hầu hết HÐH Symbian không hỗ trợ phần cứng xử lý số chấm động Vì phép tốn số thực chậm hon nhiều lần so với số nguyên Vì bạn nên hạn chế tơí đa việc sử dụng số thực Các kiểu khác: Kiểu liệu C++ Kiểu liệu Mô tả tương đương 32-bit unsigned Kiểu ký tự Symbian, dài 32 bit, integer cung cấp nhiều hàm xử lý ký tự TText8 char Kiểu ký tự byte TText16 wchar_t Kiểu ký tự Unicode (2 bytes) Ttext wchar_t Kiểu ký tự Unicode (2 bytes) Tbool int TAny void TChar Kiểu logic, nhận giá trị ETrue/ EFalse 2.2 Quản lí lỗi 2.2.1 Cơ chế bắt lỗi mà Symbian hỗ trợ gồm: - Hàm User::Leave() có tác dụng ngừng hàm thực trả mã lỗi - Macro TRAP biến thể TRAPD, cho phép đoạn mã chương trình hoạt động dạng bẫy lỗi 10 3.17 Hiệu ứng sƣơng mù (Fog) Hướng dẫn bàn hiệu ứng sương mù, điều hữu ích cho số ứng dụng Hãy tưởng tượng bạn tạo trò chơi mà bạn di chuyển từ quốc gia đến quốc gia khác, hiển nhiên bạn hiển thị đầy đủ thứ nơi điều gây lãng phí, bạn khơng muốn cảnh vật bất ngờ xuất Hiệu ứng sương mù sử dụng để tạo cho bạn cảm giác có lớp sương mù làm giảm khả nhìn bạn Fog làm cho cảnh vật trở lên thực đặt Fog khu vực có sương mù cảnh thung lũng Hướng dẫn xây dựng theo hướng dẫn 15 - Texture Mapping Nội dung hàm main.cpp Fog có màu sắc cụ thể, chúng tơi tạo mảng để lưu trữ màu sắc sử dụng lớp sương mù màu xám Có chế độ sương mù: Cờ GL_EXP Mơ tả Đây dạng đơn giản Fog, đối tượng không thực xuất để di chuyển vào khỏi Fog Điều đơn giản việc tạo lớp sương mù GL_EXP2 Đây dạng cao Fog Đối tượng xuất di chuyển vào khỏi Fog Bạn thấy lớp sương mù khơng xuất hoàn toàn thực tế đường cụ thể nhìn vào điểm nơi mà đối tượng chuyển khỏi Fog GL_LINEAR Đây cách hiển thi Fog thực tế nhất, đối tượng có 60 thể vào khỏi Fog cách cách nhất, đem lại hiệu ứng sương mù cách tốt Mặc dù GL_LINEAR chế độ sương mù thực tế nhất, điều khơng có nghĩa bạn phải ln ln sử dụng nó, rõ ràng hiệu ứng sương mù tốt làm chương trình bạn chạy chậm nên chế độ bạn chọn phụ thuộc hoàn toàn ứng dụng bạn Chúng tạo mảng để chứa chế độ sương mù Cho phép chúng dễ dàng thay đổi Chúng tạo số nguyên để xác định xem chế độ sương mù sử dụng Hai chức mà bạn sử dụng nhiều làm việc với Fog chức glFogf glFogfv Chức fixed glFogx glFogxv chức có sẵn OpenGL ES Chức glFogf chấp nhận tham số Tham số cờ dùng để xác định thuộc tính sương mù thay đổi Tham số thứ hai giá trị float dùng để gán thuộc tính Bảng miêu tả thuộc tính Fog giá trị float mà sử dụng: Cờ GL_FOG_MODE Giá trị float Miêu tả GL_EXP, GL_EXP2 Xác định chế độ sương mù GL_LINEAR giải thích GL_FOG_DENSITY > 0.0f (mặc định 1.0f) Điều lớp sương mù gọi dày đặc Giá trị cao lớp sương mù dày đặc GL_FOG_START Any float (mặc định Xác định khoảng cách gần 61 GL_FOG_END 0.0f) sương mù Any float (mặc định Xác định khoảng cách xa 1.0f) sương mù Bây hiểu làm để thay đổi thuộc tính Fog Chúng ta thiết lập chế độ sương mù ban đầu tới GL_EXP Chức glFogfv sử dụng cho thuộc tính Đây thuộc tính GL_FOG_COLOR dùng để miêu tả màu sắc sương mù Tham số thứ hai chấp nhận mảng float, sử dụng mảng màu fogColor cho chức Tiếp theo thiết lập mật độ sương mù Thử thay đổi giá trị để thấy lớp sương thay đổi Một chức khác không dành riêng cho Fog hàm glHint chức cho phép bạn xác định thứ quan trọng hình/tốc độ bạn có hiệu lực Tham số số giá trị GL_FOG_HINT, GL_LINE_SMOOTH_HINT, GL_PERSPECTIVE_CORRECTION_HINT GL_POINT_SMOOTH_HINT Chúng sử dụng cờ GL_FOG_HINT Tham số thứ GL_DONT_CARE, GL_FASTEST GL_NICEST muốn lớp sương mù tốt nhât có thể, phải sử dụng cờ GL_NICEST Còn qua tâm nhiều đến tốc độ ta sử dụng cờ GL_FASTEST Giá trị mặc định GL_DONT_CARE Điều làm nâng cao hiệu sương mù có đủ thời gian để làm việc 62 Chúng sử dụng cờ GL_DONT_CARE cho hàm glHint Điều khơng cần thiết giá trị mặc đinh, chúng tơi hiển thị bạn biết tăng hiệu sương mù Khoảng cách gần va xa lớp sương mù Như tất phần khác OpenGL ES phải kích hoạt chức sương mù thơng qua cờ GL_FOG hàm glEnable Bây ta kích hoạt khởi chạy Fog hàm init, hiển thị chúng Display Thay sử dụng chức ugluLookAtf dich chuyển ma trận modelview Phần cuối thay đổi chức menu, chế độ Fog lựa chọn, muốn thay đổi chế độ sương mù, điều thực sử dụng mảng fogTypes xác định phần đầu hướng dẫn 63 CHƢƠNG 4: Áp dụng OpenGL ES để tạo ứng dụng đồ họa 3D 4.1 Phát biểu toán ứng dụng Qua tìm hiểu lý thuyết số kỹ thuật đồ họa 3D OpenGL ES, Vận dụng kiến thức thu thập để sử dụng kĩ thuật đồ họa 3D thư viện mã nguồn mở, làm tảng bước đầu cho việc thiết kế trị chơi 3D di động Chương trình tạo trị chơi 3D đơn giản nơi bạn điều khiển ô tô xung quanh khoảng đất rộng 4.2 4.2.1 - vấn đề: Như trình bày phần OpenGL ES đối tượng đồ họa tạo từ mảng chứa đỉnh đối tượng Sẽ khó khăn tự tạo mảng đối tượng có nhiều đỉnh khác - Hướng giải quyết: Ta sử dụng phần mềm trung gian để tạo đối tượng 3DS MAX, MAYA v.v… Và sử dụng công cụ COLLADA để chuyển đối tượng thành file đối tượng h Các file đối tượng h bao gồm giá trị như: số đỉnh, số bề mặt tọa độ đỉnh cho đối tượng https://collada.org 64 đồ giới hạn đồ 4.2.2 - vấn đề: Chắc hẳn việc tạo đồ bạn không khó khăn, vấn đề làm để giới hạn đồ lại Ví dụ bạn điều khiển xe đường, tốc độ nhanh bạn bãi cỏ, hay xe bị dừng lại bạn đâm vào đối tượng khác nhà cửa, hàng rào v.v… - Hướng giải quyết: Ta tạo ma trận tương ứng với đồ, dựa vào ma trận ta xác định đối tượng (như nhà cửa, đường, bãi cỏ v.v…) đặt đâu đồ việc giới hạn đồ hay xử lí va chạm thực dựa ma trận Đoạn mã minh họa: 3Dobject.h const TUint8 KMap[16][32]={ "xxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx", "xx00000000000xxx", "xx0xxxx0xxxx0xxx", "xx0x0000000x0xxx", "xx0x0a0a0a0x0xxx", "xx0x0000000x0xxx", "xx000a0a0a000xxx", "xx0x0000000x0xxx", "xx0x0a0a0a0x0xxx", "xx0x0000000x0xxx", "xx0xxxx0xxxx0xxx", "xx00000000000xxx", "xxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx", }; Dựa vào ma trận ta sử dụng giá tị sau: - giá trị x: đại diện cho bãi cỏ - giá trị 0: đại diện cho đường - giá trị a: đại diện cho nhà 65 4.2.3 Xây dựng đối tượng, bắt nút di chuyển đối tượng - Vấn đề: Ở bàn cách xây dựng đối tượng, bắt phím làm cho xe ta di chuyển cho tự nhiên Như việc bánh xe chuyển động (khi di chuyển), quay bánh xe xe bị nghiêng sang trái phải vào cua, tốc độ xe tăng dần v.v - Hương giải quyết: Khởi tạo đối tượng 3D từ liệu cho // nhà i3dHouse = CreateObject( KHouseVertexData, KHouseFaceData, KNumHouseVertices, KNumHouseFaces, TPoint( 0,0 ), ); // đường i3dRoad = CreateObject( KRoadVertexData, KRoadFaceData, KNumRoadVertices, KNumRoadFaces, TPoint( 0,0 ), ); // bãi cỏ i3dGrass = CreateObject( KGrassVertexData, KGrassFaceData, KNumGrassVertices, KNumGrassFaces, TPoint( 0,0 ), ); // bánh xe i3dFrontWheel = CreateWheel( KFrontWheelRadius, 50, ); i3dRearWheel = CreateWheel( KRearWheelRadius, 150, ); // xe i3dCar = CreateObject( KCarVertexData, KCarFaceData, KNumCarVertices, KNumCarFaces, TPoint( 0,128 ), 10 ); i3dText = CPolygonObject::NewL( i3DBase, 1, ); Thiết lập chất liệu cho đối tượng i3dHouse->SetTexture( iGlTexture2 ); i3dRoad->SetTexture( iGlTexture ); i3dGrass->SetTexture( iGlTexture2 ); i3dFrontWheel->SetTexture( iGlTexture ); i3dRearWheel->SetTexture( iGlTexture ); i3dCar->SetTexture( iGlTexture ); i3dText->SetTexture( iGlTextureFont ); 66 Xây dựng đặt đối tượng dựa theo ma trận Kmap for( y=0; ySetObjectPosition( n, TVertex( x * KTileSize, 200, y * KTileSize ) ); break; case 'a': { n = iRender->AddObject( i3dHouse ); iRender->SetObjectPosition( n, TVertex( x * KTileSize, 200, y * KTileSize ) ); break; } case 'x': { n = iRender->AddObject( i3dGrass ); iRender->SetObjectPosition( n, TVertex( x * KTileSize, 200, y * KTileSize ) ); break; } } } } 67 Di chuyển đối tượng thông qua phím hàm CGame::Move void CGame::Move( TUint8* aKey ) { // kiểm rea phím cập nhập thay đổi TInt carLastSpeed = iCarSpeed; // // chuyển động xe theo hướng định tốc độ xe // iCarPositionAdd = TVertex( iCarSpeed,0,0 ); iCarPositionAdd = i3DBase->RotateY( iCarPositionAdd, iCarAngle & (KSinTableSize-1) ); iCarPosition += iCarPositionAdd; // có nhiều va chạm xuất từ tilemap TBool collision = EFalse; TInt tileX = ( iCarPosition.iX + KTileSize/2 ) / KTileSize; TInt tileY = ( iCarPosition.iZ + KTileSize/2 ) / KTileSize; // kiểm tra vị trí đồ: if( ( tileX < ) || ( tileX >= KMapWidth-1 ) || ( tileY < ) || ( tileY >= KMapHeight-1 ) ) { collision = ETrue; } // kiểm tra va chạm với tòa nhà TInt tile = KMap[ tileY ][ tileX ]; if( tile == 'a' ) // tile tòa nhà { collision = ETrue; } if( collision ) { // di chuyển ngược lại iCarPosition -= iCarPositionAdd; // dừng iCarSpeed = 0; } // // di chuyển vị trí xe với tốc độ // vị trí xe sử dụng để làm quay bánh xe // iCarPos += iCarSpeed; // // Diều chỉnh tốc độ xe thơng qua phím // Nhấn phím '1' để tăng tốc // Nhấn phím '4' để giảm tốc độ (lùi lại) // 68 if( aKey[ EStdKeyUpArrow ] || aKey[ '1' ] || aKey[ EStdKeyDevice8 ] ) { iThrottle = 1; } else if( aKey[ EStdKeyDownArrow ] || aKey[ '4' ] || aKey[ EStdKeyDevice9 ] ) { iThrottle = -1; } else { iThrottle = 0; } // // Rẽ xe với bánh lái // iCarAngleSpeed = ( -iSteerAngle * iCarSpeed ) / KCarTurnDivider; iCarAngle += iCarAngleSpeed; // Điều chỉnh bánh lái thơng qua phím // Nhấn phím '5' để rẽ sang trái // Nhấn phím '6' để rẽ sang phải if( aKey[ EStdKeyLeftArrow ] || aKey[ '5' ] || aKey[ EStdKeyDevice6 ] ) { iSteerAngle -= KSteeringSpeed; } else if( aKey[ EStdKeyRightArrow ] || aKey[ '6' ] || aKey[ EStdKeyDevice7 ] ) { iSteerAngle += KSteeringSpeed; } else { if( iSteerAngle > ) iSteerAngle -= KSteeringSpeed; if( iSteerAngle < ) iSteerAngle += KSteeringSpeed; } // // Điều chỉnh tốc độ throttle // iCarSpeed += iThrottle; if( iCarSpeed > ) { iCarSpeed -= iCarSpeed * iCarSpeed / KFriction; } if( iCarSpeed < ) { iCarSpeed += iCarSpeed * iCarSpeed / KFriction; } 69 if( iThrottle == ) { if( iCarSpeed > ) iCarSpeed -= 1; if( iCarSpeed < ) iCarSpeed += 1; } // // Diều chỉnh bánh lái // if( iSteerAngle > KSteerLimit ) iSteerAngle = KSteerLimit; if( iSteerAngle < -KSteerLimit ) iSteerAngle = -KSteerLimit; // // Điều chỉnh độ nghiêng xe thay đổi tốc độ // iCarTilt += ( iCarSpeed - carLastSpeed ) * KCarTiltForce; if( iCarTilt > ) { iCarTilt -= ( iCarTilt * iCarTilt / KCarTiltSpringFactor ); if( iCarTilt < ) iCarTilt = 0; } if( iCarTilt < ) { iCarTilt += ( iCarTilt * iCarTilt / KCarTiltSpringFactor ); if( iCarTilt > ) iCarTilt = 0; } } 4.3 Một số hình ảnh Games 70 Chương trình chạy sdk: S60 2nd Edition (S60_2nd_ FP3) sử dụng cho dòng máy Nokia 6600, Nokia 6630, Nokia 6680, Nokia N70, Nokia N90, Nokia 9300 Communicator, and Nokia 9500 Communicator v.v… 71 4.4 Cách tạo file sis để cài đặt lên thiết bị di động Chọn Project -> Properties -> carbide.c++ -> build configurations Chọn add -> browse -> Chọn file PKG ->ok 72 Kết luận Đứng trước phát triển thiết bị di động đòi hỏi người lĩnh vực giải trí thiết bị di động ngày cao Với đề tài “Ngiên cứu lập trình C++ Symbian” khóa luận trình bày tổng quan lập trình symbian kĩ thuật lập trình đồ họa dựa thư viên OpenGL ES Qua xây dựng mơ hình 3D Symbian để làm tảng cho việc thiết kế games 3D di động Trong tương lai em nghiên cứu thêm kĩ thuật đồ họa khác thiết bị di động nhiều dòng máy khác Ngoài em tiếp tục phát triển mơ hình thành game 3D hồn chỉnh, góp phần vào ngành công nghiệp game di động nước nhà Tuy nhiên hạn chế điều kiện thời gian, khố luận khơng thể tránh khỏi thiếu sót Kính mong đóng góp ý kiến thầy bạn để em hồn thiện đề tài nghiên cứu đợt làm khóa luận tốt nghiệp Trân trọng cảm ơn! 73 Tài liệu tham khảo [1] Symbian OS: 3D Game Engine Example [2] OpenGL_ES_Game_Development_-_2004 – Dave Astle, Dave Durnil [3] Wiley.Symbian.OS.Internals.Real.time.Kernel.Programming.Dec.2005 [4] Tìm hiểu nghiên cứu kĩ thuật phát triển ứng dụng môi trường Symbian – Đại học khoa học tự nhiên, hồ chí minh [5] http://wiki.forum.nokia.com/index.php/Category:Symbian_C%2B%2B [6] http://wiki.forum.nokia.com/index.php/Category:Symbian_C%2B%2B [7] http://www.khronos.org/collada/ [8] https://collada.org/mediawiki/index.php/Main_Page 74

Ngày đăng: 14/11/2023, 21:59

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w