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

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

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

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

1338閲覧

プレイヤーが画像表示できません。

taiyokarasu

総合スコア27

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2017/01/14 14:08

import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; /** *プレイヤークラス<p> *移動処理、描画処理など */ public class Player extends GameObject { static int myscore; static int mygage; double speed; Image img1; Toolkit toolkit; //体力 int katasa; //あたり判定フラグ boolean ishit = false; //プレイヤーの位置を知っておくため、Playerインスタンスへの参照をを保持 Player player; /** * コンストラクタ * @param ix 生成先のx座標 * @param iy 生成先のy座標 * @param ispeed 移動スピード */ Player(double ix, double iy, double ispeed) { x = ix; y = iy; speed = ispeed; active = true; katasa = 5; boolean ishit = false; img1 = Toolkit.getDefaultToolkit().getImage("EDGE54.png"); } public void hit() { //体力減らす katasa--; ishit = true; if (katasa < 0) { active = false; //爆発を生成 for (int j = 0; j < 360; j += 20) { newParticle(player.x, player.y, j, 2); } } } private void newParticle(double x, double y, int j, int i) { // TODO 自動生成されたメソッド・スタブ } /** * ダミー関数<p> * (引数がスーパークラスのアブストラクト・メソッドの定義と異なるため) */ public void move() { } /** * 移動処理 * @param mx x方向の入力(-1 ... +1) * @param my y方向の入力(-1 ... +1) */ public void move(int mx, int my) { //Canvasの外には移動できないようにする double postX = x + mx * speed; double postY = y + my * speed; if ((0 < postX)&&(postX < 500)) { x = postX; } if ((0 < postY)&&(postY < 480)) { y = postY; } } //描画処理 public void draw(Graphics g) { } void paint(Graphics g) { if (active) { g.drawImage(img1, 1, -13, null); } ishit = false; } }

最初は、drawLineを使ってプレイヤーを表示していたので、画像表示に切り替えようと上のプログラムを使いました。
そしたら、何故かプレイヤーとしてではなく、宣言した位置に固定されて表示されてしまいます。
画像を表示する宣言は、キーイベントのところですべきでしょうか。
それとも、あたり判定をしているクラスがいいのでしょうか。

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

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

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

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

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

guest

回答1

0

ベストアンサー

g.drawImage(img1, 1, -13, null);の部分が1,-13と定数になっています。
これが原因だと思います。
JavaではPaint以外の箇所では基本的に描画関数が動きません。

Javaの描画ライブラリはゲームに向いていません。ゲームに向いているのはC言語とC++です。
DXライブラリなどを使うといいですよ。

どうしてもJavaでやりたい場合、LWJGL等がおすすめですが、OpenGLのラッパーで
画像を少し描画するだけでもかなり手間がかかります

投稿2017/02/03 13:15

KureteRubyLua

総合スコア206

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問