忍者ブログ

マジックナンバー

彼と時間を共有するぼくは、彼の何を知り得るのだろう

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Greenfootを使ってみた

Greenfootは、プログラミング教育のためのJava開発環境らしいです。
二次元のグラフィックアプリケーション、例えばゲーム制作を簡単に行えるとのこと。
とりあえず挑戦してみました!

*5/24修正*

・変数名countWorkをcountWalkに修正
(クマだと思っていた生物は、ウォンバットと呼ばれるクマのような生物だった)
(若干文字数が多いのでウォンバットをクマとして扱っていきます。脳内補完よろしくです)
1.1.ダウンロード
http://www.greenfoot.org/
公式ページへ飛ぶと、下の方に"The Software"があるのでそれをクリック
Download Greenfootから開発環境をダウンロード
※Greenfootを動かすにはJava6かJava7 JDKが必要になるみたい
 パソコンに入ってないようだったら、Javaもダウンロード

1.2.インストール
次はGreenfootのインストール
ここは特に問題はないと思うので、適当に「次へ」を連打
(Javaがパソコンに入っていない場合、インストールしておく)

2.チュートリアル
インストールが完了したら、起動してみる。
起動するとなにやら謎のウィンドウが・・・

「Open tutorial and tutorial scenario」を選択して、まずは操作に慣れよう!

ということで選択するとこんな感じの画面が表示されます。


・真ん中のグリッド線が引かれてる場所がWorld、ここにプログラムを実行した時の画面を構築していく
・右の四角から矢印がでてるものがClass、プログラムの部品的なもの
・下のボタンやスライダーはExecution Controls、プログラムの実行に関わるもの
らしい

2.1.クラスからのActor貼り付け
右のActor classesからWombatを右クリックして、New Wombat()を選択
マウスポインタにクマの画像がくっついてくるので、真ん中のWorldで左クリック。

クマの画像をWorldに配置することができた。

同様にして右のActor classesからLeafをWorldへ貼り付ける。
下のExecution ControlsのRunを押すと、クマたちが動き出す。
同じActor(クマや草)を複数Worldに置くこともできるみたい。眺めてると楽しい


クマは草と同じマスへ移動すると草を食べる。ただ、画面の端へクマが移動してしまうと
周りをぐるぐる回るだけでエサ(草)を永遠に食べることができない。カワイソス

そこで、クマのAI(と言うと大袈裟かもしれない)を書き換えてみる

2.2.Actorプログラムの書き換え
右のActor classesのWombatを右クリックして、Open editorを選択する。
プログラムがずらずらっと表示される。この中のact()がどうやらクマの移動に関係してるみたい
というわけでここら辺から弄ってみようと思う。

クマの行動を考える
・5歩くらい歩いたら、方向転換してみよう
・エサ(草)の周辺2マスくらい近づいたら、クマはエサ(草)に気づいてそっちに向かうようにしよう
など

ここではとりあえず「5歩くらい歩いたら、方向転換してみよう」を実装する
    private int direction;
    private int leavesEaten;
    private int countWalk;

    public Wombat()
    {
        setDirection(EAST);
        leavesEaten = 0;
        countWalk = 0; //countWalkを0で初期化
    }
~~~~~~~~~~~~
いろいろ省略
~~~~~~~~~~~~
    public void act()
    {
        if(foundLeaf()) {
            eatLeaf();
        }else if(countWalk >= 5){ //5歩以上歩いたら
            int ran = (int)(Math.random()*4);//0~3の乱数をつくる
            switch(ran){
                // EAST
                case 0:
                    setDirection(EAST);
                    break;
                //WEST
                case 1:
                    setDirection(WEST);
                    break;
                //NORTH
                case 2:
                    setDirection(NORTH);
                    break;
                //SOUTH
                case 3:
                    setDirection(SOUTH);
                    break;
            }
            //方向転換したらcountWalkを0にしておく
            countWalk = 0;
        }
        else if(canMove()) {
            move();
        }
        else {
            turnLeft();
        }
        countWalk++; //1回歩きましたよー
    }

赤字の部分がact()に新しく追加した場所。
act()以外にはprivate int leavesEaten;の下に private int countWalk;を追加した。
こ↑こ↓で、整数(int)を格納するcountWalkという名前の入れ物を用意している。
privateはおまじないのようなもの。

ちなみにpublic Wombat() {...} で countWalkに0を代入している。
変数というデータの入れ物は、宣言したときにゴミが入っているので使う前にキレイにしたほうが良い
Javaはわからないけど・・・

countWalk++;を見ると変数の後ろに+が2つ並んでいる。
この"++"はcountWalkに格納されてる数値を1増やせという便利な命令。

進行方向の変更はsetDirection()が用意されていたので再利用させてもらった。
これはクマの進行方向を変更する、関数と呼ばれる処理のまとまり
関数を用意すると、同じ処理を何度も使いまわせるのでとっても便利!

実際に動かしてみるとクマがちょろちょろするようになった。
エサ(草)があるか探す関数を実装してみたけど、クマがエサ(草)を避けるようになってしまった)^o^(
もう少し見直してから、書き加えるとおも

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

無題

変数名がcountWorkになっていますが、「歩く」なら「walk」ですね。まあ、プログラムがきちんと動けば無問題ですが。

あと、これもどうでもいいことなんですが、
画像の動物はクマではなくてウォンバットらしいです。
でも、説明のときに長くなるし姿も似てるので
クマのままでも大丈夫だと思いますw

無題

英単語のミス含め、ご指摘ありがとうございます
記事&手元のソースを修正しました

// WalkやWorkなどの単語の間違いは頻繁にやってしまいます
// 気をつけなければ・・・

プロフィール

HN:
No Name
性別:
非公開
自己紹介:
浅学非才の若輩者ですが、がんばります!

カレンダー

09 2017/10 11
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

フリーエリア

最新CM

[05/24 NONAME]
[05/24 NONAME]
[12/08 NONAME]
[11/27 みかき]

ブログ内検索

P R