งานของคุณคือกำหนดแผนที่เป็นอินพุทซูมออกหรือซูมเข้าขึ้นอยู่กับสเกล โปรดทราบว่าสเกลที่กำหนดคือสเกลที่จะซูมออกดังนั้นสเกลระหว่าง 0 ถึง 1 จะซูมเข้าจริง
ตัวอย่างเช่นให้แผนที่ต่อไปนี้ (ทำไม่ดี):
..____....
../OOO\...
..\OO/\...
..........
และสเกลแฟกเตอร์ของ 2 คุณควรแยกมันออกเป็นส่วน 2x2 ก่อน:
.. | __ | __ | .. | ..
.. | /O | OO | \. | ..
----------------------
.. | \O | O/ | \. | ..
.. | .. | .. | .. | ..
และในแต่ละส่วนค้นหาตัวละครที่พบบ่อยที่สุด:
.__..
.....
โปรดทราบว่ามีส่วนที่ไม่ชัดเจน:
__
OO
ฉันเลือกที่จะใช้_
สำหรับส่วนนี้ แต่การใช้O
จะได้รับการยอมรับอย่างสมบูรณ์เช่นกัน
ตัวอย่างเช่นหากคุณได้รับอัตราส่วนจาก 4 คุณจะแบ่งมันเป็นส่วน 4x4 เช่น:
..__ | __.. | ..
../O | OO\. | ..
..\O | O/\. | ..
.... | .... | ..
อย่างที่คุณสามารถบอกได้ว่าแผนที่นั้นไม่พอดีกับส่วน 4x4 แต่ก็โอเคเพราะเราสามารถลดขนาดของส่วนที่ด้านข้างได้
นอกจากนี้เมื่อใดก็ตามที่เราจำเป็นต้องตัดแผนที่ของเราเราจะตัดที่ด้านล่างหรือด้านขวา
แผนที่ผลลัพธ์จะเป็นดังนี้:
...
แผนที่น่าสนใจอะไร!
สำหรับสเกลแฟคเตอร์ที่ต่ำกว่า 1 เช่น 0.5 กระบวนการนั้นง่ายกว่าเมื่อเราซูมเข้ามาแทน ใช้แผนที่นี้:
./O\.
.\O/.
ซูมด้วยระดับ 0.5:
..//OO\\..
..//OO\\..
..\\OO//..
..\\OO//..
โปรดทราบว่าเมื่อใดก็ตามที่การซูมของคุณน้อยกว่าต่อไปนี้จะเป็นจริง:1
1/(zoom factor) % 2 == 0
เมื่อมันอยู่เหนือ1
การรับประกันเดียวที่คุณมีคือมันจะเป็นจำนวนเต็ม เมื่อมันเป็น1
แผนที่ควรจะอยู่เหมือนเดิม
ตัวอย่าง:
4
/OO\
|OO|
|OO|
\OO/
O
0.25
ABCD
AAAABBBBCCCCDDDD
AAAABBBBCCCCDDDD
AAAABBBBCCCCDDDD
AAAABBBBCCCCDDDD
1
My zoom
should
not change
My zoom
should
not change
คุณอาจใช้แผนที่เป็นอาร์เรย์ที่ขึ้นบรรทัดใหม่
.
มากกว่าO
นั้น เราตัดทางด้านขวาและด้านล่าง