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

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

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

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

Eclipse

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

Q&A

解決済

3回答

1645閲覧

プログラムの変更をしたいんです

taiyokarasu

総合スコア27

Java

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

Eclipse

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

0グッド

0クリップ

投稿2016/10/23 10:31

編集2016/10/23 13:33

import java.awt.Color;
import java.awt.Graphics;

/**
*敵クラス<p>
*移動処理、描画処理など
*/
public class Enemy extends GameObject
{
//生存時間(弾を撃つタイミングに使用)
int counter = 0;
//体力
int katasa;
//種類
int type;
//あたり判定フラグ
boolean ishit = false;
//プレイヤーの位置を知っておくため、Playerインスタンスへの参照をを保持
Player player;
//打ち始めフラグ
boolean startshoot;
int shootnum;

/** * コンストラクタ * @param プレイヤークラスのインスタンス(プレイヤーの位置を把握するため) */ Enemy(Player iplayer) { //プレイヤーの位置を把握 player = iplayer; //初期化時はactiveでない active = false; } /** * インスタンスを有効にする。インスタンスの使い回しをしているので、 * 初期化処理もここで行う。 * @param ix 生成する位置(X座標) * @param iy 生成する位置(Y座標) */ public void activate(double ix, double iy) { x = ix; y = iy; type = (int)(Math.random()+0.5); active = true; //弾のインスタンスを有効にする katasa = 10; counter = 0; boolean ishit = false; shootnum = Level.getLevel(); startshoot = false; } /** * プレイヤーの弾と衝突したときの振る舞い */ public void hit() { //体力減らす katasa--; ishit = true; if (katasa < 0) { //得られる得点は敵の種類で変わる switch(type) { case 0: Score.addScore(10); break; case 1: Score.addScore(20); break; default: } //スコアに加算 //爆発の生成 ObjectPool.newParticle(x, y, 45, 2); ObjectPool.newParticle(x, y, 135, 2); ObjectPool.newParticle(x, y, 225, 2); ObjectPool.newParticle(x, y, 315, 2); active = false; } } /** * 動作を規定する。メインループ1周につき一回呼ばれる */ public void move() { //種類で分岐 switch(type) { case 0: move_enemy0(); break; case 1: move_enemy1(); break; default: } } /** * 敵その1の動作 */ void move_enemy0() { counter++; y++; //ゆらゆら x += Math.sin(y / 20); //画面外に出たら消去 if ( (500 < y) ) { active = false; } //一定間隔で弾を撃つ if ((counter%80)==0) { Bullet.FireRound(x, y); } } /** * 敵その2の動作 */ void move_enemy1() { counter++; double p = 60; //静止までの時間 double q = 200; //画面のどこで静止するか //二次関数で動きを表現 y = (-q / Math.pow(p,2) * Math.pow((counter - p), 2) + q); //画面外に出たら消去 if ( (-30 > y) ) { active = false; } //一定間隔で弾を撃つ if ((counter%60)==0) { //撃ち始め startshoot = true; } //撃ち始めフラグが立っていたら、レベルと等しい回数、弾を撃つ if (startshoot) { if (((counter%5)==0)&&(shootnum>0)) { Bullet.FireAim(x, y, player); shootnum--; } } } /** * 描画処理。 * 1ループで一回呼ばれる。 * @param g 描画先グラフィックハンドル */ public void draw(Graphics g) { //弾が当たっていたら色をオレンジに if (ishit) { g.setColor(Color.orange); }else{ switch(type) { case 0: g.setColor(Color.black); break; case 1: g.setColor(Color.blue); break; default: } } ishit = false; g.drawRect((int)x-16, (int)y-16, (int)32, (int)32); }

}

描画処理のところを変更したいんです。今は、線で描いていますが、これを画像表示のプログラムにしたいのですが、変更すべきところと、変更すべきでないところがよくわからないんです。
アドバイスをお願いします

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

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

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

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

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

A-pZ

2016/10/24 05:17

コードを記載するときにはコードブロックで囲うと、ソースコードを見てもらう人にもわかりやすくなりますし、自分で見直すときにも役立ちますので、コードブロックをお使いください。
guest

回答3

0

英語でも自力で訳さなければ力がつかないように、
自力で読めないとプログラミングの力がつきません。

そこで、読み方だけ言いますと、英語の翻訳のように、
まず文法や単語を理解していないと始まりません。


プログラミングだとif文やfor文や変数やクラスの宣言などですね。
分からないライブラリのメソッドなどがあれば、そのつど調べましょう。

英語と違う部分は、クラスやメソッド単位に分けて理解することと、
プログラムを実際にコンピュータで動かせることです。最大限に活用しましょう。


そうして、サンプルコードの要素を分解しながら、
自分のコードに書き直していくと、力がつきます。

技術者が家電を分解して、また組み立てるようなものです。
時間がかかって面倒でしょうが、力がつく正攻法の勉強法です。

投稿2016/10/23 12:16

LLman

総合スコア5592

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

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

0

コメントがしっかりと書いてありますよね。
ここまで、コメントが丁寧に載っているのは珍しいので、まずはそれを読みましょうね。

クラスの読み方は「なにができるのか」をざっくりとメソッド名とJavadocから読みましょう。
また、コードはコード用の記述に修正してください。

投稿2016/10/23 10:46

yona

総合スコア18155

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

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

0

ベストアンサー

"線を引く"と書かれていますが、drawRectは四角形を書く処理でしょうか。

引数でもらっているGraphicsクラスには、画像を出力するgrawImageもありますので、それを使うと良いでしょう。

参考記事:JavaDrive|drawImageメソッドで画像表示

投稿2016/10/24 05:15

A-pZ

総合スコア12011

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問