亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? simdata.py

?? Air Traffic Controller這個游戲旨于將你放置到飛機交通控制器的位置上。指導(dǎo)飛機飛到它們正確的目的地。這是一個后勤學的游戲且要提前思考
?? PY
字號:
# $Id: simdata.py,v 1.12 2002/02/18 13:04:17 marijn Exp $# An air traffic simulation game. This is the simulation server.# Copyright (C) 2000,1,2  Marijn Vriens <marijn@sanity.dhs.org>## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USAimport randomimport mathimport timeimport UserDictimport CORBA, SimulationServer, SimulationServer__POAclass SimData(UserDict.UserDict):    _idmax = pow(2, 30)    def __init__(self):        UserDict.UserDict.__init__(self)        self.dataDeleted = {}    def add(self, value):        value.id = self._genId()        self.data[value.id] = value    def delete(self, key):        value = self.data[key]        value.markAsDeleted()        self.dataDeleted[key] = value        del self.data[key]    def genIdlObjsEntryList(self, lastEntryListTime):        r = []        for i in self.data.values():            if i.changedAfter(lastEntryListTime):                r.append(i.genIdlReduced())        return r    def genIdlObjsLeaveList(self, lastLeaveListTime):        r = []        for i in self.dataDeleted.values():            if i.deletedAfter(lastLeaveListTime):                r.append(i.genIdlReduced())        return r    def reapDeleted(self, LastClientGotListsTime):        l = []        for k in self.dataDeleted.keys():            if self.dataDeleted[k].deletedBefore(LastClientGotListsTime):                l.append(k)        for i in l:            del(self.dataDeleted[i])    def _genId(self):        k = random.randint(0, self._idmax)        while(self.data.has_key(k)):            k = random.randint(0, self._idmax)        return k    def __setitem__(self, key, value):        raise "NOT_SUPPORTED"       class Entity:    def __init__(self):        self.id = None        self.pos = _Position        self._timeCreated = time.time()        self._timeChange  = time.time()        self._timeDeleted = -1    def createdAfter(self, t):        if t <= self._timeCreated: return self        else: return None    def markAsChanged(self):        self._timeCange = time.time()    def changedAfter(self, t):        if t <= self._timeChange:            return self        else: return None    def markAsDeleted(self):        self._timeDeleted = time.time()    def deletedAfter(self, t):        if self._timeDeleted == -1: raise "ObjectNotDeleted"        if t <= self._timeDeleted: return self        else: return None    def deletedBefore(self, t):        if self._timeDeleted == -1: raise "ObjectNotDeleted"        if t > self._timeDeleted: return self        else: return None            def update(self):        raise "AbstractMethod", "Should be re-implented in sub-class"    def genIdlFull(self):        raise "AbstractMethod", "Should be re-implented in sub-class"    def genIdlReduced(self):        objTypeNameList = {            Plane: 'plane'        }        r = SimulationServer.SimObjType()        r.objTypeName = objTypeNameList[self.__class__]        r.id = self.id        r.pos = self.pos.genIdlReduced()        return rclass Plane(Entity):    def __init__(self): #, lat, lon, vert):        Entity.__init__(self)        self.pos = _Vector()        self._order = None    def update(self):        if(self._order):            dheading = self._order.heading - self.pos.heading()            if dheading > 180:                dheading = dheading - 360            elif dheading < -180:                dheading = dheading + 360            dspeed   = self._order.speed - self.pos.speed()            dheight  = self._order.height - self.pos.height()                        #print "\theading, speed, height"            #print "Curren: ", self.pos.heading(), self.pos.speed(), self.pos.height()            #print "Orders: ", self._order.heading, self._order.speed, self._order.height            #print "Deltas: ", dheading, dspeed, dheight            if(dheading == 0) and (dspeed == 0) and (dheight == 0):                #print "Order completed"                self._order = None                return            self.pos.changeHeading(dheading)            self.pos.changeSpeed(dspeed)            self.pos.changeHeight(dheight)        self.pos.move(1)    def genIdlFull(self):        r = SimulationServer.PlaneType()        r.id = self.id        r.pos = self.pos.genIdlFull()        return r    def processOrder(self, order):        self._order = order        return order            class _Position:    def __init__(self):        self._latitude = 0.0        self._longitude = 0.0        self._height = 0.0    def latitude(self, latitude=None): # North - South distance.        if(latitude == None): return self._latitude        else:            if(latitude >  90            or latitude < -90):                raise "DataOutOfBounds"            self._latitude = latitude    def longitude(self, longitude=None): # East - West distance.        if(longitude == None): return self._longitude        else:            if(longitude >  180            or longitude < -180):                raise "DataOutOfBounds"            self._longitude = longitude    def height(self, height=None):        if(height == None): return self._height        else: self._height = height    def genIdlReduced(self, r=None):        if r == None:            r = SimulationServer.Point()        r.lat  = self._latitude        r.lon  = self._longitude        r.vert = self._height        return rclass _Vector(_Position):    def __init__(self):        _Position.__init__(self)        self._speed = 0.0        self._heading = 0.0        self._dheading_per_turn = 5        self._dspeed_per_turn   = 1        self._dheight_per_turn  = 5    def speed(self, speed=None): # speed in meters per second        if(speed == None): return self._speed        else: self._speed = speed    def changeSpeed(self, change):        if(abs(change) < self._dspeed_per_turn):            self.speed(self.speed() + change)        else:            newspeed = (_direction(change) * self._dspeed_per_turn) + self.speed()            self.speed(newspeed)    def heading(self, heading=None):        if(heading == None): return self._heading        else:            if(heading >= 360): heading = heading - 360            if(heading <    0): heading = heading + 360            self._heading = heading    def changeHeading(self, change):        if(abs(change) < self._dheading_per_turn):            self.heading(self.heading() + change)        else:            newheading = (_direction(change) * self._dheading_per_turn) + self.heading()            self.heading(newheading)    def changeHeight(self, change):        if(abs(change) < self._dheight_per_turn):            self.height(self.height() + change)        else:            newheight = (_direction(change) * self._dheight_per_turn) + self.height()            self.height(newheight)    def move(self, timeInSecs):        vspeed = self._speed * math.cos(_degrees2pi(self._heading))        hspeed = self._speed * math.sin(_degrees2pi(self._heading))        vdistance = vspeed * timeInSecs        hdistance = hspeed * timeInSecs        # border handling... bs at the moment,        # but... so is all of this function right now.        lat = self.latitude()  + vdistance        lon = self.longitude() + hdistance        if lat >  90:            lat = lat - 180        if lat < -90:            lat = lat + 180        if lon >  180:            lon = lon - 360        if lon < -180:            lon = lon + 360        self.latitude(lat)        self.longitude(lon)    def genIdlFull(self):        r = SimulationServer.Vector()        _Position.genIdlReduced(self, r)        r.heading = self.heading()        r.speed   = self.speed()        return r        def _degrees2pi(deg): return deg * ( math.pi / 180 )def _knotsHour2meterSec(kmh): return kmh * ( 1852 / (60*60) )def _direction(value):    if(value >= 0):        return 1    else:        return -1# $Log: simdata.py,v $# Revision 1.12  2002/02/18 13:04:17  marijn# Changed rate of speed changes## Revision 1.11  2002/02/17 21:41:38  marijn# Improved turning direction## Revision 1.10  2002/02/07 16:28:07  marijn# Fixed order handling## Revision 1.9  2002/02/04 15:50:34  marijn# Added order receiving methods## Revision 1.8  2002/02/01 15:07:36  marijn# updated copyright information## Revision 1.7  2002/01/13 16:05:56  marijn# All updates now go via getUpdate(). Split genIdl into Full and Reduced## Revision 1.6  2002/01/12 23:49:50  marijn# Refactored simdata and added basic coordinate system## Revision 1.5  2001/12/26 01:24:43  marijn# Added Plane class## Revision 1.4  2001/12/25 02:00:08  marijn# various fixes and updates.## Revision 1.3  2001/11/27 20:59:06  marijn# sending of simple sim objcts## Revision 1.2  2001/11/19 00:25:58  marijn# py merged back into HEAD## Revision 1.1.2.1  2001/11/07 20:08:09  marijn# Added SimServer and threading#

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品成人免费在线| 欧美大尺度电影在线| 国产精品国产三级国产三级人妇 | 国产精品一卡二卡在线观看| 精品毛片乱码1区2区3区| 日日欢夜夜爽一区| 精品国产成人系列| 国产v综合v亚洲欧| 一区二区三区国产精品| 欧美日韩精品一区视频| 免费看欧美女人艹b| 国产日韩欧美精品在线| 在线视频国内自拍亚洲视频| 天天综合网天天综合色| 久久久九九九九| 91黄视频在线| 日韩av电影天堂| 亚洲国产精品99久久久久久久久 | 中文字幕精品一区 | 欧美精品 日韩| 国产在线看一区| 亚洲欧美电影院| 日韩一区二区三区在线视频| 国产高清成人在线| 亚洲综合区在线| 久久这里只有精品首页| 91久久一区二区| 九色|91porny| 亚洲精品成人a在线观看| 精品剧情v国产在线观看在线| 成人免费精品视频| 蜜臀av性久久久久蜜臀av麻豆| 国产日韩精品一区二区浪潮av| 欧美视频自拍偷拍| 粉嫩av一区二区三区在线播放| 亚瑟在线精品视频| 国产精品美女久久久久久久久久久| 欧美日韩免费观看一区二区三区 | 日本免费新一区视频| 国产片一区二区三区| 欧美乱妇23p| www..com久久爱| 国模冰冰炮一区二区| 五月婷婷久久丁香| 亚洲欧美一区二区久久| 久久亚区不卡日本| 日韩一区二区电影| 欧美系列日韩一区| 色综合色狠狠天天综合色| 国产一区二区三区电影在线观看| 首页国产欧美久久| 亚洲日本乱码在线观看| 久久精品人人做人人爽人人| 日韩欧美国产综合| 欧美日韩不卡一区二区| 色呦呦网站一区| 成人在线一区二区三区| 国产一区二区三区免费看| 日韩国产在线一| 午夜视频一区二区| 亚洲国产一二三| 一区二区三区中文字幕精品精品| 欧美韩国日本不卡| 久久久一区二区三区| 欧美mv和日韩mv国产网站| 日韩一区二区三区精品视频| 欧美麻豆精品久久久久久| 欧美日韩mp4| 欧美一区二区在线观看| 欧美日韩一区三区四区| 一本大道久久a久久精二百| 97超碰欧美中文字幕| 成人动漫在线一区| 99精品黄色片免费大全| eeuss影院一区二区三区| 顶级嫩模精品视频在线看| 国产高清精品久久久久| 不卡免费追剧大全电视剧网站| 福利一区二区在线| 成人动漫av在线| 91久久精品一区二区三| 在线观看国产精品网站| 欧美视频精品在线观看| 欧美一区二区三区在线观看视频| 日韩三级高清在线| 亚洲精品在线免费观看视频| 精品理论电影在线观看| 国产日韩欧美精品一区| 日韩理论片网站| 亚洲国产精品麻豆| 美女脱光内衣内裤视频久久网站| 美女在线一区二区| 国产激情视频一区二区在线观看 | 日韩三级免费观看| 久久久影视传媒| 国产精品久久毛片av大全日韩| 最新国产成人在线观看| 亚洲精品视频在线看| 一区二区三区丝袜| 日韩二区三区四区| 国产精品一区二区果冻传媒| 91亚洲精品一区二区乱码| 在线观看视频91| 日韩欧美电影在线| 国产精品色哟哟| 午夜a成v人精品| 国产高清精品久久久久| 在线亚洲人成电影网站色www| 717成人午夜免费福利电影| 国产亚洲欧美在线| 亚洲国产精品久久人人爱| 久久精品免费观看| 91在线视频在线| 777欧美精品| 国产精品美女久久久久久久网站| 亚洲制服丝袜av| 精品在线一区二区三区| 一本大道久久a久久精二百| 精品人伦一区二区色婷婷| 中文字幕一区二区三| 亚洲va韩国va欧美va| 国产精品自拍一区| 欧美性大战xxxxx久久久| 久久精品一区蜜桃臀影院| 一区二区三区四区蜜桃| 麻豆国产精品777777在线| 99久久国产综合精品色伊| 日韩精品最新网址| 亚洲精品视频免费看| 国产成人免费在线视频| 91精品国产综合久久久蜜臀粉嫩| 国产精品久久久久影院老司 | 久久人人超碰精品| 亚洲永久免费av| 成人黄色777网| 日韩欧美亚洲国产精品字幕久久久| 中文字幕在线不卡| 精品一二线国产| 欧美日韩不卡在线| 一区二区三区在线观看国产| 国产精品一区免费视频| 制服.丝袜.亚洲.中文.综合| 亚洲色图.com| 高清国产一区二区三区| 欧美一区二区福利在线| 尤物在线观看一区| 成人av片在线观看| 久久久蜜桃精品| 狠狠狠色丁香婷婷综合激情| 欧美日韩久久一区二区| 亚洲一卡二卡三卡四卡| 91女神在线视频| 国产精品乱码久久久久久| 国产精选一区二区三区| 日韩精品一区二区三区在线观看| 午夜日韩在线电影| 欧美日韩极品在线观看一区| 一区二区三区不卡视频| 99久久精品情趣| 中文字幕亚洲一区二区va在线| 国产成a人亚洲| 欧美激情一二三区| 成人av午夜电影| 国产精品嫩草99a| 成人av资源在线| 国产精品国产a级| 成人午夜视频网站| 国产精品麻豆欧美日韩ww| av中文字幕不卡| 亚洲天天做日日做天天谢日日欢| 99精品一区二区| 亚洲视频在线一区| 欧美丝袜第三区| 日韩国产欧美在线视频| 日韩欧美精品在线视频| 国产一区二区三区在线观看免费视频| 日韩美女主播在线视频一区二区三区| 蜜桃av一区二区在线观看| 日韩免费看网站| 蜜桃视频一区二区三区 | 国产拍欧美日韩视频二区| 国产精品一二三四五| 欧美激情一区二区三区蜜桃视频| www.在线成人| 亚洲一区二区综合| 日韩写真欧美这视频| 黄色精品一二区| 国产精品久久久久久久久久久免费看 | 日本不卡1234视频| 精品精品欲导航| 成人18视频日本| 亚洲自拍偷拍图区| 欧美电影免费观看高清完整版| 国产成人免费在线观看不卡| 亚洲女与黑人做爰| 日韩免费电影一区| 不卡一区在线观看| 亚洲成人免费看| 久久久久久久久99精品| 色婷婷激情久久|