マップチップを使って、processing上でシューティングゲーム用の背景を描画しようと思いますが
マップチップに番号をつけると言うのは、マップチップエディタを使うと言うことでしょうか?
言語はjavaになります。
なるべく自分で考えて作りたいので、そういった技術のある方が居りましたらご教示いただきたいと思います。
可能でしたら、サンプルソースが置かれてるURL等教えていただけたら幸いです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
「マップチップに番号をつける」というのがプログラムの中での扱いなら「マップチップエディタ」なんて出てこないし、ファイルを加工する話ならプログラミングの話ではないので、ちょっとやりたいことが把握できないのですが...
やりたいことは「番号をつける」ことではなく、「プログラムの中で、連番をキーにマップチップの集合画像から任意の1個を取り出したい」という意味だと解釈して、「マップチップビューワー」とでもいうようなことをしてみましたが参考になりますでしょうか。
Processing
1final int CHIPSIZE=16; //マップチップの一辺のドット数 2 3//マップチップの集合画像をクラスとする 4class MapChip { 5 //集合画像本体 6 PImage mapChipArray; 7 //マップチップの総数、並びの幅、縦の数 8 int mCount, mWidth, mHeight; 9 10 //コンストラクタには集合画像のファイル名を与える 11 MapChip(String file) { 12 mapChipArray=loadImage(file); 13 mWidth=mapChipArray.width/CHIPSIZE; //画像に含まれるマップチップの横並び数 14 mHeight=mapChipArray.height/CHIPSIZE; //マップチップの縦の数 15 mCount=mWidth * mHeight; //画像に含まれるマップチップの総数 16 } 17 18 //「番号」を与えて画像を得る 19 PImage getMapChip(int number) { 20 if (number>=mCount) { 21 return null; 22 } 23 //「番号」から画像の位置を求める 24 int w=(number % mWidth)*CHIPSIZE; 25 int h=(number / mWidth)*CHIPSIZE; 26 return mapChipArray.get( w, h, CHIPSIZE, CHIPSIZE);//PImage::get()で画像を切り出す 27 } 28} 29 30MapChip mp1; 31boolean showOneTime; 32int number; 33 34void setup() { 35 //画像は'マップチップ画像 無料'でググってトップにヒットしたものというだけで他意はありません 36 mp1=new MapChip("http://img-cdn.jg.jugem.jp/93b/1453728/20120219_4859043.png"); 37 surface.setSize(mp1.mapChipArray.width, mp1.mapChipArray.height); 38} 39 40void draw() { 41 if (!showOneTime) { //最初3秒間全体画像を表示 42 image(mp1.mapChipArray, 0, 0); 43 if (millis()>3000) { 44 showOneTime=true; 45 surface.setSize(320, 320); 46 } 47 return; 48 } 49 50 PImage mapChip=mp1.getMapChip(number); 51 //背景タイル表示 52 for (int y=0; y<height; y+=CHIPSIZE) { 53 for (int x=0; x<width; x+=CHIPSIZE) { 54 image(mapChip, x, y); 55 } 56 } 57 58 fill(0); 59 rect(90, 40, 140, 180); 60 fill(255); 61 text("MapChip: "+number+" / "+mp1.mCount, 100, 50); 62 image(mapChip, 100, 100, CHIPSIZE, CHIPSIZE);//原寸表示 63 image(mapChip, 100, 150, CHIPSIZE*4, CHIPSIZE*4);//拡大表示 64} 65 66void keyPressed() { 67 if (keyCode==DOWN) {//↓キーで前のマップチップ 68 if (--number<0) { 69 number=mp1.mCount-1; 70 } 71 } else if (keyCode==UP) {//↑キーで次のマップチップ 72 if (++number>mp1.mCount-1) { 73 number=0; 74 } 75 } 76}
投稿2019/02/08 23:51
編集2019/02/08 23:58総合スコア7629
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/10 07:30