玩蛇网提供最新Python编程技术信息以及Python资源下载!

python游戏源码实例之建房绿化时间表

python 培训

python来做游戏开发也是不错的选择。下面关于建筑与绿化时间按排的速度计算方法就是用python语言来完成的。

需要一个这样的假设问题:
设想以下场景:盖一个房子,房子需要m秒才能盖好;然后种了棵树,假充树需要n秒才能长好。
盖房子、种树等行为都是连续的操作,手动就可以了,而且中间不能间断哦!而时间的存储一般人是需要存到脑子中,或者记到笔记本上,或者定个闹钟。时间到后再进行相应的处理。

我们应对的解决方案是:
模拟人的行为:需要手动操作作为主线程顺序执行,需要存储时间时开启新的一个线程来保存时间并计时(也就是说两者需要做到异步)。
仅仅存储时间是不够的,还需要将该时间所对应的状态信息保存下来,以供时间到后的下步操作。

需要用到python 时间日期模块python 多线程模块方法

#!/usr/bin/env python  
# -*- coding: utf-8 -*-  
  
  
__revision__ = '0.1'  
__author__ = 'lxd'  

import threading  
import time  
  
class TimeWorks(object):  
    def __init__(self):  
        self.wait_works = {}#等待工作列表,包括工作的所有细节  
        self.wait_times_threads = []#线程列表  
  
    def setTime(self, data, seconds):  
        """将data放入等待工作列表中,并将工作放入线程中等待 
        """  
        def sleep(seconds):  
            time.sleep(seconds)  

#www.iplaypython.com  

        atime = threading.Thread(target = sleep, args = (seconds, ))  
        atime.setDaemon(True)  
        atime.start()  
        self.wait_times_threads.append(atime)  
  
        self.wait_works.update({atime.name:data})  
  
    def checkTimeThread(self):  
        """获得时间已到的工作 
        """  
        for atime in self.wait_times_threads:  
            if not atime.isAlive():  
                self.wait_times_threads.remove(atime)  
                return self.wait_works.pop(atime.name)  
  
if __name__ == '__main__':  
    print 'start'  
    timeWorks = TimeWorks()  
  
    build = {'kind':'build', 'name':'build1', 'pos':(1, 2)}  
    timeWorks.setTime(build, 5)  
  
    farm = {'kind':'farm', 'name':'tom', 'pos':(3, 5)}  
    timeWorks.setTime(farm, 3)  
  
    def build_something(data):  
        print 'build_something', str(data)  
  
    def farm_something(data):  
        print 'farm_something', str(data)  
  
    i = 0  
    while True:  
        print 'do_something', i  
        i += 1  
        time.sleep(1)  
  
        data = timeWorks.checkTimeThread()  
        if data:  
            if data['kind'] == 'build':  
                build_something(data)  
            elif data['kind'] == 'farm':  
                farm_something(data)

玩蛇网原创,转载请注明文章出处和来源网址:http://www.iplaypython.com/code/game/g2508.html



微信公众号搜索"玩蛇网Python之家"加关注,每日最新的Python资讯、图文视频教程可以让你一手全掌握。强烈推荐关注!

微信扫描下图可直接关注

玩蛇网Python新手QQ群,欢迎加入: ① 240764603 玩蛇网Python新手群
文章发布日期:2016-03-29 12:46 玩蛇网 www.iplaypython.com

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
相关文章推荐
别人正在看
特别推荐
去顶部去底部