书架游戏必定打乱
This commit is contained in:
parent
2ae1063f22
commit
3834cf4a8a
@ -48,6 +48,20 @@ func _ready() -> void:
|
|||||||
_measure_width_by_row()
|
_measure_width_by_row()
|
||||||
# shuffle at the end
|
# shuffle at the end
|
||||||
_shuffle_books()
|
_shuffle_books()
|
||||||
|
# # test
|
||||||
|
# _test()
|
||||||
|
|
||||||
|
|
||||||
|
# func _test():
|
||||||
|
# var timer = Timer.new()
|
||||||
|
# timer.autostart = true
|
||||||
|
# timer.wait_time = 0.5
|
||||||
|
# timer.one_shot = false
|
||||||
|
# timer.timeout.connect(func():
|
||||||
|
# print("[test] reload")
|
||||||
|
# get_tree().reload_current_scene()
|
||||||
|
# )
|
||||||
|
# get_tree().root.add_child.call_deferred(timer)
|
||||||
|
|
||||||
|
|
||||||
func _enter_tree() -> void:
|
func _enter_tree() -> void:
|
||||||
@ -92,30 +106,39 @@ func _shuffle_books() -> void:
|
|||||||
rand_from_seed(Time.get_ticks_usec())
|
rand_from_seed(Time.get_ticks_usec())
|
||||||
# 打乱偶数次有可能复原,需要打乱奇数次;为降低难度,仅打乱一次
|
# 打乱偶数次有可能复原,需要打乱奇数次;为降低难度,仅打乱一次
|
||||||
var shuffle_times = 1
|
var shuffle_times = 1
|
||||||
var r_size = current_answer[0].size()
|
var r_size := current_answer[0].size() as int
|
||||||
for _i in range(shuffle_times):
|
for _i in range(shuffle_times):
|
||||||
var col_1 = randi() % r_size
|
var col_1 := randi() % r_size
|
||||||
var col_2 = randi() % r_size
|
var col_2 := _rand_exclusive(col_1, r_size)
|
||||||
selected_book = [0, col_1]
|
selected_book = [0, col_1]
|
||||||
_interchange_book(0, col_2, false)
|
_interchange_book(0, col_2, false)
|
||||||
_relocate_books(0)
|
_relocate_books(0)
|
||||||
r_size = current_answer[1].size()
|
r_size = current_answer[1].size()
|
||||||
for _i in range(shuffle_times):
|
for _i in range(shuffle_times):
|
||||||
var col_1 = randi() % r_size
|
var col_1 := randi() % r_size
|
||||||
var col_2 = randi() % r_size
|
var col_2 := _rand_exclusive(col_1, r_size)
|
||||||
selected_book = [1, col_1]
|
selected_book = [1, col_1]
|
||||||
_interchange_book(1, col_2, false)
|
_interchange_book(1, col_2, false)
|
||||||
_relocate_books(1)
|
_relocate_books(1)
|
||||||
r_size = current_answer[2].size()
|
r_size = current_answer[2].size()
|
||||||
for _i in range(shuffle_times):
|
for _i in range(shuffle_times):
|
||||||
var col_1 = randi() % r_size
|
var col_1 := randi() % r_size
|
||||||
var col_2 = randi() % r_size
|
var col_2 := _rand_exclusive(col_1, r_size)
|
||||||
selected_book = [2, col_1]
|
selected_book = [2, col_1]
|
||||||
_interchange_book(2, col_2, false)
|
_interchange_book(2, col_2, false)
|
||||||
_relocate_books(2)
|
_relocate_books(2)
|
||||||
|
|
||||||
# turn off initilazing after shuffle
|
# turn off initilazing after shuffle
|
||||||
suffling = false
|
suffling = false
|
||||||
|
_check_answer()
|
||||||
|
|
||||||
|
|
||||||
|
func _rand_exclusive(exclude_id: int, size: int) -> int:
|
||||||
|
if size <= 1:
|
||||||
|
return 0
|
||||||
|
var id = randi() % size
|
||||||
|
if id == exclude_id:
|
||||||
|
return _rand_exclusive(exclude_id, size)
|
||||||
|
return id
|
||||||
|
|
||||||
|
|
||||||
var press_mutex := Mutex.new()
|
var press_mutex := Mutex.new()
|
||||||
@ -186,8 +209,7 @@ func _interchange_book(row: int, col: int, relocate := true) -> void:
|
|||||||
# relocate after reset selected_book
|
# relocate after reset selected_book
|
||||||
if relocate:
|
if relocate:
|
||||||
_relocate_books(row)
|
_relocate_books(row)
|
||||||
# check answer
|
# check answer after relocation
|
||||||
if relocate:
|
|
||||||
_check_answer()
|
_check_answer()
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user