情景1:現在有乙個道具商店,共有10個道具可購買。玩家可使用某道具或鑽石重新整理道具商店中的道具,或者系統會每隔2小時贈送一次重新整理次數。
問題1:如何實現間隔2小時實時重新整理?
from datetime importview codedatetime
defcal_count(timestamp):
now_dt =datetime.now()
base_dt =datetime.fromtimestamp(0)
last_dt =datetime.fromtimestamp(timestamp)
count = ((now_dt.date() - base_dt.date()).days*12 + now_dt.hour/2) -\
((last_dt.date() - base_dt.date()).days*12 + last_dt.hour/2)
return
count
if__name__ == "
__main__":
last_ts = 1433000132
print cal_count(last_ts)
問題2:重新整理後,如何隨機出新的10個道具?(注:items=[10001, 10002, 10003, ...], 對應的weight=[1, 2, 3, ...])
importview coderandom
import
time
import
sysdef
func1(items, weight, times):
total_weight =sum(weight)
rand_items ={}
all_items =dict(zip(items, weight))
for _idx in
range(0, times):
count =0
rand = random.randint(0, total_weight-1)
for _item, _weight in
all_items.iteritems():
count +=_weight
if rand
rand_items[(_item, _weight)] = rand_items.setdefault((_item, _weight), 0) + 1
break
return
rand_items
deffunc2(items, weight, times):
'''len(items) == len(weight)
'''_now =time.time()
ifnot
items:
return
rand_pools =
rand_items ={}
total_weight =sum(weight)
for _idx, _item in
enumerate(items):
rand_pools.extend([_item]*weight[_idx])
for _idx in
range(0, times):
item =random.choice(rand_pools)
key =(item, weight[items.index(item)])
rand_items[key] = rand_items.setdefault(key, 0) + 1
return
rand_items
def pprint(args, debug=false):
ifdebug:
args
if__name__ == "
__main__":
debug =true
times = 10 #
rand times
items = range(1001, 2001)
weight = range(100, 100100, 100)
if len(items) !=len(weight):
pprint(
'data error.
', debug )
sys.exit()
pprint(
'\ntotal items:%s, random times: %s.
'%(len(items), times), debug )
_now =time.time()
rand_items =func1(items, weight, times)
pprint(
"\nfunc 1 total cost %s seconds.
"%(time.time()-_now), debug )
pprint(
'\nresult:%s.
' % sorted(rand_items.iteritems(), key=lambda dt:dt[0], reverse=true) )
_now =time.time()
rand_items =func2(items, weight, times)
pprint(
"\nfunc 2 total cost %s seconds.
"%(time.time()-_now), debug )
pprint(
'\nresult:%s
'% sorted(rand_items.iteritems(), key=lambda dt:dt[1], reverse=true) )
遊戲中掉落效果的實現
1.計算運動引數 運動特徵 豎直方向受到重力作用,水平方向有空氣阻力作用 第一種情況 起拋點位置和掉落點位置處於同一水平面中。已知開始拋起的點位置和掉落目標位置,由此可以求出兩點之間的距離 distance 運動軌跡如下所示 根據rand 函式產生出 0,1 之間的數值,作為運動總的時間。並且hei...
遊戲中的指令碼
現在遊戲裡流行的指令碼有python 和lua 例如魔獸世界就是用lua指令碼來驅動邏輯的。我們為什麼用指令碼,而不是純用c 呢?當然,這與團隊協作以及工作效率有關。c 編譯速度不佳,當乙個專案達到比較龐大的乙個規模時,編譯的時間往往會讓人憤怒了。於是,python出現了。一些重要的演算法實現,圖形...
遊戲中的音效
1.遊戲中的即時音效 soundpool類 public int load context context,int resid,int priority 架子啊音訊檔案 context 該引數為應用程式的上下文 resid 該引數為要載入的音效資源的id priority 優先順序 例項 初始化聲音...