-thiết kế CSDL cho trò chơi sudoku.
-học nukeviet
-thiết kế module admin quản lý cho https://travel.com.vn
Quy luật:
Bài toán:
Giả sử cho ma trận N x N
=> Các phần tử của ma trận được xắp xếp sao cho không trùng với phần tử nào của dòng & cột giao với phần tử đó.
-học nukeviet
-thiết kế module admin quản lý cho https://travel.com.vn
Quy luật:
Bài toán:
Giả sử cho ma trận N x N
=> Các phần tử của ma trận được xắp xếp sao cho không trùng với phần tử nào của dòng & cột giao với phần tử đó.
Quy ước
Phần tử được
đặt trên ma trận N x N.
Phần tử ở vị
trí dòng $i &
cột $j thì ký hiệu: ($i, $j)
Vị trí được
tính bắt đầu tử 0.
[FALSE]: xẩy ra trong trường hợp thêm phần tử
nhưng không hợp lệ theo luật của trò chơi.
[DONE]: xẩy
ra khi các phần tử trong bàn sudoku đã lấp đầy.
-mầu xanh: thuộc về javascript.
Overview:
Toàn bộ
trương trình sử dụng 1 file để chạy (index.php).
Querystring:
Truyền vào
site theo phương thức GET.
do
|
-Nếu
không có tham số do or tham số do=’game’
thì chạy game sudoku.
-Nếu
tham số do=’check_item’ thì kiểm tra phần tử đó có hợp lệ so với ma trận
sudoku đã thiết lập ban đầu không ?
-Nếu
do=’suggest_item’ thì gợi ý phần tử cho player.
|
matrix
|
Chuỗi
mảng ma trận được mã hóa: ma trận khuyết thiếu ban đầu & trong quá trình
chơi game.
|
i
|
Chỉ
định dòng i của phần tử: vị trí phần tử muốn thiết lập or cần gợi
ý.
|
j
|
Chỉ
định cột j của phần tử: vị trí phần tử muốn thiết lập or cần gợi
ý.
|
a
|
Giá
trị của phần tử muốn thiết lập.
|
size
|
Kích
thước sudoku.
|
matrix_origin
|
Ma
trận gốc.
|
Đối tượng (Elements):
Id= matrix_string
|
Hứng
kết quả chuỗi ma trận mới trong quá trính chơi game.
Nếu
thiết lập phần tử thành công thì thêm phần tử đó, ngược lại thì xóa phần tử
đó. Thiết lập chuỗi ma trận mới vào đối tượng này.
Note:
nếu phần tử thiết lập không hợp lệ thì có thêm chuỗi [FALSE].
|
Id=sudoku
|
Bảng
chứa bàn sudoku.
|
Name=auto_check
|
Hộp
kiểm cho phép game có kiểm tra phần tử ngay sau khi player nhập hay không?
|
Name=size
|
Thay
đổi kích thước sudoku.
|
reset
|
Nút
nạp lại thiết lập.
|
Global variables
$size
|
Kích
thước ma trận vuông sudoku.
|
__item
|
Mảng
2 phần tử:
Phần
tử 1: chuỗi xác định vị trí phần tử sẽ gợi ý.ie: 2-1
Phần
tử 2: đối tượng <input> của phần tử.
|
_enabled_valid=false
|
Bật
tắt tính năng kiểm tra ngay.
|
get_col_items($n)
|
Lấy
mảng các phần tử của cột $n. (được tính từ 0)
|
get_row_items($n)
|
Lấy
mảng các phần tử của dòng $n. (được tính từ 0)
|
rand_rows()
|
Hoán
đổi ngẫu nhiên các dòng trong ma trận $grid.
|
generate_item($i,$j)
|
Tính
toán đưa ra phần tử ở vị trị dòng $i, cột $j.
Giải
thích:
-lấy
hợp dòng cột của ($i, $j). (1)
-tìm
các phần tử ở top-right của phần tử ($i,$j). (2)
+nếu
(2) không tìm thấy thì lấy 1 số ngẫu nhiên trong đoạn [1, $size] trừ các phần
tử ở (1).
+còn
lại:
Xóa các phần tử của (2) có trong (1) à
*sau khi xóa nếu có phần tử:
-còn lại hơn 1 phần tử thì lấy
giao với các phần tử của cột tiếp theo. à lấy 1 phần tử ngẫu nhiên trong kết quả đó.
*nếu không có phần tử thì lấy ngẫy
nhiên trong [1, $size] trừ (1).
|
group_top_right_items($i,$j)
|
Lấy
các phần tử ở phía bên phải & ở đỉnh (top-right) tính tử phần tử ở vị trí
thứ dòng $i, cột $j.
Ie:
Trả
về các phần tử trùng nhiều nhất or các phần tử không trùng. Nếu không tìm thấy
phần tử nào thì trả về false.
à Các phần tử
ở top-right của phần tử ($i, $j).
|
get_total_items($i,$j)
|
Trả
về hợp các phần tử trên dòng & cột giao nhau của phần tử được xác định bởi
dòng $i, cột $j.
à Hợp dòng cột
của ($i, $j).
Note:
nếu tồn tại phần tử ở vị trí ($i, $j) thì xóa nó đi.
|
init()
|
Khởi
tạo ma trận sudoku.
|
show_game($opt1=true,$opt2=’miss_items’)
|
Hiển
thị trò chơi $grid. Với ma trận đã khuyết 1 vài phần tử ngẫu nhiên.
Nếu
$opt=true thì hiển thị trò chơi.
$opt2=’miss_items’: Hàm trả về chuỗi các phần tử đã bị khuyết.
‘i-j,…’.
Còn
lại trả về ma trận của game đã bị khuyết. (Note: không làm ảnh hưởng đến kết $grid kết quả)
|
valid_item($i,$j,$a)
|
Kiểm
tra sử hợp lệ của phần tử ở vị trí ($i,$j) có
giá trị $a.
|
suggest_result($opt=true,$id='sudoku')
|
Hiển
thị toàn bộ ma trận sudoku gốc. Nếu $opt=true
thì hiển thị. Thiết lập $id cho sudoku.
Hàm
trả về chuỗi html hiển thị.
|
matrix_string()
|
Mã
hóa ma trận $grid thành chuỗi.
|
_input_item_event(O)
|
Hàm
sự kiện của phần tử khi thay đổi giá trị.
|
disable_all(opt)
|
opt=true/false
(Enabled/disabled) ô nhập phần tử khuyết.
|
suggest_item(p)
|
Gợi ý phần tử, khi chọn phần tử &
click vào nút suggest.
|
focus_item(p)
|
Sự kiện kích hoạt tính năng gợi ý cho
phần tử <input>
Note: lưu vị trí của phần tử vào biến
item.
|
parse_text(html)
|
Lấy kết quả trả về khi gọi site. Là
giá trị của <textarea> đầu tiên.
|
Một số hàm khác: cross_array, get_rand_item, pick_rand_number,
shift,… tham khảo hphp.php.docx
0 nhận xét:
Đăng nhận xét