2014年5月27日火曜日

開発環境

Head First C#―頭とからだで覚えるC#の基本 (Andrew Stellman (著)、Jennifer Green (著)、佐藤 嘉一 (監修)、木下 哲也 (翻訳)、オライリージャパン)の2章(オブジェクト指向になる!: わかりやすいコードにする)、エクササイズ(p.117)をDartで考えてみる。

その他参考書籍

エクササイズ(p.117)

コード

sample.dart

import 'dart:html';

void main() {
  update();
  b0.onClick.listen((MouseEvent event){
    if (bank >= 1000) {
      bank -= joe.receiveCash(1000);
      update();
    } else {
      window.alert('銀行にお金がありません。');
    }
  });
  b1.onClick.listen((MouseEvent event){
    bank += bob.giveCash(500);
    update();
  });
  joe2bob.onClick.listen((MouseEvent event){
    bob.receiveCash(joe.giveCash(1000));
    update();
  });
  bob2joe.onClick.listen((MouseEvent event){
    joe.receiveCash(bob.giveCash(500));
    update();
  });
}

LIElement li_joe = querySelector('#joe_cash');
LIElement li_bob = querySelector('#bob_cash');
LIElement li_bank = querySelector('#bank');
ParagraphElement msg_joe = querySelector('#msg_joe');
ParagraphElement msg_bob = querySelector('#msg_bob');
ButtonElement b0 = querySelector('#b0');
ButtonElement b1 = querySelector('#b1');
ButtonElement joe2bob = querySelector('#joe2bob');
ButtonElement bob2joe = querySelector('#bob2joe');
Guy joe = new Guy('Joe', 5000);
Guy bob = new Guy('Bob', 10000);
int bank = 10000;

void update() {
  li_joe.text = '${joe.name}の所持金は${joe.cash}円';
  li_bob.text = '${bob.name}の所持金は${bob.cash}円';
  li_bank.text = '銀行の所持金は$bank円';
}

class Guy {
  String name;
  int cash;
  Guy(this.name, this.cash);
  
  int giveCash(int amount) {
    if (amount <= cash && amount > 0) {
      cash -= amount;
      return amount;
    }
    window.alert('「私はもう$amount円もお金がありません。」と$nameが言った…');
    return 0;
  }
  
  int receiveCash(int amount) {
    if (amount > 0) {
      cash += amount;
      return amount;
    }
    window.alert('「$amount円では足りません」と$nameが言った…');
    return 0;
  }
}

0 コメント:

コメントを投稿