宋雅娟
(蘇州職業(yè)大學 計算機工程學院,蘇州 215104)
隨著人工智能時代的來臨, Python 語言作為人工智能時代最合適的語言,越來越受到政府的重視[1]。Python 語言是一門發(fā)展了近 30 年的編程語言,是目前美國大學最受歡迎的程序設計語言。Python 語言實際教學內(nèi)容是分支、循環(huán)、函數(shù)等基本的程序邏輯關系及功能強大的函數(shù)庫應用,它是目前最接近自然語言的通用編程語言[2]。為了助力初學者快速方便地學習運用Turtle庫及Python基本語法知識完成圖形繪制程序,設計并實現(xiàn)了一個應用軟件,借鑒Windows畫筆程序的繪圖界面,用戶可在界面上用鼠標繪圖,軟件會自動生成相應的Turtle繪圖程序。這樣可以一邊設計一些簡單圖形,一邊學習Python基本語法知識,熟悉Turtle庫函數(shù)的使用方法,在此基礎上,還可以激發(fā)用戶深入學習Python語言的興趣,最終掌握Python語言。
Turtle庫是Python青少年編程中最重要的標準庫之一,它由Tkinter庫開發(fā),借助于Turtle庫,編寫一些好玩又有趣的程序和小游戲,可以提高孩子們的編程興趣,提高編程技能。Turtle庫提供了很多繪圖函數(shù),表1中列出了軟件中使用到的Turtle繪圖函數(shù)。通過在軟件中繪制不同圖形,觀察自動生成的Python代碼,可以掌握Turtle函數(shù)的作用及參數(shù)使用方法。
表1 軟件中用到的Turtle函數(shù)
借助Java軟件的圖形界面開發(fā)技術,結合Turtle庫中的相關繪圖函數(shù)而設計。系統(tǒng)架構如圖1所示。用戶可以在圖形工具欄中選擇基本圖形按鈕,使用顏色工具欄選擇線條顏色、線條工具欄選擇線條粗細,在繪制窗口上拖動鼠標進行圖形的設計,軟件會同時在Python代碼窗口生成相應的Python代碼。可以通過文件菜單保存圖形及相應的代碼、加載保存的圖形及代碼,通過幫助文檔查閱Turtle庫的函數(shù)的使用說明。
圖1 系統(tǒng)總體架構圖
軟件的運行主界面如圖2所示。主界面使用Java中的面板進行布局。最上面為菜單欄,由文件菜單和幫助菜單組成。上側工具欄由基本圖形選擇面板與線條選擇面板兩個部分組成,一個提供繪圖基本工具,一個提供線條粗細選擇。最下面的為調(diào)色板面板,提供線條顏色及填充顏色選擇。最右面的為代碼面板,存放自動生成的完整Python代碼。圖2為軟件主界面,繪圖面板已經(jīng)使用鼠標繪制了兩個三角形,
圖2 軟件主界面
其中一個進行了顏色填充。右面為生成的Python代碼。生成的代碼在Python環(huán)境中可直接運行,結果如圖3所示。對比圖2與圖3,可看到在界面上繪制的圖形與在Python環(huán)境中運行生成的代碼所得圖形完成一致。這樣就完成了在軟件界面上所見即所得的學習方式。用戶可以在界面上選擇圖形進行繪制,之后根據(jù)生成的代碼進行Python圖形庫Turtle中函數(shù)的學習,圖形發(fā)生變化,函數(shù)的參數(shù)隨之會發(fā)生變化。從而用戶可以獲得對Turtle庫的直觀學習體驗,從而激發(fā)學習興趣。
圖3 生成代碼的運行效果
在繪圖工具欄點選不同按鈕可以使用鼠標在界面上繪制不同的圖形,如圖4所示。這是分別選取了直線、三角形、圓后的運行結果,對照生成的Python代碼即可了解Python中不同圖形的繪制函數(shù)及其參數(shù)、坐標情況。繪制圖形時,如果不特別選擇,則自動選擇最細的線條進行各種圖形的繪制。線條選擇面板只提供了4種,可供學生了解線條的設置方法,之后便可以根據(jù)此規(guī)律自行修改代碼以使用其他尺寸的線條,更有助于學生自行設計自己的線條設置程序。
圖4 使用繪圖工具欄繪制不同圖形
圖5給出了線條選擇面板及選擇不同粗細線條在畫圖板上畫出的兩個矩形,對照右側的生成代碼即可掌握到在Python的Turtle庫中設置線條粗細的函數(shù)是Turtle.pensize,函數(shù)參數(shù)是以數(shù)值給出的線條精細值。
圖5 選擇不同線條畫出的矩形
調(diào)色板面板是以不同顏色塊為圖形的按鈕集合,如果顏料桶按鈕被按下,則點擊后的顏色將用于設置填充色,否則用于線條顏色。顏色以按鈕方式展示常用的顏色,沒有提供自定義顏色是為了讓學生了解Turtle庫的設置顏色方法后自行修改代碼來完成其他顏色的設計。圖6為使用調(diào)色板繪制的彩色填充圖形。從生成的代碼中能看到設置填充色的函數(shù)使用,以及begin_fill()與end_fill()函數(shù)的應用。
圖6 使用調(diào)色板填充的藍色矩形
代碼面板有一個JTextArea控件來存放生成的代碼。用戶可在此部分直接拷貝生成的代碼到Python環(huán)境中運行,觀察運行結果,并在Python環(huán)境中修改代碼,加深對程序的理解。圖6代碼在Python環(huán)境中的運行結果如圖7所示。
圖7 生成代碼在Python環(huán)境中運行的結果
程序應用面向?qū)ο蟮脑韥韺崿F(xiàn),使用不同的類來表示不同的圖形。類中使用成員變量來保存圖形的線條顏色、填充顏色、坐標、大小等信息。在鼠標事件中響應鼠標運作,運用Java中的繪圖函數(shù)在屏幕上進行圖形的繪制,在繪制結束松開鼠標時,生成圖形對應類的對象,并提取線條粗細、顏色,起始位置等信息存放于該對象中,設置完成后將該對象保存到所有圖形對象列表中。之后調(diào)用generateCode方法生成程序開頭代碼,調(diào)用各類重寫后的getCode方法生成每個圖形的對應Python代碼,再生成程序結尾代碼。所有代碼最后將顯示在代碼窗口中。
Python語言具有豐富的函數(shù)庫,為了促進學生更好、更直觀地學習Turtle庫中的函數(shù)以及Python的基本知識,設計實現(xiàn)了一個所見即所得的圖形用戶界面。學生可以在界面上選擇不同線條粗細、不同顏色、不同圖形進行基本圖形和復雜圖形的繪制,在繪制的同時,軟件會通過程序自動生成相應的Python代碼。使用該軟件,學生可以快速了解Turtle庫中的函數(shù)以及具體用法,并掌握繪圖程序整體架構、Turtle的坐標體系。生成的代碼可以直接放到Python中運行,得到跟軟件界面繪制圖形一樣的效果。在此基礎上,學生可以擴展程序、使用Python實現(xiàn)更復雜、更豐富的圖形和動畫程序。軟件目前只實現(xiàn)了基本圖形繪制、顏色填充,為了讓軟件更適合應用于復雜圖形的設計,可以對程序進行擴充,增加橡皮、圖形移動、復制、動畫設計的功能。