目錄
一、運動的火柴人,
二、跟隨移動方向奔跑的火柴人
三、自動移動的火柴人
可還記得上期我們研究的會奔跑的機器人嗎?

沒錯,就是他,整個畫面一閃一閃的,非常不好看,
而且,只能單項奔跑,不能雙向奔跑,那這期,我們就一起來更加深入的研究一下吧,
一、運動的火柴人,
1、解決閃屏的問題
import tkinter,time
from tkinter import *
tk = tkinter.Tk()
tk.title("視窗") # 設定視窗名稱
tk.geometry("200x220+200+220")
w = tk.winfo_screenwidth() # 獲取螢屏寬
h = tk.winfo_screenheight() # 獲取螢屏高
cn = Canvas(tk, height=h, width=w, bg="white") # bg="pink"
list,a=[],1
for i in range(1,10):
list.append(PhotoImage(file="robot_" + str(i) + ".PNG"))#圖片串列
def update_test(e):
tk.update()
global a#設定全域變數
for i in range(1,10):
if a==9:
a=1
cn.create_image(100,100, image=list[0])
else:
cn.create_image(100,100, image=list[a])
a+=1
break
cn.pack()
tk.bind("<Configure>", update_test)
tk.mainloop()
這樣,我們的火柴人就不會閃爍了,
二、跟隨移動方向奔跑的火柴人
我們上面已經實作了單方向奔跑的火柴人,接下來我們來研究一下雙向奔跑的火柴人,

是不是有點內味了,那我們來看源代碼:
import tkinter,time
from tkinter import *
from PIL import ImageTk, Image
?
tk = tkinter.Tk()
tk.title("視窗") # 設定視窗名稱
tk.geometry("200x220+600+620")
# tk.overrideredirect(True)
w = tk.winfo_screenwidth() # 獲取螢屏寬
h = tk.winfo_screenheight() # 獲取螢屏高
cn = Canvas(tk, height=h, width=w, bg="white") # bg="pink"
list,list1,a,b=[],[],1,1
for i in range(1,8):
image1 = Image.open("../test/123/123_" + str(i) + ".PNG") # 打開圖片
image = image1.resize((200, 220)) # 設定圖片大小
photo = ImageTk.PhotoImage(image) # 引入圖片
list.append(photo)
image1 = Image.open("../test/124/123_" + str(i) + ".PNG") # 打開圖片
image = image1.resize((200, 220)) # 設定圖片大小
photo = ImageTk.PhotoImage(image) # 引入圖片
list1.append(photo)
def image(list):
global a
for i in range(1, 8):
if a == 7:
a = 1
cn.create_image(100, 100, image=list[0])
a += 1
else:
cn.create_image(100, 100, image=list[a])
a += 1
break
def xy(x,y):
return x-10,y-10
?
def update_test(e):
time.sleep(0.1)
tk.update()
x = tk.winfo_x()
y=tk.winfo_y()
tk.geometry("200x220+%s+%s"%(x,y))
global b
if x<b:image(list)
elif x==b:pass
else:image(list1)
b=x
cn.pack()
tk.bind("<Configure>", update_test)
tk.mainloop()
原理也是一樣的哦,主要是增加了另外一個方向奔跑的小人,
三、自動移動的火柴人
在上面已經掌握了移動的要訣,那下面讓他自己移動起來,
主要代碼段:
tk.geometry("200x220+%s+%s"%(x,y))
向左移動:
tk.geometry("200x220+%s+%s"%(x-10,y))
向右移動:
tk.geometry("200x220+%s+%s"%(x+10,y))
向上移動:
tk.geometry("200x220+%s+%s"%(x,y-10))
向下移動?:
tk.geometry("200x220+%s+%s"%(x,y+10))
推薦?:
王者榮耀最低戰力查詢-王者戰區修改
過分了,別人用來做桌面應用開發,這家伙卻用來撩妹(4)--運動的火柴人
?我裂開了,教給他如何搭建和使用代理服務器,他居然用來做這么不正經的事(爬蟲,代理ip)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/294759.html
標籤:其他
下一篇:cgb2106-day18
