Thursday, November 24, 2016

Selection sort on kivy '2'

จากคราวที่แล้วที่ได้ทำ selectionsort บน kivy ซึ่งรูปแบบที่ได้ยังคงเป็นแบบ text mode ดังภาพ

 

จึงได้ทำการแก้ไข code ใหม่ เพื่อที่จะให้แสดงออกมาเป็นรูปแบบของ graphic ซึ่งก็ได้นำ api ของ kivy ที่ชื่อ clock มาใช้


ซึ่งจาก code ที่ได้ทำการแก้ใหม่ ก็ได้มีการเปลี่ยนจากการใช้ while มาเป็น if เพื่อป้องกันการเกิด infinity loop และได้มีการเปลี่ยนตัวแปรเป็น m , n จาก x , y ตามลำดับ เนื่องจากเกิดปัญหาที่ว่าถูกอ่านค่าเป็น int และไม่สามารถนำไปใช้ได้ จึงได้ลองทำการเปลี่ยนชื่อตัวแปร ซึ่งก็สามารถทำงานได้ตามปกติ


Method draw และ countM : ซึ่ง method draw() คือการวาดปุ่มที่มี array ภายในเพื่อแสดงออกมาเป็น graphic สำหรับการทำ selectionsort โดยที่เราจะตั้งเงื่อนไขว่าถ้า index ของ array ตัวนั้นเท่ากับตัวที่ถูก selected(ตัวที่มีค่าน้อยที่สุด) หรือตัวที่ทำการเลือก จะให้มีสีแดง ส่วน index ตัวอื่นจะไม่มีสี เพื่อแสดงว่า index ตัวไหนที่ทำการสลับที่กัน ส่วน method countM คือการอัพเดตค่า m ที่ใช้ในการวนตำแหน่งของข้อมูลจนครบ






หน้าตา GUI : ซึ่งเมื่อรันโปรแกรมขึ้นมาก็จะมี textbox ให้ใส่ข้อมูลที่ต้องการ


 เมื่อทำการกดปุ่ม 'SELECTIONSORT' ก็จะสร้างชุด array ขึ้นมา ซึ่งจากรูปเป็นการสลับ '0' กับ '5' ซึ่งจะเป้นสีแดงตามที่ได้กำหนดไว้


และเมื่อทำการกดปุ่ม 'SELECTIONSORT' ก็จะเป็นการเช๊ค index ตำแหน่งถัดไป กับตัวที่น้อยที่สุด ซึ่งจากภาพคือการสลับจาก '8' ไปที่ตำแหน่งของ '0' ซึ่งเมื่อกดปุ่ม 'SELECTIONSORT' ก็จะเป็นการ sort ไปทีละครั้ง เพื่อง่ายต่อการสังเกตุว่า index ตัวไหนสลับกัน




No comments:

Post a Comment