質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

解決済

1回答

863閲覧

Processingでゲームを作っています。マップチップを使って描画する方法について

kuriboros

総合スコア23

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2019/02/08 14:05

マップチップを使って、processing上でシューティングゲーム用の背景を描画しようと思いますが

マップチップに番号をつけると言うのは、マップチップエディタを使うと言うことでしょうか?

言語はjavaになります。

なるべく自分で考えて作りたいので、そういった技術のある方が居りましたらご教示いただきたいと思います。

可能でしたら、サンプルソースが置かれてるURL等教えていただけたら幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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
thkana

総合スコア7629

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuriboros

2019/02/10 07:30

ありがとうございます。とっかかりがつき辛かったので。助かりました。実行しながら勉強続けてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問