Lingara Lingara لارښود لارښودونه API کتابتونونه اپلیکیشنونه جوړول ځای پر ځای کول ویب اپلیکیشن
ژبه: پښتو

JVM او Android

دا پاڼه له انګلیسي ژبې ژباړل شوې ده. که دواړه سره توپیر ولري، انګلیسي پاڼه سمه ده. انګلیسي پاڼه ولولئ

د Kotlin د لوبغاړي کیټ په JVM کې، په ډیسکټاپ او په Android کې چلېږي. Java لوبې هماغه کیټ د هغه د Java مخ له لارې کاروي. نمونې د libGDX یوه لوبه تعقیبوي، چې د انځورولو حلقه یې د پېښو د خالي کولو لپاره طبیعي ځای دی، او هماغه کالونه د لوبې له هرې حلقې سره سمون خوري.

کیټ او د هغه اصلي کتابتونونه ور زیات کړئ

کیټ او د هغه اصلي کتابتونونه په Maven Central کې جلا آرټيفیکټونه دي، نو دواړه ور زیات کړئ. د ډیسکټاپ لوبه lingara-embed-natives-desktop ور زیاتوي، چې د Windows، macOS او Linux کتابتونونه لري. د Android یو ماډیول پر ځای یې lingara-embed-natives-android ور زیاتوي، چې یو AAR دی. د libGDX په یوه پروژه کې، د ډیسکټاپ اصلي کتابتونونه د ډیسکټاپ ماډیول ته ځي او د Android اصلي کتابتونونه د Android ماډیول ته.

د Kotlin لوبه په lingara-embed-kotlin پورې تړلې ده؛ د Java لوبه په lingara-embed-java، چې هماغه مخ دی.

ټوکنونه له خپل سرور څخه واخلئ

کیټ هېڅکله راز نه ساتي. هغه ته د خپل سرور د ټوکن لاره او هغه سرلیک ورکړئ چې د لوبغاړي ناسته وړي، او کیټ هر ځل چې ټوکن ته اړتیا ولري هغې ته غوښتنه لېږي. ستاسو سرور د یوه سرور کیټ په مرسته ټوکن جوړوي او د ټوکن او د هغه د پای ته رسېدو د وخت په لېږلو ځواب ورکوي.

پېښې د انځورولو په حلقه کې خالي کړئ

هسته د شبکې خپل I/O په خپل جلا تار کې چلوي او هېڅکله ستاسو کوډ ته کال نه کوي. د انځورولو په حلقه کې، د لوبې په تار، هغه څه خالي کړئ چې رارسېدلي دي، په یوه ځل تر 256 پېښو پورې، او هره یوه اداره کړئ: د تمرین تازه معلومات، د NPC هغه ځواب چې په برخو کې راځي، یوه تېروتنه. په Java کې، هره پېښه ستاسو د visitor اړوند میتود ته ځي. کیټ د لوبې د dispose په ګام کې وتړئ، چې هسته دروي او آزادوي یې.

د دې لپاره چې دا پېښې څه وړي، د NPC خبرې اترې او د تمرین پایلې وګورئ.

د کوډ بېلګې ژبه

Kotlin

// The kit, and the natives for the platform: natives-desktop in a libGDX lwjgl3 module, natives-android in its android module.
implementation("com.getlingara:lingara-embed-kotlin:0.1.0-alpha.6")
implementation("com.getlingara:lingara-embed-natives-desktop:0.1.0-alpha.6")

Java

<!-- The kit, and the natives for the platform (lingara-embed-natives-android in an Android module). -->
<dependency>
  <groupId>com.getlingara</groupId>
  <artifactId>lingara-embed-java</artifactId>
  <version>0.1.0-alpha.6</version>
</dependency>
<dependency>
  <groupId>com.getlingara</groupId>
  <artifactId>lingara-embed-natives-desktop</artifactId>
  <version>0.1.0-alpha.6</version>
</dependency>
د کوډ بېلګې ژبه

Kotlin

// Your server mints the embed token; the kit POSTs {} here whenever it needs one.
private val lingara =
    LingaraEmbed.start(
        EmbedConfig(
            tokenSource =
                TokenSourceConfig.Http(
                    url = "https://my-game.example/lingara/token",
                    headers = listOf(Header("Authorization", Secret("Bearer $session"))),
                ),
            userAgentSuffix = "my-game/1.4",
        ),
    )

Java

// Your server mints the embed token; the kit POSTs {} here whenever it needs one.
lingara =
    LingaraEmbedJava.builder()
        .httpTokenSource(
            "https://my-game.example/lingara/token",
            Map.of("Authorization", "Bearer " + session))
        .userAgentSuffix("my-game/1.4")
        .build();
د کوډ بېلګې ژبه

Kotlin

// In render(), on the game thread: one crossing, at most 256 events.
fun render() {
    lingara.drain(256) { event ->
        when (event) {
            is EmbedEvent.Practice -> showPractice(event.snapshot.question?.prompt)
            is EmbedEvent.NpcTurn -> onNpcTurn(event.update)
            is EmbedEvent.Error -> println("Lingara error: ${event.error.message}")
            else -> Unit
        }
    }
}

// In dispose(): stops the core and frees it.
fun dispose() {
    lingara.close()
}

Java

// In render(), on the game thread: one crossing, at most 256 events, each to its visitor method.
void render() {
  lingara.drain(256, event -> LingaraEmbedJava.visit(event, visitor));
}

// In dispose(), or let try-with-resources do it.
@Override
public void close() {
  lingara.close();
}