お絵描きやプログラミングやアーマードコアについて綴っていくつもりです。プログラミングは備忘録的に使うつもりだったりする。
プロフィール

Author:typeすつーか
FC2ブログへようこそ!

最新トラックバック
カウンターです
ついったー

広告とか

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--/--/-- --:-- スポンサー広告 TB(-) CM(-)
すつーかがgitと初めて接したときから現段階までの
イメージの変遷をお送りします三( ^o^)ノ



〜First Impression〜
  • Unityハッカソンにてはじめてgitを使ったときの感触


    →Dropboxの機能を拡張した感じなのかな?? 30日以上でもファイル復活できるじゃないですかやだー。すごい。






  • git本でローカルのみで使用する使い方をよむ


    →ああ...これがバージョン管理ソフトか...。
    →冒険の書を無数に用意できる感じだなーと。




  • githubのサイトを徘徊しながらgit cloneをしまくる日々


    →一気に複数のコードをDLできて便利。すぐコンパイルできるし。




  • ブランチってなんだろーなと、妄想をする


     →試しにこんな機能付け加えてみたいな、ってときにブランチわけるんだろうな。
      一つのゲームをチーム内で分けて作るときは、ゲーム画面作るブランチ、ランキング画面作るブランチってわけてやるんだろか




  • ブランチの概念を導入


    A successful Git branching model を翻訳しました
    を読んで、ブランチの使い方というかポリシーというか精神をおおまかに把握。




  • githubにサインアップ


    リモートリポジトリを使って練習とかどうやるのよ、VPSとかつかえばいいんですか!?
    とか思っていたすつーかにとっては、

    →リモートリポジトリげっと┏( ^o^)┛





  • ソースコード以外での利用の幅が広がる


    Qiitaとか見てvundle installとかを発見したりした。
     他には、ゆるよろさんのブログにてdotfilesをgitで管理してるのを発見したり。
     さらにはイラレをgitで管理したり。ペンや消しゴムの詳細設定をgitで管理ってことなのかな。
     単純にレイヤを管理したいって時にでも使えそうな気もする。






  • というかprogitを嫁と。(積んでる
    スポンサーサイト
    2012/12/31 00:08 git TB(0) CM(0)
    githubにサインアップしてみました。
    MaFuさんからgithub for Macの存在を教えて頂き、それもインストール。


    なんか良いのできたら公開しまーす。
    (まだ何も公開してない。
    2012/12/30 22:25 git TB(0) CM(0)
    新大阪コワーキングにて若林さんからgitの手ほどきをうけてきました。
    若林さんありがとうございます。

    背景知識はこちらを参考に。
    A successful Git branching model を翻訳しました
    「こわくない Git」というスライドを発表しました
    今までの私は以下のような基本的なgitコマンドしか使いこなせていませんでした。
    ここからより深く学んでいきます。

    git init または git clone hogehoge@hoge
    ファイルに変更が起こったら以下のコマンド.
    git add .
    git status -s
    git commit -m "hogehoge"
    git log --oneline --graph
    git shortlog //コミットidの表示無し



    git push //git cloneの場合.
    git pull

    git branch
    git branch develop
    git branch
    git checkout develop
    git branch

  • 差分を表示

  • $git diff コミットid 比べるコミットid




  • 直前のコミットメッセージを変更する

  • $git commit --amend -m "hogehoge"




  • コミットの状態に完全に戻す(登録してないファイルや、Untrackファイルも消える)

  • $git reset --hard コミットid






  • マージを取り消したい

  •  単にcheckoutする場合、
    $git checkout マージを行う前のコミットid


     もしくはrevertを使う。




  • ツリー表示

  • $git log --oneline --graph






    gitは別の角度から眺めると、また違った感じに見えてくる


    Git超入門 - 猿でもできるGit rebase

    rebaseをいつもどおり(?)に表現すると、
    「push時に、masterの歴史の後ろにコミットログを。」

    となります。

    見方を変えると、

    rebaseは、「できるだけ個人個人でコンフリクトの対処をする」


    といった感じに。
    こうしてみると、rebaseのことをまた違った感じで理解する事ができます。




  • fast-forwardのこと

  • fast-forwardはmasterブランチ以外でのコミットをmain-branchに取り込む方式のこと。
    developで作業していても、結局はmasterブランチで作業してるのと同じ場合、masterに取り込みます。





  • git mergeコマンド

  • $git merge develop //現在のブランチに、引数で指定したブランチ名のものを引っ張ってくる。


    たとえば、今居るブランチがmasterだとすれば、developブランチにはmasterのコミットは反映されない。まーじされない。
    それをマージするには、

    $git checkout develop
    $git merge master

    とする。




    その他


    reset indexを全部空っぽにする。
          --mixedがデフォでかかってる
    revert ごめんなさい、あのコミットはミスです。といったときに使うコマンド。


    git log -1 //コミットログを一つだけ表示する。
    git log -3 //コミットログを2つだけ表示する。

    git log -1 89786f55 #id指定 かつ マージ時のコミットid
    commit 89786f55
    Merge: masterのid [feture]のid //先頭から順に、親番号1,2,3......
    Author: stuka
    Date:hogehoge

    マージ直後のidなら、分かりやすく親のコミットidを表示してくれる。





    暇な時間を見つけてはprogitを読もうかなー。
    2012/12/29 20:30 git TB(0) CM(0)
    どうも、11/14にMac買いましたすつーかです。
    SkypeのログをWindows7 32bit/64bit MacOSXスノレパで共有する事に。
    今更ですが、そのときの手順をかきます。

    今まで32bitと64bitのWindows7でSkypeのログを共有してましたが、いよいよMacOSXスノレパの加わる事に。
    参考にしたサイトはこちら。
       Dropboxを使いSkypeのログをWindowsとMacで共有




    私が実際に行った手順は以下のようになりました。
    Macにスカイプをインストールして、ちょっとの間いつも通り使ってみる。
    Dropboxもインストール。
    その後、いちおうPCを再起動してから以下のコマンドを実行しました。


    $mv /Users/stuka/Library/Application\ Support/Skype /Users/stuka/Library/Application\ Support/BKSkype

    $ln -s /Users/stuka/Dropbox/Skype /Users/stuka/Library/Application\ Support/Skype

    上記のコマンドがうまくいったらSkypeを起動。
    過去のログも見れるようになって、ばんじゃーい∩(・ω・)∩

    Windowsに入れてるSkypeはアップデートして、全部のPCで同じバージョンを使う。
    2012/12/28 02:48 Tips TB(0) CM(0)
    先日、Rの勉強会に行った時にRの環境を構築したのでメモ程度に書いていく。
    こちらのサイトを参考にさせて頂きました
       「パッケージ 'tcltk' をロードできませんでした」がうざいw Rcmdr インストール 統計ソフトR

    今回はMac向けの記事なのでwindowsの方はご容赦ください。
    でもwindowsだと、必要になったパッケージを逐一自動的にとってきてくれるらしいのでwindowsのほうが良いなぁと思ってみたり。


    1. The Comprehensive R Archive Networkにて「Download R for MacOS X」をクリック、
      .pkg, .tar.gzとかいろいろありますが、お持ちのOSのバージョンにあったものをDL&インストール

    2. 次にRcmdrをインストールするのが一般的みたいなので、
      メニューの「パッケージとデータ」>検索のところでRcmdrと入力し、「一覧を取得」をクリック。でてきたRcmdrを選択して、パッケージの依存関係を解決にチェックをいれて選択をインストール
      (>install.packages(Rcmdr) でも可能らしいです)

    3. tclrtがありませんと言われたらこちらのサイトにてtcltk.hogehoge.dmgをインストール

    4. X11をインストールしてくださいっぽいことを言われたらインストールしてください。
      About X11 and OS X Mountain Lion
      Quartz





    Rコンソールはこんな感じ


    Rconsole.png

    Rコマンダーはこんな感じ


    Rコンソールにて、

    >library(Rcmdr)
    と入力するとRcmdrが立ち上がる。
    Rcmdr.png






    〜簡単な行列演算〜



    > A<-matrix(c(1,2,3,4),nrow=2,ncol=2)
    > solve(A)#逆行列
     [,1] [,2]
    [1,] -2 1.5
    [2,] 1 -0.5
    >



    > A%*%solve(A)
      [,1] [,2]
    [1,] 1 0
    [2,] 0 1
    >



    > eigen(A)
    $values #固有値
    [1] 5.3722813 -0.3722813

    $vectors #固有ベクトル
       [,1]     [,2]
    [1,] -0.5657675 -0.9093767
    [2,] -0.8245648 0.4159736

    >



    資料


    インストールの部分から解説があってはじめやすい
    R資料

    こちらはwiki
    RjpWiki



    統合開発環境


    IDEも見つけたので貼っておく
    RStudio



    2012/12/25 15:34 R TB(0) CM(0)
    Processing Advent Calendar 2012 23日目の記事です。



    ↑即興でつくったブロック崩し(-ω-`)








    AdventCalenderにむけてSimpleOpenNIでなにかをつくりたかったのですが、
    事実上、アイデアソンで終わってしまった・・・。


    そこで今回は、おもしろ(がじぇっと)の素となるもの、
    すなわちアイデアの採掘方法を自分なりに公開しようとおもいます。


    私がよく用いている発想法として、まず第一に


       

    I.不便と感じたときに、それを便利にするものをつくる



    があります。


    そして、今回の記事のメインディッシュはコレ↓



       

    II. Processing × ナニカ





    いきなりこれをみただけでは「(・へ・?)」

    となってしまうかもしれません。





    私は今回のハッカソン(?)にあたり、
    きがつくとProcessing向けのさまざまなライブラリを手当たり次第にあたっていました。
    ちょうど、「ナニカ」の部分に当てはめて。




    そして生まれました。








    がじぇっとの「素」が。






    タイトルをみて楽しみにしてらっしゃった方ごめんなさい、
    また機会をみてつくろうとおもいます(ーー;)






    申し訳なけ程度にうp・・・↓


    import SimpleOpenNI.*;

    SimpleOpenNI kinect;
    HashMap hands = new HashMap();
    PVector pos2d;

    void setup(){
    kinect = new SimpleOpenNI(this);
    kinect.enableDepth();
    kinect.enableRGB();
    kinect.enableScene();
    kinect.alternativeViewPointDepthToImage();
    kinect.setMirror(true);

    //---
    kinect.enableGesture();
    kinect.addGesture("Wave");
    kinect.addGesture("Click");
    //kinect.addGesture("RaiseHand");
    kinect.enableHands();

    size(kinect.rgbWidth(), kinect.rgbHeight());


    pos2d = new PVector(100, 100);

    }

    int px = 0, py = 0, vx = 5, vy = 16;
    void draw(){
    kinect.update();
    image(kinect.rgbImage(), 0, 0);

    drawHands();
    ellipse(px, py, 30, 30);
    reflec();
    racket();
    }

    void reflec(){
    px += vx;
    py += vy;
    if(px < 0 || px > kinect.rgbWidth()){
    vx = -vx;
    }
    if(py < 0 || py > kinect.rgbHeight()){
    vy = -vy;
    }
    }

    void racket(){
    if(abs(pos2d.x - px) < 30 && abs(pos2d.y - py) < 30){
    px = (int)random(kinect.rgbWidth());
    py = (int)random(kinect.rgbHeight());
    }

    }

    void drawHands(){
    for(Map.Entry entry : hands.entrySet()){
    int id = (Integer)entry.getKey();
    PVector pos3d = (PVector)entry.getValue();

    pos2d = new PVector();
    kinect.convertRealWorldToProjective(pos3d, pos2d);

    //ellipse
    stroke(255, 0, 0, 128);
    strokeWeight(32);
    point(pos2d.x, pos2d.y);
    }

    }


    void onRecognizeGesture(String strGesture, PVector idPosition, PVector endPosition){
    println("Recognzed "+ strGesture);
    kinect.startTrackingHands(endPosition);
    }

    void onUpdateHands(int handId, PVector pos, float time){
    hands.put(handId, pos);
    }

    void onDestroyHands(int handId, float time){
    hands.remove(handId);
    }





    このプログラムの遊び方


      まず初めに、手を振るジェスチャである、「バイバイ」をすると手を認識する

      画面にでてきた火球をタッチするとなんか起こる

      それだけ!



    つまりは、動くボールを描画する入門的なコードとSimpleOpenNIの初歩の部分をミックスしたというものです。



    明日はp5infoさんです。






    -------------追記-----------------


    SimpleOpenNIを使ったブロック崩しゲームできました。

    y軸方向の反射はありません。。。

    import SimpleOpenNI.*;

    SimpleOpenNI kinect;
    HashMap hands = new HashMap();
    PVector pos2d;
    int flag[][] = new int[8][4];

    void setup(){
    kinect = new SimpleOpenNI(this);
    kinect.enableDepth();
    kinect.enableRGB();
    kinect.enableScene();
    kinect.alternativeViewPointDepthToImage();
    kinect.setMirror(true);

    //---
    kinect.enableGesture();
    kinect.addGesture("Wave");
    kinect.addGesture("Click");
    //kinect.addGesture("RaiseHand");
    kinect.enableHands();

    size(kinect.rgbWidth(), kinect.rgbHeight());


    pos2d = new PVector(100, 100);

    for(int i = 0; i < 8; i++){
    for(int k = 0; k < 4; k++){
    flag[i][k] = 1;
    }
    }
    }

    int px = 0, py = 0, vx = 5, vy = 16;
    void draw(){
    kinect.update();
    image(kinect.rgbImage(), 0, 0);

    drawHands();
    ellipse(px, py, 30, 30);
    rect(pos2d.x - 50, kinect.rgbHeight()- 70, 100, 20);
    reflec();
    racket();
    panel();
    }

    void panel(){
    int offset = 50;
    for(int i = 0; i < 8; i ++){
    for(int k = 0; k < 4; k++){
    if(flag[i][k]==1){
    rect(offset + k*150 , i*35, 100, 30);
    }else continue;
    }
    }

    }


    void reflec(){
    px += vx;
    py += vy;
    if(px < 0 || px > kinect.rgbWidth()){
    vx = -vx;
    }
    if(py < 0 || py > kinect.rgbHeight()){
    vy = -vy;
    }

    for(int i = 0; i < 8; i ++){
    for(int k = 0; k < 4; k++){
    if(flag[i][k]==1){
    if(abs(50 + k*150 + 50 - px) < 50 &&
    abs(i*35 - py) < 15){
    flag[i][k]=0;
    vy = -vy;
    }
    }else continue;
    }
    }
    }

    void racket(){
    if(abs(pos2d.x - px) < 100 && py > kinect.rgbHeight() - 75){
    vy = -vy;
    }

    }

    void drawHands(){
    for(Map.Entry entry : hands.entrySet()){
    int id = (Integer)entry.getKey();
    PVector pos3d = (PVector)entry.getValue();

    pos2d = new PVector();
    kinect.convertRealWorldToProjective(pos3d, pos2d);

    //ellipse
    stroke(255, 0, 0, 128);
    strokeWeight(32);
    point(pos2d.x, pos2d.y);

    //drawPos(id, pos3d, pos2d);
    }

    }



    void onRecognizeGesture(String strGesture, PVector idPosition, PVector endPosition){
    println("Recognized "+ strGesture);
    kinect.startTrackingHands(endPosition);
    }

    void onUpdateHands(int handId, PVector pos, float time){
    hands.put(handId, pos);
    }

    void onDestroyHands(int handId, float time){
    hands.remove(handId);
    }
    2012/12/23 23:56 processing TB(0) CM(2)
    いろふ Advent Calendar 17日目を担当することになりました。

    さて、今回は何をネタにしようかと思っていましたが、触れてはいけないような疑問に触れようと覚悟を決めました。

    いろふさんのアイコンって立体になったらどうなるんだろう?



    という疑問が今回の出発点でした。
    考えても仕方がないので実際に作ってみたろふ。


    丸のインスタンスを生成


    2sphereMulti.png






    口をつくった


    3mouse.png

    これは・・・パッ○マン!?









    目のインスタンスを生成


    4eye.png






    ふきだしのインスタンスをつくる


    うーん、、、こんな感じ?


    5unnn.png






    「・・・・」のインスタンスをつくる


    6ball.png






    目に輪郭を。


    6eyeBlack.png






    こんなかんじ?


    7end.png






    3Dでのインスタンス化に成功!!


    irof.png






    いろいろと描けそうな素材的なナニか


    irofDraw.png

    壁紙・・・?


    irofWallL.jpeg
    irofWallMonoL.jpeg











    ふぅ・・・







    ローポリのいろふさんつくって、

    一息ついて気づいたことが・・・












    「プログラムつくってないろふ!」

    2012/12/16 23:48 AdventCalender TB(0) CM(0)
    Processing Advent Calendar 2012 10日目を担当することになりました、すつーかです。よろしくお願いします。
    今回は「プロジェクトの紹介」を行いたいと思います。


    事の発端は、コーディングまみれになりたいという事と、
    すつーかがAndroidアプリとしてゲームをリリースしたかったという事にありました。

    Androidアプリの作り方はいろいろあると思いますが、当時、王道と言いますか良く言われている開発環境がEclipse+AndroidSDKでした。

    でもゲームプログラミングもままならない&Androidエミュ重い(最近は軽くなってきた?)やらAndroid絡みのエラー対処に追われ、RPG作りどころではありませんでした。


    ゲームプログラミングの専門書を見てみるも、ソースコードの理解に追われまくり、これまた「コーディングまみれになりたい」といった欲求も満たされない始末。


    「もう、全部自分の頭だけて考えて完成するような環境クレ・・・」






    ということでProcessingでRPGのロジックを完成させるプロジェクトがスタート。

    title.png





    早く作りたい一心で、開発手法やら何やら気にせず作っていきました。

    相方のプログラマと、ココこうしたら良いんじゃない?
    だとか、随時クラス図書き換えたり、pde書き直したりして面白かったです。
    一番面白かったのは、
    初めは手続き型から、ある程度コードを描いたところでクラス別に作り直した所でした。




    はじめに、チップを配置するスケッチを描きました


    final int CHIP = 30;

    void setup() {
    size(480, 480);
    }

    void draw() {
    for (int i = 0; i < 16; i++) {
    for (int k = 0; k < 16; k++) {
    rect(k * CHIP, i * CHIP, CHIP, CHIP);
    }
    }
    }



    次に、配列からマップ情報を取得するスケッチに改良しました


    final int CHIP = 30;

    int[][] map = {{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
    };


    void setup() {
    size(480, 480);
    }

    void draw() {
    for (int i = 0; i < 16; i++) {
    for (int k = 0; k < 16; k++) {
    if(map[i][k] == 1) fill(100);//map[y][x]であることに注意
    if(map[i][k] == 0) fill(200);
    rect(k * CHIP, i * CHIP, CHIP, CHIP);
    }
    }
    }


    柔軟性を持たせた



    • 縦、横のマス数を指定可能にした。

    • ウィンドウサイズ: マスの個数とCHIPサイズから自動計算。

      • →でも、マス数を固定にして、あとはピクセルを自動計算 ってのも良さそう


    final int CHIP = 30;
    int masu_x = 16;
    int masu_y = 16;

    int[][] map = {{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
    {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
    };


    void setup() {
    size(CHIP * masu_x, CHIP * masu_y);
    }

    void draw() {
    for (int i = 0; i < masu_y; i++) {
    for (int k = 0; k < masu_x; k++) {
    if(map[i][k] == 1) fill(100);//map[y][x]であることに注意
    if(map[i][k] == 0) fill(200);
    rect(k * CHIP, i * CHIP, CHIP, CHIP);
    }
    }
    }


    fill()メソッドをimage()に変更したバージョン.


    • しかし、これではswitch文みたくなってしまう・・・次!

      • final int CHIP = 30;
        int masu_x = 16;
        int masu_y = 16;

        int[][] map = {{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
        };


        PImage kusa;
        PImage wall;
        PImage hero;
        //-------------------------------------------------------------------
        void setup() {
        size(CHIP * masu_x, CHIP * masu_y);
        kusa = loadImage("kusa.bmp");
        wall = loadImage("stone3.bmp");
        //hero = loadImage("heroD.bmp");
        }

        void draw() {
        for (int i = 0; i < masu_y; i++) {
        for (int k = 0; k < masu_x; k++) {
        //switch文のようになってしまい、コードが増えてしまう。
        if(map[i][k] == 1) image(wall, k * CHIP, i * CHIP, CHIP,CHIP);//map[y][x]であることに注意
        if(map[i][k] == 0) image(kusa, k * CHIP, i * CHIP, CHIP,CHIP);
        }
        }
        }





        switch文を配列一行で済ませるように改善した



        final int CHIP = 30;
        int masu_x = 16;
        int masu_y = 16;

        int[][] map = {{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
        {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
        };


        String imgName[] = {"kusa", "stone3", "heroD"};//##随時ココに追加しなければならない・・・
        PImage img[] = new PImage[20];//##ここのサイズを指定しなければならない・・・
        //-------------------------------------------------------------------
        void setup() {
        size(CHIP * masu_x, CHIP * masu_y);
        for(int i = 0; i < imgName.length; i++){
        img[i] = loadImage(imgName[i] + ".bmp");
        }
        }

        void draw() {
        for (int i = 0; i < masu_y; i++) {
        for (int k = 0; k < masu_x; k++) {
        //switch文の問題点を解消。 一行で済ますことに成功.(switchの対応付けを配列の対応付けで済ませただけですね)
        image(img[map[i][k]], k * CHIP, i * CHIP, CHIP,CHIP);//map[y][x]であることに注意
        }
        }
        }


        他にも色々ソースコード公開したいのですが、自分ひとりで作ってる訳でもないので序盤のみの公開ということで。





        バージョン管理


        プログラマ2名、ドット絵師1名、BGM担当1名の計4人体制で製作中。
        最近は開発が止まってる。

        「バージョン管理には何使ってるの?」


        と言われると、

        _人人人人人人人人人人人_
        > フォルダです!!! <
         ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄


        versionfiled.png

        クラス図どうなってるの?


        と言われると、

        _人人人人人人人人人人_
        > 手書きです!!! <
         ̄^Y^Y^Y^Y^Y^Y^Y^Y^ ̄


        classByHand.jpg
        twitterで@ayato_pさんに「astash*つかえww」と言われる始末www



        相方のプログラマもサポートしてくれた



        • マップデータ作成ツール


        →CSVファイルに出力してくれる。width*heightも指定可能。塗りつぶし機能まで実装してくれた。

        tocsv.png



        ゲーム画面


        rpg1.png

        フラッドフィルも実装


        rpg2.png

        メニューウィンドウも。


        rpgMenu.png

        ファイル別にクラス分けてたらタブだらけになった


        rpgTab.png



        そんなこんなで、ある程度の簡単なゲームをリリースしていって、少しづつフレームワークとしてのクオリティを高めていこうと思っています。
        Androidに移植するのは来年になりそう・・・。
        2012/12/09 23:30 processing TB(0) CM(0)

    検索フォーム
    ブロとも申請フォーム
    QRコード
    QR
    IPv4枯渇時計
    linuxコマンド
    ぶくろぐ
    本棚です
    icat
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。