• Thứ Hai, 01/08/2011 08:38 (GMT+7)

    Trả lời thư bạn đọc

    TS. Nguyễn Văn Hiệp
    Mục giải đáp thắc mắc của bạn đọc do TS. Nguyễn Văn Hiệp phụ trách.

    Câu hỏi:
    Cách dùng dấu “.” trong SQL SERVER 2005, để nhập 123456789 khi xuất sẽ hiển thị là 123.456.789.

    Trả Lời:
    Cách miêu tả dữ liệu phụ thuộc vào dữ liệu đang ở ngữ cảnh nào. Thí dụ nếu dữ liệu là số nguyên thì:

    - Khi nhập vào máy, các chương trình đòi hỏi người nhập liệu phải nhập đúng cú pháp quy định (số nguyên là chuỗi các ký tự số liên tiếp, thí dụ 123456789).

    - Khi được lưu trong chương trình, số nguyên được mã hóa thành chuỗi bit nhị phân 0|1 trong 1 vùng nhớ 1, 2, 4 hay 8 byte tùy theo kiểu cụ thể được dùng.

    - Khi xuất ra màn hình hay máy in để con người xem thuận lợi, thì số nguyên có thể được chỉnh dạng thành chuỗi ký số có kèm theo dấu cách hàng ngàn, hàng triệu, hàng tỉ,... Dấu cách được dùng phụ thuộc vào thông tin trong record "locale" đang được dùng bởi Windows (record "locale" có nhiều field thông tin miêu tả đặc tính cụ thể về 1 ngôn ngữ, dân tộc cụ thể như ký tự tiền tệ, ký tự dấu cách hàng ngàn, hàng triệu, ký tự dấu cách phần lẻ, ký tự miêu tả buổi sáng, buổi chiều, danh sách có thứ tự các ký tự của ngôn ngữ tương ứng...).

    Tóm lại, trong database SQL Server, bạn có thể dùng kiểu int (hay 1 kiểu số nào đó) để miêu tả kiểu cho field dữ liệu số nguyên của bạn. Khi xuất field số nguyên theo định dạng nào đó bạn viết đoạn lệnh VB (trong chương trình truy xuất database của bạn) để xuất giá trị số nguyên có dấu cách hàng ngàn, hàng triệu như sau:

    Dim field_I As Long

    Dim outstr as String

    'xác định giá trị của field_I

    field_I = 123456789

    'định dạng kết quả

    outstr = Format(field_I, "###,###,###,###,###")

    'xuất ra màn hình kết quả

    MsgBox outstr

    Khi đoạn lệnh VB trên chạy, tùy thuộc vào Windows đang dùng locale của ngôn ngữ nào mà dấu cách hàng ngàn, hàng triệu sẽ là ký tự nào. Nếu bạn muốn dùng dấu '.' làm dấu cách, bất chấp Windows đang dùng locale nào, bạn hãy vào Start.Control Panel.Regional and Language Options, nhấn button "Customize" để hiển thị cửa sổ Customize, nhập '.' vào Combobox "Digit grouping symbol" rồi nhấn button Ok để hoàn thành việc chỉnh sửa theo ý bạn. Từ đây trở đi, Windows sẽ dùng dấu '.' do bạn thiết lập để ngăn cách phần ngàn, phần triệu... của 1 số cần xuất ra.

    Câu hỏi:
    Phản hồi về “Kiểm tra số liệu trong Excel” (www.pcworld.com.vn/T1216283). Xin hỏi làm sao để cập nhật số liệu tồn kho mỗi ngày, không cần có sự tác động mà chỉ cần bán 1 món đồ là số tồn kho sẽ giảm đi.

    Trả lời:
    Việc cập nhật số lượng hàng tồn kho ngay sau mỗi lần nhập/bán 1 mặt hàng là không cần thiết, tuy nhiên nếu bạn muốn thì cứ thực hiện. Nếu bạn dùng bảng tính Excel để chứa danh sách các mặt hàng, số lượng nhập, số lượng xuất bán và số lượng đang tồn kho thì việc cập nhật số hàng tồn kho là rất dễ dàng. Cụ thể nếu bạn dùng cột D để miêu tả số lượng nhập, cột E để miêu tả số lượng xuất bán, cột F để miêu tả số lượng hàng tồn, danh sách các mặt hàng bắt đầu từ hàng số 2, thì chỉ cần nhập công thức tính hàng tồn tự động cho mặt hàng đầu tiên trong danh sách vào cell F2:
    =D2-E2 .

    Sau đó copy công thức trên và dán vào các cell kế tiếp ở cột F của các hàng còn lại. Từ đây trở đi, mỗi lần bạn hiệu chỉnh số lượng hàng nhập hay số lượng hàng xuất thì số lượng hàng tồn sẽ được cập nhật tự động.

    Câu hỏi:
    Tôi đã làm theo hướng dẫn xuất data từ table trong Access sang Excel (http://www.pcworld.com.vn/T1223720) nhưng gặp vấn đề field chứa chuỗi dài hơn 255 ký tự chỉ xuất được 255 ký tự. Xin hỏi cách giải quyết.

    Trả lời:
    Trước hết, chúng tôi xin nhắc lại phương pháp dùng chức năng Export của Access để xuất data từ 1 table trong database Access sang Excel mà vẫn giữ nguyên định dạng gốc của bảng dữ liệu. Đây là phương pháp đơn giản và dễ dàng nhất. Quy trình điển hình gồm các bước sau:

    1. Chạy Access (cụ thể là version 2003), mở file Access chứa bảng dữ liệu cần xuất sang Excel.

    2. Mở table chứa dữ liệu cần xuất sang Excel.

    3. Chọn menu File.Export... để hiển thị cửa sổ Export... Chọn mục "Microsoft Excel 97-2003 (*.xls)" trong listbox "Save as type", đánh dấu chọn vào checkbox "Save formatted", nhấn chuột vào button "Export All" để xuất sang bảng tính Excel.

    Chúng tôi đã kiểm tra lại chức năng Export của Access 2003 và nhận thấy nó có hạn chế như bạn miêu tả: khi gặp field memo chứa chuỗi dài hơn 255 ký tự, nó chỉ xuất sang Excel có 255 ký tự đầu, phần còn lại bị cắt bỏ. Hạn chế này đã được khắc phục ở các version mới hơn, cụ thể chúng tôi đã thử trên Access 2010 và thấy chức năng Export của nó hoạt động tốt, nó giữ lại đầy đủ chuỗi trong các field memo cho dù rất dài.

    Câu hỏi:
    Tôi cần chuyển đổi từ dữ liệu từ FoxPro sang MySQL, khi ứng dụng chuyển mã VBTransDataTable (VB 6.0) thì bị báo lỗi: Run-time error '-2147217900 (80040e14)' Syntax error in field difinition.

    Xin hỏi cách giải quyết.

    Trả lời:
    Chương trình VB 6.0 mà chúng tôi viết và đăng kèm trong bài trả lời của câu hỏi về cách chuyển mã tiếng Việt từ bảng dữ liệu FoxPro sang bảng tính Excel chỉ có tính demo, nó chỉ chuyển được bảng dữ liệu từ file *.dbf của Foxpro sang bảng tính Excel với điều kiện các field dữ liệu được dùng phải thuộc các kiểu dữ liệu phổ biến mà chương trình có xử lý. Trong trường hợp của bạn, bạn muốn chuyển bảng dữ liệu từ FoxPro sang MySQL và record dữ liệu của bạn có thể dùng các kiểu dữ liệu mà chương trình chưa xử lý, do đó có thể phát sinh lỗi. Nếu muốn chúng tôi sửa lỗi dùm, bạn cần gởi file dữ liệu Foxpro gốc về cho chúng tôi, từ đó chúng tôi mới có điều kiện debug mã nguồn chương trình của mình và tìm được chính xác nguyên nhân gây lỗi rồi khắc phục.

    Câu hỏi:
    Tham khảo hướng dẫn lập trình phần mềm nghe nhạc bằng VB 6.0 (http://www.pcworld.com.vn/T1222583), tôi viết 1 chương trình nghe nhạc đơn giản bằng C# sử dụng thư viện winmm.dll nhưng không biết cách làm cho thanh trackbar tự động chạy đúng với vị trí của bài hát đang được phát và tự động phát bài hát tiếp theo khi bài hát đang phát kết thúc trong playlist. Xin hướng dẫn

    Trả lời:
    Chương trình được giới thiệu trong website mà bạn đọc được chúng tôi viết bằng ngôn ngữ VB 6.0. Đây là phần mềm rất đơn giản, demo việc chơi các file multimedia bằng cách dùng đối tượng do Microsoft cung cấp sẵn trong Windows có tên là Windows Media Player (WMP). Có thể nói việc dùng đối tượng WMP là cách đơn giản nhất, tin cậy nhất để chơi được nhiều định dạng file multimedia khác nhau, bản thân ứng dụng chỉ cần thông báo cho WMP biết đường dẫn file cần chơi là nó sẽ tự động chơi dùm, trong quá trình chơi, vị trí của file multimedia cũng được hiển thị tự động trong thanh trackbar (progressbar), ứng dụng không cần quản lý tính năng này.

    Riêng bạn muốn dùng C# và dùng các hàm thư viện cấp thấp trong thư viện winmm.dll để viết chương trình chơi nhạc theo yêu cầu riêng của mình. Trong trường hợp này, để hiển thị được thanh progressbar miêu tả vị trí bài hát theo thời gian, bạn phải tự viết code theo ý tưởng sau:

    - Vẽ đối tượng ProgressBar vào vị trí mong muốn trong form ứng dụng.

    - Vẽ đối tượng Timer vào vị trí nào đó trong form, thiết lập thuộc tính Interval = 1000 (ms) để Timer đếm theo chu kỳ 1s và kích hoạt hàm xử lý sự kiện timeout 1 lần.

    - Viết code cho hàm Timer1_Tick() để vẽ lại vị trí hiện hành của bài hát. Bạn có thể gọi hàm waveOutGetPosition() của thư viện winmm.dll để xác định vị trí hiện hành của bài hát.

    Câu hỏi:
    Tôi sử dụng Delphi2010, trước đây chạy trên XP bình thường. Tuy nhiên sau khi chuyển sang Win7 bị báo lỗi "Can't creat new socket" khi biên dịch chương trình, (sử dụng component TClientSocket & TServerSocket chuẩn của Delphi). Xin hỏi cách giải quyết.

    Trả lời:
    Nếu máy báo lỗi theo hình trên thì đây là lỗi khi chạy chương trình server.exe của bạn, ta gọi lỗi này là lỗi run-time. Điều này có nghĩa là chương trình server mà bạn viết không có lỗi từ vựng và cú pháp nên máy mới tạo ra file khả thi server.exe và chạy nó. Bạn nói trước đây chương trình này chạy tốt trên Win XP nhưng bây giờ chạy trên Win 7 thì báo lỗi, nếu điều này đúng thì cũng không có gì bất ngờ vì Win 7 không tương thích hoàn toàn với Win XP, nhất là release 64 bit. Tuy nhiên để xác định chính xác nguyên nhân gây lỗi, bạn phải debug chương trình của bạn. Vì chúng tôi không có mã nguồn cụ thể của chương trình nên không thể chỉ ra lệnh gây lỗi. Tuy nhiên, theo nội dung thông báo lỗi thì lỗi mà bạn gặp xảy ra ở lệnh tạo socket mới, do đó bạn hãy tìm trong file mã nguồn hàng lệnh khởi tạo đối tượng socket, thiết lập điểm dừng ở hàng lệnh này rồi cho chương trình chạy tới điểm dừng, sau đó chạy từng lệnh để xem lệnh nào gây lỗi, từ đó tìm cách khắc phục.

    Câu hỏi:
    Bên dưới là hình chụp thông báo lỗi khi biên dịch và chạy chương trình viết từ Delphi. Xin hỏi đây là lỗi gì và cách giải quyết.


     

    Trả lời:
    Nếu máy báo lỗi theo hình trên thì đây là lỗi khi chạy chương trình vatli10.exe của bạn, ta gọi lỗi này là lỗi run-time. Điều này có nghĩa là chương trình vatli10 mà bạn viết không có lỗi từ vựng và cú pháp nên máy mới tạo ra file khả thi vatli10.exe và chạy nó. Tuy nhiên để xác định chính xác nguyên nhân gây lỗi, bạn phải debug chương trình của bạn. Lỗi mà bạn gặp liên quan đến việc truy xuất biến tham khảo mà chưa được khởi động. Vậy bạn hãy dùng debug để chạy từng lệnh của file chương trình cho đến khi gặp hàng lệnh gây lỗi, từ đó tìm cách khắc phục. Vì chúng tôi không có mã nguồn cụ thể của chương trình nên không thể chỉ ra lệnh gây lỗi.

    Câu hỏi:
    Công ty tôi đã thiết kế hóa đơn theo nghị định mới, bây giờ nên mua máy in nào để tự in hoá đơn sử dụng?

    Trả lời:
    Có nhiều loại hóa đơn khác nhau, tùy theo hóa đơn dùng loại giấy rời hay loại giấy liên tục mà máy in nào sẽ thích hợp. Nếu bạn dùng loại giấy liên tục thì chỉ có máy in kim mới thích hợp, trong đó máy in kim của hãng Epson là thông dụng nhất. Tùy theo độ rộng của hóa đơn mà mua loại máy in có độ rộng phù hợp. Nếu dùng loại giấy rời, hầu hết các loại máy in đều có thể in được, trong đó máy in laser có lợi thế nhất nhờ tốc độ cao, độ phân giải cao, nét mực đậm và khó bị phai mờ theo thời gian, độ ẩm không khí,...

    Câu hỏi:
    Xin Tòa soạn giúp tôi một số câu lệnh trong lập trình Pascal như sau:

    1. Tắt máy, khởi động lại (nguồn ATX) trong môi trường DOS.

    2. Đọc dữ liệu từ, xuất dữ liệu ra cổng COM (RS232), cổng LPT.

    3. Tôi có một chương trình chạy trên nền DOS, mỗi lần khởi động là kiểm tra máy in ở cổng LPT, nếu không có máy in là không hoạt động. Có cách nào để giả lập máy in ở cổng LPT để chương trình chạy mà không cần lắp máy in thực được không?

    Trả lời:
    Các vấn đề mà bạn thắc mắc không phụ thuộc vào ngôn ngữ lập trình mà phụ thuộc vào hệ điều hành đang dùng. Hệ điều hành MSDOS đã quá cũ và không còn hỗ trợ bởi Microsoft nữa, nó rất yếu về dịch vụ và độ bảo mật cũng rất thấp. Do vậy, bạn không nên viết chương trình trên MSDOS. Nếu có yêu cầu đặc biệt nào đó cần phải viết chương trình bằng Pascal chạy trên MSDOS thì:

    1. Để tắt máy (shutdown), bạn có thể dùng lệnh sau:

    Exec("shutdown", "-s");

    Để khởi động lại máy (restart), bạn có thể dùng lệnh sau:

    Exec("shutdown", "-r");

    2. Để đọc/xuất dữ liệu ra cổng COM, bạn có thể dùng dịch vụ của ROM BIOS thông qua ngắt Int 14h. Bạn có thể tìm đọc trên Internet thông tin chi tiết về các chức năng của Int 14h để biết cách thiết lập các thông số cấu hình làm việc của cổng COM và cách thức gởi/nhận dữ liệu thông qua cổng COM. Tuy nhiên, bạn cần nắm vững một số kiến thức phần cứng về cách thức cổng COM hoạt động. Tương tự, để đọc/xuất dữ liệu ra cổng LPT, bạn có thể dùng dịch vụ của ROM BIOS thông qua ngắt Int 17h. Bạn có thể tìm đọc trên Internet thông tin chi tiết về các chức năng của Int 17h để biết cách thiết lập các thông số cấu hình làm việc của cổng LPT và cách thức gởi/nhận dữ liệu thông qua cổng LPT. Tuy nhiên, bạn cần nắm vững 1 số kiến thức phần cứng về cách thức cổng LPT hoạt động.

    3. Không biết phần mềm mà bạn nói là do bạn viết và đang có mã nguồn của nó hay không. Nếu bạn có mã nguồn hãy tìm đoạn code kiểm tra sự tồn tại máy in và xóa nó rồi dịch lại là xong. Trong trường hợp bạn là người dùng phần mềm và hiện chỉ có file khả thi của nó thì bạn phải phụ thuộc vào nó, tùy theo cách thức mà phần mềm kiểm tra sự tồn tại của máy in mà cách giả lập máy in sẽ khác nhau.

    Tóm lại để lập trình giao tiếp với 1 thiết bị nào đó, bạn cần trang bị kiến thức phần cứng về thiết bị đó, cách thức điều khiển nó bằng phần mềm... chứ không đơn thuần chỉ biết ngôn ngữ Pascal để lập trình.

    Câu hỏi:
    Tôi lập trình trên Access đọc CSDL SQL server 2000 nhưng không biết cách dùng Query có truyền tham số để truy cập dữ liệu. Xin hướng dẫn.

    Trả lời:
    Hầu hết các hệ quản trị cơ sở dữ liệu hiện nay (FoxPro, Excel, Access, SQL Server, MySQL, Oracle,...) đều cho phép truy xuất cơ sở dữ liệu bằng các lệnh của ngôn ngữ truy vấn SQL. Mỗi câu lệnh truy vấn SQL đều có cú pháp riêng cần phải tuân thủ gồm nhiều thành phần được xếp theo thứ tự nào đó. Thường cú pháp đầy đủ của từng lệnh SQL khá phức tạp vì chứa nhiều thành phần, nhưng chúng thường là nhiệm ý (option). Thí dụ lệnh Select sau cho phép xác định các record trong bảng dsnv mà có họ "Nguyễn":

    Select * from dsnv where hoten like 'Nguyễn%'

    Tuy nhiên tại thời điểm lập trình, người lập trình chưa thể xác định được dữ liệu cần xử lý (thí dụ họ Nguyễn), thông tin này thường được thiết lập động trong 1 biến chuỗi, do đó để chương trình tự động thực hiện 1 lệnh truy vấn SQL nào đó, người lập trình sẽ phải viết code gồm 2 bước:

    1. Đoạn lệnh xây dựng chuỗi miêu tả lệnh SQL từ các thông tin động đang được chứa trong các biến phần mềm.

    2. Đoạn lệnh gởi chuỗi miêu tả lệnh SQL đến server database để nó xử lý dùm.

    Thí dụ đoạn code VB 6.0 sau cho phép xây dựng động lệnh truy vấn SQL và thực thi nó:

    Dim strSQL as String

    'giả sử người dùng nhập họ vào Textbox txtHoten

    '1. xây dựng câu lệnh SQL

    strSQL = "Select * From dsnv where hoten like '" & txtHoten.Text & "%'"

    '2. đoạn lệnh gởi lệnh SQL đ1ên server

    'dùng connection mà Access đang dùng

    Set cn = CurrentProject.AccessConnection

    'tạo 1 đối tượng Recordset

    Set rs = New ADODB.Recordset

    'thiết lập lệnh truy vấn theo yêu cầu

    With rs

    Set .ActiveConnection = cn

    .Source = strSQL

    .LockType = adLockOptimistic

    .CursorType = adOpenKeyset

    .Open

    End With

    '3. xử lý kết quả trong rs
    ...

    Câu hỏi:
    Xin hỏi các ưu/khuyết điểm của print server?

    Trả lời:
    Tùy theo ngữ cảnh mà 1 thuật ngữ có nghĩa cụ thể và chính xác như thế nào. Thí dụ thuật ngữ "Print Server" có nghĩa cụ thể khác nhau trong những ngữ cảnh khác nhau. Bạn không nói rõ ngữ cảnh mà bạn đang dùng nên chúng tôi chỉ trả lời tổng quát. Ý tưởng tổng quát của thuật ngữ này miêu tả phần tử quản lý việc dùng máy in:

    - Trên máy cá nhân dùng hệ điều hành đơn giản như MSDOS, không có phần tử nào quản lý máy in cả, do đó các ứng dụng tự do truy xuất máy in theo cách thức riêng của mình. May là MSDOS là hệ điều hành đơn chương, mỗi thời điểm chỉ cho 1 chương trình chạy nên việc chương trình tự do truy xuất máy in sẽ không gây hại nhiều cho các phần mềm sắp chạy sau đó.

    - Trên máy cá nhân dùng hệ điều hành Windows, nếu để các ứng dụng chạy đồng thời được tự do truy xuất máy in thì rất nguy hiểm vì chúng có thể phá hoại dữ liệu in của nhau, kết quả là nội dung được in trên từng trang giấy sẽ là sự kết hợp hỗn độn của nhiều chương trình. Do đó, Windows đã phải dùng một "Print server" có tên là "Printer Spooler" để quản lý việc in ấn của các ứng dụng. Lúc này, chỉ có process "Printer Spooler" mới được quyền truy xuất trực tiếp máy in, các chương trình ứng dụng phải gọi hàm chức năng của "Printer Spooler" để nhờ nó in dữ liệu ra máy in. Thường "Printer Spooler" sẽ tạo ra 1 vùng nhớ đệm (buffer) để chứa dữ liệu in của từng ứng dụng, khi nào ứng dụng hoàn thành việc in ấn luận lý, nó sẽ báo cho Printer Spooler biết để Printer Spooler in dữ liệu trong buffer ra máy in 1 lần. Nhờ kỹ thuật này, kết quả được in ra trên các trang giấy được sắp xếp tuần tự của từng phần mềm chứ không còn hỗn độn như trước.

    - Printer Spooler mới chỉ giải quyết vấn đề thiết yếu nhất là tranh chấp in giữa các chương trình. Để tăng cường thêm nhiều chức năng khác như thiết lập khổ giấy luận lý, lề giấy luận lý,... các hãng phần mềm khác đã viết Printer Server đa năng hơn.

    - Trong 1 mạng cục bộ có nhiều máy tính dùng chung máy in (cho hiệu quả kinh tế cao), ta cần 1 print server để quản lý việc in ấn từ nhiều máy trong mạng. Trong trường hợp này, print server là 1 phần mềm chạy trên 1 máy tính nào đó trên mạng mà địa chỉ của nó đã được thông báo cho mọi máy khác biết, chỉ có phần mềm này mới truy xuất được trực tiếp máy in. Hiện nay, người ta đã tích hợp phần mềm print server vào máy in và gắn máy in trực tiếp vào mạng để các máy tính trong mạng dùng chung (nhưng không tranh chấp nhau).

    Câu hỏi:
    CPU hoạt động bình thường, tôi đã chỉnh Screen saver-Power Options về chế độ never, nhưng màn hình cứ vài phút lại tắt 1 lần, rất phiền toái.

    Trả lời:
    Có nhiều nguyên nhân khác nhau có thể làm cho màn hình máy tính bị tắt:

    1. Do tín hiệu máy tính không gởi ra, nếu bạn đã cấu hình chế độ làm việc màn hình thông qua tiện ích Screen saver-Power Options mà màn hình vẫn tắt thì không phải nguyên nhân này.

    2. Do không tương thích tín hiệu nào đó (thí dụ độ phân giải) giữa Windows (thí dụ Win 7) và màn hình.

    3. Do phần cứng màn hình có vấn đề, thí dụ cáp nối bị lỏng hay màn hình quá nóng...

    Để xác định nguyên nhân cụ thể, bạn thử boot máy bằng CDROM và chạy ở chế độ DOS một thời gian xem màn hình có bị tắt không. Nếu vẫn bị tắt thì nguyên nhân là do phần cứng màn hình. Nếu màn hình hoạt động tốt thì nguyên nhân có thể là 1 hay 2. Lúc này, bạn hãy giảm độ phân giải xuống tối thiểu (thí dụ 800*600 ở tần số quét dọc 60Hz) xem màn hình có tắt nữa không. Cố gắng thử các chế độ phân giải khác nhau và tần số quét khác nhau, từ đó chọn lựa được chế độ làm việc tin cậy nhất.

    Câu hỏi:
    Xin hỏi chương trình đồng bộ dữ liệu (giữa máy tính và ổ cứng di động) tốt nhất hiện nay?

    Trả lời:
    Có rất nhìều chương trình đồng bộ các file dữ liệu giữa 2 thư mục bất kỳ (ổ cứng hay ổ di động là thư mục đặc biệt - thư mục gốc), mỗi chương trình có tính chất riêng, có ưu/nhược điểm xác định. Việc so sánh chúng cần phải có những tiêu chí rõ ràng, ở đây chúng tôi chỉ xin liệt kê một số chương trình được nhiều người đánh giá tốt : SugarSync, GoodSync, Syncables, ViceVersa, Laplink PCsync, Allway Sync, Liuxz Sync Now!, Beyond Sync, Dmailer Sync,...

    Câu hỏi:
    Xin hỏi lập trình game 3D thì phải học ngôn ngữ nào, dùng trình đồ họa gì?

    Trả lời:
    Bạn có thể dùng nhiều ngôn ngữ khác nhau để lập trình game 3D, tuy nhiên nếu muốn lập trình game 3D dễ dàng và chương trình chạy hiệu quả trên Windows, bạn nên dùng VC++ hay C# và truy xuất các dịch vụ của thư viện đồ họa OpenGL hay DirectX. Bạn có thể tìm đọc thông tin chi tiết về các thư viện đồ họa này trên Internet. Lưu ý các kiến thức về lập trình game được trình bày trong nhiều sách khác nhau, bạn nên đọc nhiều tài liệu để có góc nhìn đầy đủ và khách quan về 1 vấn đề.

    ID: A1107_106