1 效果圖:
2 說明:
=====
2.1 熟悉turtle相關函式和程式設計知識。
2.2 熟悉python的相關函式和程式設計知識。
3 圖片:
=====
jpeg格式
3.2 將圖片jpeg格式轉換為gif格式,採用螢幕錄影格式,儲存為gif格式。
4 程式碼:
=====
4.1 第1步:匯入模組
from random import *from turtle import *
4.2 第2步:常量的初始化
#每一個小格的寬度w_box=100#一行和一列總8:8×8=64n_box=8#每一個格子內的數字0~31,有一對,總共64個num_labels = list(range(32)) * 2#64個小格子hide = [True] * 64#狀態字典state = {'mark': None}#背景圖片,注意圖片格式gifgirl=bgpic('/home/xgj/Desktop/ex-good/11.gif')
4.3 第3步:函式定義
#定義畫一個小方格函式def square(x, y): up() goto(x, y) down() #網格線顏色為綠色,背景顏色為黑色 color('green', 'black') begin_fill() #用下劃線“_”代替臨時性i for _ in range(4): forward(w_box) #邊長小格子的寬度 left(90) end_fill()#索引函式def index(x, y): return int((x + w_box*n_box//2) // w_box + ((y + w_box*n_box/2) // w_box) * n_box)#x和y座標計數函式def xy(count): return (count % n_box) * w_box - w_box*n_box//2, (count // n_box) * w_box - w_box*n_box/2#顯示標籤def tap(x, y): spot = index(x, y) mark = state['mark'] if mark is None or mark == spot or num_labels[mark] != num_labels[spot]: state['mark'] = spot else: hide[spot] = False hide[mark] = False state['mark'] = None#繪畫的總函式def draw(): clear() goto(0, 0) #載入背景圖片 shape(girl) for count in range(64): if hide[count]: x, y = xy(count) square(x, y) mark = state['mark'] if mark is not None and hide[mark]: x, y = xy(mark) up() goto(x + 2, y+2) #顯示數字的顏色 color('white') write(num_labels[mark], font=('Arial', 20, 'normal')) update() #計時器,100毫秒 ontimer(draw, 100)
4.4 主函式定義
def main(): #shuffle()是不能直接訪問的,需要匯入 random 模組,然後透過 random 靜態物件呼叫該方法。 #將序列的所有元素隨機排序。 shuffle(num_labels) #遊戲視窗大小設定 setup(w_box*n_box+20, w_box*n_box+20, 500, 100) #畫筆隱藏 hideturtle() #一次性畫出格子 tracer(False) #調出點選螢幕函式 onscreenclick(tap) #調出繪畫函式 draw() #直到關閉視窗右上角的“×”才退出 done()
4.5 第5步:呼叫主函式
if __name__ == "__main__": main()
分享快樂。
最新評論