iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0
Software Development

六邊形戰士程式設計系列 第 28

D28 - MMORPG事件處理問題 多語言篇

  • 分享至 

  • xImage
  •  

今天我們把跟響應式程式設計比較相關的重點部分搬到 Python 以及 Kotlin 上來實作

移動

JavaScript

const 觀察移動 = rx
  .timer(2000, tick)
  .pipe(rx.take(15))
  .pipe(rx.map(() => 向左走));

Python

pip install rx
import rx
from rx import operators as ops

觀察移動 = rx.timer(2, tick).pipe(ops.take(15)).pipe(ops.map(lambda x: 向左走))

Kotlin

<dependency>
    <groupId>io.reactivex.rxjava3</groupId>
    <artifactId>rxjava</artifactId>
    <version>3.1.5</version>
</dependency>
import io.reactivex.rxjava3.core.Observable.interval

val 觀察移動 = interval(2,1,TimeUnit.SECONDS).take(15).map { 向左走 }

集中處理與訂閱

JavaScript

觀察刀賊移動.pipe(rx.bufferTime(3000)).subscribe((events) => {
  for (let e of events) {
    map.on(e);
  }
  console.clear();
  console.log(visualize(map));
});

Python

觀察移動.pipe(ops.buffer_with_time(3)).subscribe(lambda e: print(map.on(e)))

Kotlin

觀察移動.buffer(3, TimeUnit.SECONDS).subscribe { events ->
    for (e in events) println(map.on(e).visualize())
}

最後再次強調。雖然我們在範例中都是使用 Rx 系列的工具來實現響應式程式設計,但就如同之前介紹過的AOP在不同語言上有不同的工具或實現方式一樣,這並不代表響應式程式設計只能透過Rx系列工具來實現喔~


上一篇
D27 - MMORPG事件處理問題 集中處理篇
下一篇
D29 - 如何利用各種範式校閱、整合、優化程式 ?
系列文
六邊形戰士程式設計30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言