但是電子雞並不是單純的程式碼,而是有自己生命的程式(就像初音不是軟體一樣),有自己獨立的生命週期,這時候就不能用一般的程式編寫方式,而是要導入多執行緒(Thread)--(http://zh.wikipedia.org/zh-tw/%E7%BA%BF%E7%A8%8B) 根據WIKI的解釋,Thread就是電腦執行的最小單位,一個程式通常會使用一個執行緒。多執行緒的功用就是讓程式編成之後,能夠同時執行多比獨立的程式。
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
import datetime | |
import time | |
from threading import Thread | |
##導入thread物件 | |
class monocell(Thread): | |
##要將物件轉成多執行緒物件的方式就是在創立物件時繼承Thread | |
lifeCost = 1 | |
##每單位生命消耗單位 | |
def __init__(self,name,life): | |
##當物件實體化時自動執行的部分name,life是初始化時可以輸入名字和血量 | |
Thread.__init__(self) | |
##繼承Thread物件後,初始化時必須載入父物件的初始程式 | |
self.birthTime = datetime.datetime.now() | |
##用datatime這個物件來設定出生的時間 | |
self.name = name | |
self.life = life | |
def run(self): | |
##run()方法對應的是start()方法,當多執行緒物件被start()時,會自動執行run()方法裡的程式 | |
print self.name, "is borned, and birth on", self.birthTime | |
##列印出生時間 | |
heart(self.name, self.life, self.lifeCost) | |
##執行心臟方法,參數是物件的名字、血量跟消耗量 | |
def heart(name,life,lifecost): | |
while True: | |
if life <= 0: | |
##當血量小於等於零時觀地執行緒 | |
print name,"is died" | |
thread.exit() | |
print name, "remain", life,"HP" | |
time.sleep(1) | |
每次執行迴圈時休息1秒 | |
life -= lifecost | |
血量隨時間減少 | |
cellMicky = monocell("micky",10) | |
cellMini = monocell("mini",20) | |
cellLucky = monocell("Lucky",15) | |
##看我一次建立三個單細胞生物,每隻都有不同的名字和血量 | |
cellMicky.start() | |
cellMini.start() | |
cellLucky.start() | |
##三個一起跑,目前生物之間沒有互動行為 | |
''' | |
micky is borned, and birth on 2014-07-11 23:35:39.284000 | |
micky remain 10 HP | |
mini is borned, and birth on 2014-07-11 23:35:39.284000 | |
mini remain 20 HP | |
Lucky is borned, and birth on | |
2014-07-11 23:35:39.284000 | |
Lucky remain 15 HP | |
mini micky remain remain 919 HP HP | |
Lucky remain 14 HP | |
minimicky remainremain 18 HP8 HP | |
Lucky remain 13 HP | |
minimicky remainremain 7 17 HPHP | |
Lucky remain 12 HP | |
minimicky remainremain 16 HP | |
6 HP | |
Lucky remain 11 HP | |
minimicky remain remain 15 HP | |
5 HP | |
Lucky remain 10 HP | |
mickymini remainremain 144 HP | |
HP | |
Lucky remain 9 HP | |
mickymini remainremain 133 HP | |
HP | |
Lucky remain 8 HP | |
minimicky remainremain 212 HP | |
HP | |
Lucky remain 7 HP | |
mickymini remainremain 1 HP11 HP | |
Lucky remain 6 HP | |
mickymini remainis died 10 | |
HP | |
Lucky remain 5 HP | |
mini remain 9 HP | |
Lucky remain 4 HP | |
mini remain 8 HP | |
Lucky remain 3 HP | |
mini remain 7 HP | |
Lucky remain 2 HP | |
mini remain 6 HP | |
Lucky remain 1 HP | |
mini remain 5 HP | |
Lucky is died | |
mini remain 4 HP | |
mini remain 3 HP | |
mini remain 2 HP | |
mini remain 1 HP | |
mini is died | |
''' |
感想:真的好宅喔QQ
本文主要參考資源:http://www.tutorialspoint.com/python/python_multithreading.htm
圖片來源:http://www.niusnews.com/index.php/main/view/158
好有喜感哦...
回覆刪除好玩吧! 最近認真想重啟專案!
刪除