I Love Python. I Learn Python. I Teach Python. I Am a Python.

2014/07/31

想寫一個猜數字遊戲

想寫一個猜數字遊戲。

'''
猜數字遊戲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
再見,結束遊戲。
>>>
'''


想寫一個畫圖程式

'''
畫圖程式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
'''
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
窗、單、布、文類
手畫、紀錄軌跡座標
選單、動作。

'''
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()
view raw ryTk001.py hosted with ❤ by GitHub


中文程式可以很精簡,又不失可讀性!

'''
布幕龜.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()
view raw 布幕龜.py hosted with ❤ by GitHub




沒有留言:

張貼留言