Reach Üzerinde Taş Kağıt Makas Oyunu Yapma

Spread the love

Bu bölümde Reach üzerinde bir taş kağıt makas oyunu geliştireceğiz. Bu sayede hem Reach’i kullanmayı göreceğiz hem de bir oyun geliştirmiş olacağız.

Bir önceki bölümde Reach’in versiyonunu kontrol etmiş ve help menüsüyle Reach ile ilgili bilgileri almıştık. Uygulamamızı geliştirmeye başlamadan önce Ubuntu üzerinden,

./reach update diyerek imajların docker içerisine yüklenmesini sağlıyoruz. Bu işlem yaklaşık 30 dakika sürüyor. Yükleme sonrasında tekrar aynı komutu çalıştırdığımızda aşağıdaki ekran görüntüsünü alıyoruz.

Burada hem Algorand hem de Ethereum geliştirici ağları devnetler yükleniyor.

Docker üzerindeki görünüm de aşağıdaki şekilde oluyor.

 Artık uygulamamızı kodlamaya geçebiliriz. Bu eğitimde, Rock, Paper, Scissors’ın bir versiyonunu oluşturacağız. Burada iki oyuncu, Alice ve Bob ,oyunun sonucuna göre puan kazanabili. Basit adımlarla başlayıp yavaş yavaş uygulamayı daha detaylı hale getireceğiz.

Uygulama ekranımız aşağıdaki şekilde oluyor. Blokzincir uygulamalarının standartlaşmış kişileri Alice ve Bob bir oyun oynuyor. Sol tarafta Bob bir seçim yapıyor, ardından Alice onun seçimini tahmin ederek kendi seçimini yapıyor ve sonuca göre bir kazanan oluyor.

Kodu yazarken iki tane dosyaya ihtiyacımız olacak. Bunlar index.rsh ve index.mjs. Bu dosya uzantılarına aşina olmamanız çok normal, bunu dert etmeyin. Rsh uzantılı dosyamız arkaplanda çalışıyor, mjs uzantılı dosya ise web sitesi arayüzünü oluşturan dosyamız. Buradaki m-js , javascriptten geliyor.

Öncelikle kodlarımızı satır satır inceleyelim ardından Ubuntu üzerinden kurulumu yapalım.

İndex.rsh dosyası:

'reach 0.1';

export const main =
  Reach.App(
    {},
    [['Alice', {}], ['Bob', {}]],
    (A, B) => {
      exit(); });

Kodumuz reach 0.1 ile başlıyor. Çünkü biz Reach’in ilk versiyonu olan 0.1 versiyonunda çalışıyoruz.

export const main kısmı Reach programlarının başlangıcı için kullanılan ana metod.

[[‘Alice’, {}], [‘Bob’, {}]] ile uygulamanın katılımcılarını tanımlıyoruz.

(A, B) => {//Erişim tanımlayıcılarını ( Ave B) bu katılımcılara bağlar ve programın gövdesini tanımlar.

Exit(); kısmıyla işlemi bitiriyoruz.

Şimdi index.mjs dosyamıza bakalım.

import { loadStdlib } from '@reach-sh/stdlib';
import * as backend from './build/index.main.mjs';

(async () => {
  const stdlib = await loadStdlib();
  const startingBalance = stdlib.parseCurrency(10);

  const accAlice = await stdlib.newTestAccount(startingBalance);
  const accBob = await stdlib.newTestAccount(startingBalance);

  const ctcAlice = accAlice.deploy(backend);
  const ctcBob = accBob.attach(backend, ctcAlice.getInfo());

  await Promise.all([
    backend.Alice(
      ctcAlice,
      {},
    ),
    backend.Bob(
      ctcBob,
      {},
    ),
  ]);
})(); // <-- Don't forget these!

Mjs dosyamızı satır satır inceleyelim.

import { loadStdlib } from ‘@reach-sh/stdlib’;//Reach standart kitaplık yükleyicisini içe aktarır.

import * as backend from ‘./build/index.main.mjs’;//backend kısmı içe aktarır.

(async () => { //arayüzün gövdesi olacak asenkron fonksiyonu oluşturur.

const stdlib = await loadStdlib();//REACH_CONNECTOR_MODE ortam değişkenlerini yükler.

const startingBalance = stdlib.parseCurrency(10);//her test hesabı için başlangıç bakiyesi olarak bir miktar jetonunu tanımlar .

const accAlice = await stdlib.newTestAccount(startingBalance); //

const accBob = await stdlib.newTestAccount(startingBalance);//Alice ve Bob için ilk donanıma sahip test hesapları oluşturur. Bu, yalnızca Reach tarafından sağlanan geliştirici test ağında çalışır.

const ctcAlice = accAlice.deploy(backend); //Alice uygulamayı konuşlandırır.

const ctcBob = accBob.attach(backend, ctcAlice.getInfo()); //Bob ile iliştirildi.

await Promise.all([ //Tüm backendlerin tamamlanmasını bekler.

backend.Alice(

ctcAlice,

{},

),//Alice’in backendini başlatır.

backend.Bob(

ctcBob,

{},

),//Bob’un backendini başlatır.

]);

})(); // <– Bunu unutmayın! //Tanımladığımız tüm asenkron fonksiyonları çağırır.

Şimdi bu iki dosyayı Ubuntu’da nasıl kuracağımıza bakalım.

Touch komutuyla bu iki dosyayı oluşturuyoruz.

Nano komutuyla dosyaları açıp düzenliyoruz.

Ctrl O ile kaydedip Ctrl X ile çıkıyoruz.

Dosyalarımızı kaydettik. Son olarak,

./reach init ile kodlarımızı yazıyoruz.

Son olarak ./reach run ile kodumuzu çalıştırıyoruz.

Kurulumumuz sorunsuz olursa “Hello Alie and Bob” yazılı kısım ile komutumuz çalışıyor.

You may also like...