ゲーム開発ラボ

視覚的に楽しいアプリやゲーム開発をしながら,Javaやjavascriptを楽しく学んでいきます

iPhoneの計算機アプリをつくる-1

今シリーズでは,iPhoneの計算機アプリみたいなものを作成します

f:id:filopodia:20201110160831p:plain:w100こんなの


プログラミング環境には,Processingを利用します
Processingのダウンロードがまだの人は,下のリンクからダウンロードをしてください
processing-p5.hateblo.jp

今回は第1回なので,まずは必要最低限の機能だけを搭載した,非常に簡単な計算機を考えましょう
下の図が初号機の完成図です

f:id:filopodia:20201110163942g:plain:w300

ボタンが0しかない計算機です(笑)
画面真ん中のボタンをクリックすると,クリックした回数だけ0が追加されるようになっています


このプログラムのコードは以下のとおりです

// グローバル変数
String s = ""; // 画面表示する文字列
Button b;

void setup(){
  size(350, 600); // 画面サイズ
  background(220); // 背景色
  textAlign(CENTER, BASELINE); // テキスト表示設定を,中央下揃いにする
  b = new Button('0'); // ボタンクラスのインスタンス作成
}

void draw(){
  background(220); 
  fill(0);
  textSize(50);
  text(s, width/2, 200);
  b.display();
}

void mouseClicked(){
  // ボタンがクリックされたら
  // ボタンの文字を画面表示の文字列に追加
  if(dist(mouseX, mouseY, b.bx, b.by)<50) s+=b.c;
}

// ボタンクラス
class Button{
  
  // クラス変数 
  int col = 255; // ボタンの色
  int bx = width/2; // ボタンのx座標
  int by = height/2; // ボタンのy座標
  int br = 50; // ボタンの半径
  char c; // ボタンの文字

// コンストラクタ
Button(char _c){
  c = _c;
}

// クラス関数
void display(){
  // マウスカーソルがボタン領域上にあるとき
  // ボタンの色を灰色にする
  if(dist(mouseX, mouseY, bx, by)<50) col=180;
  else col=255;

  fill(col);
  noStroke();
  circle(bx, by, 2*br); // 半径brの円を(bx, by)の座標に描画
  fill(0);
  textSize(80);
  text(c, bx, by+30);
  }
}

将来的に画面上のボタンの数を増やしていく予定なので,
ボタンはButtonクラスとして定義します
また,画面上に表示される「文字列」と「ボタン」はそれぞれグローバル変数とします

setup()関数で画面の初期状態を,
draw()関数でアプリの挙動を,
mouseClicked()関数でマウスクリック時の挙動をそれぞれ決定しています

次回からはボタンの数を増やし,四則演算ができるようにします