This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
''' | |
猜數字遊戲004.py | |
作者:呂仁園,2014/07/31 | |
''' | |
#想寫一個猜數字遊戲。 | |
#首先,電腦先製造出1個神奇數(就是答案啦)。 | |
#叫玩家隨便猜1個幸運數。 | |
#檢查猜中與否。 | |
#提示幸運數太高或太低。 | |
#這個過程一直持續下去,直到玩家猜中神奇數。 | |
#紀錄猜測的次數。 | |
#道別,結束遊戲。 | |
#首先,電腦先製造出1個神奇數(就是答案啦)。 | |
import random | |
def 電腦先製造出1個神奇數(): | |
x= 40 # 藏個答案在此,噓、、、不要讓玩家知道! | |
x= random.randint(0,100) # 利用 random 模組,產生隨機數。 | |
return x | |
神奇數= 電腦先製造出1個神奇數() | |
def 玩家隨便猜1個幸運數(): | |
x= input('玩家隨便猜1個幸運數:') | |
y= int(x) | |
return y | |
猜測的次數=0 | |
while True: | |
#叫玩家隨便猜1個幸運數。 | |
幸運數= 玩家隨便猜1個幸運數() | |
猜測的次數+=1 | |
#檢查猜中與否。 | |
#提示幸運數太高或太低。 | |
if 幸運數==神奇數: | |
print('猜中') | |
break # 在此中斷 while loop,因為玩家已經猜中。 | |
elif 幸運數<神奇數: | |
print('太低') | |
elif 幸運數>神奇數: | |
print('太高') | |
else: | |
pass | |
#這個過程一直持續下去,直到玩家猜中神奇數。 | |
#紀錄猜測的次數。 | |
print('猜測的次數= ', 猜測的次數) | |
#道別,結束遊戲。 | |
print('再見,結束遊戲。') | |
#一次執行結果 | |
''' | |
>>> | |
玩家隨便猜1個幸運數:20 | |
太低 | |
玩家隨便猜1個幸運數:30 | |
太低 | |
玩家隨便猜1個幸運數:50 | |
太高 | |
玩家隨便猜1個幸運數:40 | |
猜中 | |
猜測的次數= 4 | |
再見,結束遊戲。 | |
>>> | |
''' |
想寫一個畫圖程式
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
''' | |
畫圖程式001.py | |
作者:呂仁園,2014/07/31 | |
''' | |
# 想寫一個畫圖程式 | |
# 電腦開一個畫布。 | |
# 玩家用滑鼠在畫布上移動。 | |
# 電腦能追蹤到玩家滑鼠的座標 x,y。 | |
# 電腦在 x,y 處畫小圓。 | |
# 玩家能把畫布存下來。 | |
# 玩家能清除畫布,重新作畫。 | |
# 電腦開一個畫布。 | |
import tkinter | |
畫布= tkinter.Canvas() | |
畫布.pack() | |
# 玩家用滑鼠在畫布上移動。 | |
# 電腦能追蹤到玩家滑鼠的座標 x,y。 | |
def 滑鼠左鈕動作(e): | |
x,y= e.x, e.y | |
print(x,y) | |
電腦在xy處畫小圓(x,y) | |
pass | |
畫布.bind('<B1-Motion>',滑鼠左鈕動作) | |
# 電腦在 x,y 處畫小圓。並記錄下小圓座標(x,y) | |
小圓座標= [] | |
def 電腦在xy處畫小圓(x,y): | |
畫布.create_oval(x-2,y-2,x+2,y+2) | |
global 小圓座標 | |
小圓座標+=[(x,y)] | |
# 玩家能把畫作存下來。也存下小圓座標。 | |
def 滑鼠中鈕動作(e): | |
玩家能把畫布存下來() | |
pass | |
畫布.bind('<Button-2>',滑鼠中鈕動作) | |
def 玩家能把畫布存下來(): | |
檔名= 'my畫布.ps' | |
畫布.postscript(file= 檔名) | |
print('玩家能把畫布存下來:', 檔名) | |
檔名= 'my畫布.txt' | |
f= open(檔名,'w') | |
print(小圓座標,file=f) | |
f.close() | |
print('玩家能把座標存下來:', 檔名) | |
# 玩家能清除畫布,重新作畫。 | |
def 滑鼠右鈕動作(e): | |
玩家能清除畫布() | |
global 小圓座標 | |
小圓座標= [] | |
pass | |
畫布.bind('<Button-3>',滑鼠右鈕動作) | |
def 玩家能清除畫布(): | |
畫布.delete('all') | |
# | |
# 程式開始運作,進入主迴圈 | |
# | |
畫布.mainloop() |
ry美術應用.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
''' | |
ry美術應用.py | |
ryBonusArtApp2-001.py | |
呂仁園, 2014/07/10, 07/31 | |
''' | |
# 改自 BonusArtApp2.py | |
import tkinter | |
import random | |
# | |
# 備妥一些美圖 | |
# | |
圖檔列表= [ | |
"treescape.gif", # 此圖當作 背景圖 | |
"red.gif", # 以下當作 鈕圖 | |
"yellow.gif", | |
"green.gif", | |
"blue.gif", | |
"black.gif", | |
"white.gif", | |
"plus.gif", | |
"minus.gif", | |
"ayesha.gif", | |
"campbell.gif", | |
"hana.gif", | |
"jeff.gif", | |
"jose.gif", | |
"krysta.gif", | |
"leela.gif", | |
"tree.gif" | |
] | |
# | |
# 中文別名,用到的 tkinter 物類。 | |
# | |
窗類= tkinter.Tk | |
圖類= tkinter.PhotoImage | |
框類= tkinter.Frame | |
布類= tkinter.Canvas | |
鈕類= tkinter.Button | |
選單類= tkinter.Menu | |
# | |
# 窗 | |
# | |
窗= 窗類() | |
窗.title("美術應用") | |
# | |
# 圖 | |
# | |
圖列表= [] | |
for 圖檔 in 圖檔列表: | |
圖= 圖類(file= 圖檔) | |
圖列表 += [圖] | |
背景圖= 圖列表.pop(0) | |
鈕圖= 圖列表[0] | |
# | |
# 框 | |
# | |
框00= 框類(窗) | |
框01= 框類(窗) | |
# | |
# 布 | |
# | |
布= 布類(框00) | |
布['width']= 600 | |
布['height']= 400 | |
布.create_image(0,0, image= 背景圖, anchor='nw') | |
def 畫(e): | |
global 鈕圖 | |
布.create_image(e.x, e.y, image= 鈕圖) | |
def 存(e= None): | |
布.postscript(file='ry美術應用.ps') | |
def 清(e= None): | |
global 背景圖 | |
布.delete('all') | |
布.create_image(0,0, image= 背景圖, anchor='nw') | |
布.bind("<Button-1>", 畫) | |
布.bind("<Button-2>", 存) | |
布.bind("<Button-3>", 清) | |
布.bind("<B1-Motion>", 畫) | |
# | |
# 鈕 | |
# | |
鈕列表= [] | |
for 圖 in 圖列表: | |
鈕= 鈕類(框01) | |
鈕['image']= 圖 | |
def 選鈕圖(f= 圖): | |
global 鈕圖 | |
鈕圖= f | |
鈕['command']= 選鈕圖 | |
鈕列表 += [鈕] | |
# | |
# 安置 | |
# | |
for 框 in [框00, 框01]: | |
框.pack() | |
布.pack() | |
N= len(鈕列表)//2 | |
n=0 | |
for 鈕 in 鈕列表: | |
i,j= n//N, n%N; n+=1 | |
鈕.grid(row=i, column=j) | |
主選單= 選單類(窗) | |
主選單.add_command(label= "清", command= 清) | |
主選單.add_command(label= "存", command= 存) | |
窗['menu']= 主選單 | |
# | |
# 主迴圈 | |
# | |
窗.mainloop() |
ryTk001.py
窗、單、布、文類
手畫、紀錄軌跡座標
選單、動作。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
''' | |
ryTk001.py | |
窗、單、布、文類 | |
手畫、紀錄軌跡座標 | |
選單、動作。 | |
呂仁園,2014/08/01 | |
''' | |
import random | |
import time | |
import math | |
import tkinter | |
窗類= tkinter.Tk | |
單類= tkinter.Menu | |
布類= tkinter.Canvas | |
文類= tkinter.Text | |
# | |
# 開 窗。 | |
# | |
窗= 窗類() | |
窗.title('窗、單、布、文類,手畫、紀錄軌跡座標。') | |
# | |
# 在 窗 中, | |
# 造 2個 文,2個 布。 | |
# | |
文0= 文類(窗, bg='yellow') | |
文1= 文類(窗, bg='cyan') | |
布0= 布類(窗, bg='pink') | |
布1= 布類(窗, bg='orange') | |
# | |
# 把它們放好,2 x 2 方陣。 | |
# | |
n=0 | |
for x in [文0, 文1, 布0, 布1]: | |
i,j=n//2, n%2; n+=1 | |
x.grid(row=i, column=j) | |
#print(x['width'],x['height']) | |
# | |
# 在 窗 中, | |
# 造 (選)單 | |
# | |
單= 單類(窗) | |
# | |
# 定義選單要連結的(動)作。 | |
# | |
def 作00(): | |
''' | |
把一段文字插入 文0 | |
''' | |
print('作00...') | |
x=''' | |
觀自在菩薩, | |
行深般若波羅蜜多時, | |
召見五蘊皆空。 | |
''' | |
文0.insert(1.0, x) | |
def 作01(): | |
''' | |
把 文0 中的文字 移到 文1 | |
''' | |
print('作01...') | |
x= 文0.get(1.0,'end') | |
文0.delete(1.0,'end') | |
文1.insert('end', x) | |
def 作02(): | |
''' | |
在 布0 亂畫一些線 | |
''' | |
print('作02...') | |
X=[] | |
for i in range(100): | |
x,y= random.randint(0,100), random.randint(0,100) | |
X+=[x,y] | |
布0.create_line(*X) | |
def 作03(): | |
''' | |
在 布1 畫 弦波 sin 圖 | |
''' | |
print('作03...') | |
色= random.choice(['red','green','blue']) | |
for i in range(100): | |
x,y= i, math.sin(i/100*2*math.pi) *100+100 | |
布1.create_oval(x,y,x+10, y+10, fill=色) | |
布1.update() | |
time.sleep(0.1) | |
def 作04(): | |
''' | |
清除 布、文 | |
''' | |
print('作04...') | |
布0.delete('all') | |
布1.delete('all') | |
文0.delete(1.0,'end') | |
文1.delete(1.0,'end') | |
def 作05(): | |
''' | |
啟動 布0 手畫功能,紀錄座標於 文0 | |
''' | |
print('作05...') | |
布= 布0 | |
文= 文0 | |
def 畫(e): | |
x,y= e.x, e.y | |
布.create_oval(x, y, x+10, y+10) | |
文.insert('end','(%d,%d),'%(x,y)) | |
布.bind("<Button-1>", 畫) | |
布.bind("<B1-Motion>", 畫) | |
def 作06(): | |
''' | |
布0 的圖 移到 布1 | |
''' | |
print('作06...') | |
文1.delete(1.0,'end') | |
作01() | |
布1.delete('all') | |
X= 布0.find_all() | |
#print(X) | |
for x in X: | |
y= 布0.bbox(x) | |
#print(y) | |
布1.create_oval(*y, fill='red') | |
布0.delete('all') | |
# | |
# 一口氣放10個選項在選單中,順便連結其動作, | |
# 尚未定義的動作,做個假動作。 | |
# | |
for i in range(10): | |
a= '作%02d'%(i) | |
try: eval(a) | |
except: | |
b= 'def %s(): print("%s"); pass'%(a,a) | |
exec(b) | |
單.add_command(label= a, command= eval(a)) | |
# | |
# 把選單在窗內安置妥當。 | |
# | |
窗['menu']= 單 | |
# | |
# 視窗主迴圈 | |
# | |
窗.mainloop() | |
中文程式可以很精簡,又不失可讀性!
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
''' | |
布幕龜.py | |
呂仁園,2014/08/01 | |
''' | |
from turtle_tc import TK, 龜幕類, 原龜類, 範圍, 隨機數 | |
def 隨機色(): | |
r,g,b= [int(隨機數()*256) for i in 範圍(3)] | |
return '#%02x%02x%02x'%(r,g,b) | |
窗= TK.Tk(); 窗.title('布、幕、龜。') | |
N= 4; M= int(N**.5);n= 0 | |
布群= [TK.Canvas(窗) for 數 in 範圍(N)] | |
幕群= [龜幕類(布) for 布 in 布群] | |
龜群= [原龜類(幕) for 幕 in 幕群] | |
for 布 in 布群: 布.grid(row= n//M, column= n%M); n += 1 | |
for 幕 in 幕群: 幕.背景色(隨機色()) | |
for 龜 in 龜群: 龜.形狀("turtle"); 龜.筆寬(3); 龜.速度(0) | |
for 數 in 範圍(N*10): | |
for 龜 in 龜群: 龜.顏色(隨機色()); 龜.前進(100); 龜.左轉(100) | |
窗.mainloop() |
沒有留言:
張貼留言