14.b Phân tích và làm ứng dụng "Ai là triệu phú"

iThanh
27/7/2013 15:12Phản hồi: 11
14.b Phân tích và làm ứng dụng "Ai là triệu phú"
Chào tất cả các bạn.

Một thời gian vừa qua, các bạn đã cùng với mình tìm hiểu về:
+ Ngôn ngữ Objective-C
+ Ứng dụng hỗ trợ lập trình Xcode, trong đó chúng ta cũng đã biết được những đối tượng cơ bản. (Mình sẽ không nhắc lại ở đây)

Những đối tượng trông đơn giản (khi thấy nó hiển thị trên View cho người dùng sử dụng) lại khá phức tạp nếu các bạn chưa quen, cũng như chưa tiếp xúc đủ nhiều với nó.

Trong bài viết này, mình không nói đến bất kỳ một đối tượng nào mới cũng như không nhắc lại các đối tượng đã biết, mà dành thời gian mô tả, hướng dẫn thêm về tư duy lập trình cũng như áp dụng các đối tượng đã biết để viết một ứng dụng cụ thể.


Để bắt đầu, bạn cần nhớ lại toàn bộ những đối tượng đã học.
Sau đó, cùng với mình phân tích và làm ứng dụng: "Ai là triệu phú".

Bước 1: Xây dựng ý tưởng. Ý tưởng như đã nói ở trên, mình sẽ làm ứng dụng "Ai là triệu phú".

Bước 2: Định hướng người dùng:
- Người dùng khi bấm vào icon của Apps, Apps sẽ hiển thị trên màn hình.
- Sẽ có một Segmented Control cho phép người dùng chọn mức độ chơi khó hoặc dễ. Nếu bấm vào Dễ thì câu hỏi số 1 của nhóm câu hỏi dễ hiện ra cùng với 4 đáp án cho người chơi chọn lựa. Segmented Control ngaylúc này bị vô hiệu hoá (Disable).
- Tại đây thời gian sẽ chạy là 30 giây. Nếu hết 30 giây mà người dùng không chọn đáp án, ngay lập tức báo thua cuộc và Segmented Control được kích hoạt trở lại (Enable) để người dùng chọn mức độ chơi.
- Quy định số điểm cho mỗi câu hỏi, ứng dụng sẽ xem nếu đúng ở câu hỏi nào thì cộng điểm của câu hỏi đó vào điểm tổng.
- Bất kỳ câu nào bị sai, sẽ dừng cuộc chơi.
- Sau khi kiểm tra tính đúng/sai của câu trả lời của người dùng, ứng dụng sẽ tự chuyển đến câu hỏi ở mức kế tiếp và ngược lại dừng cuộc chơi nếu câu trả lời đó sai.

Bước 3: Tạo Project (dự án) để bắt đầu lập trình.

Quảng cáo


Bước 4: Thiết kế giao diện trực quan:
- Ở đây mình sẽ không thiết kế. Các bạn hãy thể hiện ý tưởng của các bạn một cách thoải mái - đó là tiêu chí.
- Dựa vào những ý tưởng mà mình đã nói ở trên, các bạn bố trí sao cho hợp lý giao diện của ứng dụng này. Trông đẹp mắt là được. Dùng UIImage làm nền, hoa lá cành, nhìn cho sặc sỡ.

Bước 5: Liên kết giao diện đến code.

Bước 6: Thể hiện ý tưởng như ở trên bằng ngôn ngữ lập trình Objective-C và các đối tượng mà các bạn đã cùng mình tìm hiểu trong những bài viết vừa qua.

Bước 7: Chạy thử và sửa lỗi.

Mình sẽ không làm sẵn ứng dụng này, các bạn hãy viết dựa trên ý tưởng của mình và sáng tạo thêm, cũng như thiết kế giao diện sao cho đẹp mắt và chụp hình, quay Video đăng lên (tạo bài viết mới, bạn đừng nên đăng tại bài viết này) cho mọi người cùng tham khảo.

Quảng cáo


Ngoài ra việc quan trọng là tổ chức dữ liệu. Việc này sẽ khó khăn đối với các bạn mới bắt đầu học lập trình. Mình sẽ khái quát như sau (một vài câu hỏi, câu trả lời cho ứng dụng) giúp cho các bạn dễ hiểu.

- Dữ liệu sẽ được chia thành các mảng:
+++ (1) Mảng chứa câu hỏi.
+++ (2) Mảng chứa câu trả lời.
+++ (3) Mảng chứa đáp án.

Ở (1), mỗi phần tử trong mảng là mỗi câu hỏi.
Ở (2), mỗi phần tử trong mảng bao gồm 4 câu trả lời và được phân cách bằng dấu hiệu phân cách riêng của bạn.
Ở (3), mỗi phần tử trong mảng là một đáp án đúng.

Vậy thì chúng ta sẽ có tương ứng như sau:

(Ảnh đính kèm)

