Trung Tâm Đào Tạo Mạng Máy Tính Nhất Nghệ

Trung Tâm Đào Tạo Mạng Máy Tính Nhất Nghệ (http://www.nhatnghe.com/forum/index.php)
-   LẬP TRÌNH iOS (http://www.nhatnghe.com/forum/forumdisplay.php?f=154)
-   -   Game Tic Tac Toe - NTA (http://www.nhatnghe.com/forum/showthread.php?t=391505)

mankichi4589 19-06-2012 08:49

Game Tic Tac Toe - NTA
 
Yêu cầu
- Thiết kế game Tic Tac Toe : 9 ô tương ứng với 9 button.
- Người chơi sẽ chơi với máy ở cấp độ dễ. Người chơi đánh X, máy tự động đánh O (random một vị trí bất kì)
- Khi 1 hàng ngang hay dọc hay chéo đều là X thì người chơi thắng, còn đều là O thì người chơi thua. Nếu đánh hết 9 ô mà không ai thắng thì hòa :D

http://i1251.photobucket.com/albums/...01275537PM.png:Dhttp://i1251.photobucket.com/albums/...01275554PM.png:(http://i1251.photobucket.com/albums/...01275626PM.png
Demo
[YOUTUBE]10X1Dgh4pnM[/YOUTUBE]
Code
Ánh xạ
http://i1251.photobucket.com/albums/...9at92759PM.png
File .h
http://i1251.photobucket.com/albums/...9at95303PM.png
File .m
Ý tưởng làm :
+Đầu tiên ta tạo một mảng a chứa 9 phần tử tương ứng với 9 ô.
+Khi người chơi đánh X máy sẽ đánh O ở vị trí random.
+Giá trị mặc định của mỗi ô là -1.
+Khi người chơi đánh X thì giá trị đổi thành 1.
+Máy đánh O thì giá trị đổi thành 2
+Do có 9 ô nên sẽ có 8 khả năng X thắng (3 hàng dọc, 3 hàng ngang, 2 hàng chéo) và tương tự 8 trường hợp cho O =>16 trường hợp kiểm tra thắng thua . Nếu không rơi vào 16 trường hợp trên thì hòa cờ.
Xây dựng chương trình:
// viewDidLoad
http://i1251.photobucket.com/albums/...9at94535PM.png
- Mảng a chứa 9 phần tử mang giá trị -1
- Biến countNumber là để đếm số ô đã được đánh (dùng nó để dừng việc đánh khi đủ 9 ô)
- Biến check dùng để kiểm tra nếu X hoặc O thắng thì dừng không cho máy đánh nữa
//Action của mỗi button
http://i1251.photobucket.com/albums/...9at94559PM.png
- Action của button 1 : kiểm tra nếu ô đó là rổng (có giá trị -1) thì mới cho người dùng đánh
- Người chơi đánh X thì ta đổi giá trị -1 thành 1 (remove -1 và insert 1) và gán hình ảnh X vào
- Phát sinh random O (gọi hàm random)
- Gọi hàm kiểm tra thắng thua
- Làm tương tự cho 8 button còn lại.
//Hàm random (máy đánh)
http://i1251.photobucket.com/albums/...9at94753PM.png
-Tương tự case 1 đến case 7
http://i1251.photobucket.com/albums/...9at94807PM.png
- Điều kiện trong hàm while
+Phát sinh số ngẫu nhiên cho tới khi không trùng với ô đã đánh (flag=FALSE)
+Kiểm tra còn ô trống thì mới cho đánh(countNumber<9)
+Nếu X hoặc O thắng thì không đánh nữa(check == TRUE)
- Còn trong switch case thì tương tự như khi đánh X, khác là O thì thay -1 bằng 2
//Hàm kiểm tra thắng thua
Kiểm tra xem X thắng
http://i1251.photobucket.com/albums/...9at95026PM.png
Kiểm tra xem O thắng
http://i1251.photobucket.com/albums/...9at95105PM.png
Kiểm tra hoà
http://i1251.photobucket.com/albums/...9at95119PM.png
//Hàm reset
http://i1251.photobucket.com/albums/...at100128PM.png

File .ipa, mọi người test trên iPhone dùm nha :JFBQ00221070601A:
http://www.mediafire.com/?hp4ec6ke05vc5w3


Múi giờ GMT +7. Hiện tại là 06:43

Powered by: vBulletin Version 3.8.7
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Ad Management by RedTyger