Bảng trên khái quát cho bạn cách bố trí dữ liệu (có 2 câu hỏi). Và một ô là một phần tử.
Bạn lấy câu hỏi ở (1) và các câu trả lời ở (2) hiện ra.
Kiểm tra tính đúng/sai của câu trả lời ở (3). Với đáp án đúng là 1 nghĩa là phần tử thứ 2 (vị trí phần tử đó là 1) trong mảng được cắt ra từ chuỗi lấy từ phần tử trong (2).

Ví dụ ở đáp án câu a, bạn sẽ bố trí câu trả lời là: "đục|trong|mát|lạnh"
Để hiện câu trả lời, bạn lấy phần tử "đục|trong|mát|lạnh" ra, và phần tử này là một chuỗi. Cắt chuỗi đó ra thành 4 phần tử và đưa vào 1 mảng riêng, sau đó hiện từng phần tử ở mảng riêng cắt được ra View cho người dùng thấy.



Tất cả phần trên đây, mình đã giúp các bạn làm sao để phân tích và viết một ứng dụng. Và đó cũng là tư duy lập trình. Tư duy lập trình đối với mình hiểu, nghĩa là đưa ra phương pháp cho một ý tưởng (một bài toán tin học - có thể nói như vậy, sau này sẽ là các dự án lớn), phân tích, thiết kế nó, dẫn hướng cho người dùng phải bấm vào đâu, chọn cái gì, viết cái gì vào đâu, ... trong ứng dụng của các bạn.

Chỉ đơn giản là như vậy.
Mong các bạn sớm hoàn thành ứng dụng "Ai là triệu phú" và cùng đăng lên đây để mọi người cùng tham khảo.
Hoặc bạn có thể gửi thư cho mình thông qua địa chỉ ithanh@me.com
Mình sẽ giúp các bạn kiểm tra, góp ý thêm hoặc chia sẻ thêm trực tiếp với bạn thông qua project mà bạn gửi cho mình. Nhưng có lẽ cũng sẽ giới hạn (có lẽ các bạn hiểu cho mình ở điểm này), sẽ ưu tiên xem từ trên xuống dưới và các project nổi bật.

Các bài viết của mình cũng được đăng tải tại http://facebook.com/LapTrinhiOS, mong các bạn ghé thăm và chia sẻ.

Cảm ơn các bạn đã quan tâm và đọc bài viết.
Mong các bạn ủng hộ để mình có thêm động lực cho các bài viết sau.
11 bình luận
Chia sẻ

Xu hướng

mutang1967
ĐẠI BÀNG
11 năm
bạn ơi cho mình hỏi bạn dùng gì để lưu các câu hỏi trong điều kiện thực tế ở Ứng dụng này
iThanh
ĐẠI BÀNG
11 năm
@mutang1967 Mình đang phân tích một ứng dụng thực tế đấy chứ bạn.

Có thể dùng Text, SQLite, .. hoặc một số cách khác.
Cũng có thể lưu trực tiếp trong quá trình code bằng NSArray như mình đã nói.
mutang1967
ĐẠI BÀNG
11 năm
@iThanh Mình có thể sử dụng xml được ko?
Việc lưu dữ liệu trên các ứng dụng của IOS bạn nên sử dụng cách thức chính quy trong lập trình IOS là Core Data.
Với CoreData, chương trình sẽ chia làm 2 phần rất rõ ràng: Phần Application Code và phần Database. Như vậy sẽ rất dễ dàng trong việc lập trình.

Website: huygamer.wordpress.com
nếu dùng mảng thì các câu hỏi là lần lượt ?
có cách nào để gọi các câu hỏi ra random k bạn
cám ơn vì bài viết hữu ích
iThanh
ĐẠI BÀNG
11 năm
Bạn có hàm gọi Random như sau:
int Random = arc4random()%10;
Hàm này sẽ cho ra 1 số nguyên được lấy ngẫu nhiên từ 0 đến 10.
Nếu mảng bạn có 60 phẩn tử có thể random %59
Sau đó dùng hàm ObjectAtIndex để lấy phần tử ra khỏi mảng với Index là số Random vừa được tính.
Nếu sử dụng int Random = arc4random()%10; thì có khả năng câu hỏi sẽ bị lặp lại không bạn?
iThanh
ĐẠI BÀNG
10 năm
@RoPho Chắc chắn là có rồi, bạn à.
Mình muốn hỏi về quyền trợ giúp trong game, làm sao để khi khán giả trợ giúp các câu hỏi hiện ra random tỷ lệ nhưng câu trả lời đúng sẽ có % đúng cao hơn.
đang có dự tính làm nè....đố vui
Tại đây thời gian sẽ chạy là 30 giây. Nếu hết 30 giây mà người dùng không chọn đáp án, ngay lập tức báo thua cuộc và Segmented Control được kích hoạt trở lại (Enable) để người dùng chọn mức độ chơi.
làm thế nào để Enable và Disable (sử dụng lệnh nào ?) trong Segmented Control vậy bạn ?

Xu hướng

Bài mới









  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2024 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: Số 70 Bà Huyện Thanh Quan, P. Võ Thị Sáu, Quận 3, TPHCM
  • Số điện thoại: 02822460095
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019