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

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

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

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

Q&A

1回答

1938閲覧

turtleでオブジェクトのサイズ調整、表示画像のサイズ取得

shintaro_4869

総合スコア10

Java

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

0グッド

0クリップ

投稿2019/01/24 07:44

編集2019/01/24 07:59

turtleでゲームを作っています。

turtleでシューティングゲームを作っています。
playerがあるサイズまで小さくなったらGAME OVERという画像が出てくるようにしたいと思っています。

質問

if(player.size ==(5,5) ) {
back.warp (550,400);
}
というプログラムを入力すると、')'がありませんと出ます。

if(player.size(5,5) ) {
と入力するとvoidをbooleanに変換できませんと出ます。(これの理由は分かりましたが、解決方法が分かりません。)
どちらかの解決方法をお願いします。
ダメそうなら別の方法でもかまいません。

またplayerに画像を貼っているのでその画像のサイズがいくつになったらGAME OVERという画像がでてくるようしようかと考えましたが、わかりませんでした。ちなみに画像は同じプロジェクトに入っています。

public class Game extends Turtle {

//起動処理 public static void main(String[] args) { Turtle.startTurtle(new Game(), args); } //タートルを動かす処理 public void start() { //画面の調整 window.setSize(1100, 800); window.warp(100, 100); // バックグラウンド画像 ImageTurtle bg = new ImageTurtle("bg.jpg"); int score; //得点を入れる変数 //得点板の生成 TextTurtle scoreBoard = new TextTurtle(); //scoreBoardという名前のTextTurtleを生成 //キャラクターの生成 ImageTurtle enemy1 = new ImageTurtle("Star.png");//enemyという名前の星を生成 ImageTurtle player = new ImageTurtle("player.png");//playerという名前の銃を生成 ImageTurtle bullet = new ImageTurtle("bullet.png");//bullet(弾)という名前の円を作成 ImageTurtle item1 = new ImageTurtle("oil.png"); ImageTurtle back = new ImageTurtle("gameover.jpg"); // 音楽の生成 SoundTurtle hit = new SoundTurtle("hit.mp3"); hit.loadOnMemory(); SoundTurtle fire = new SoundTurtle("fire.mp3"); fire.loadOnMemory(); SoundTurtle out = new SoundTurtle("out.wav"); out.loadOnMemory(); SoundTurtle kinoko = new SoundTurtle("kinoko.wav"); kinoko.loadOnMemory(); SoundTurtle bgm = new SoundTurtle("bgm.mp3"); // BSound bgm = new BSound("bgm.mp3"); bgm.play(); //弾を適切な大きさに調整 bullet.size(20, 20); //キャラクターの位置を調整 enemy1.warp(200, 100); player.warp(440, 350); bullet.warp(-100, -100);//弾は最初見えない位置に置いておく item1.warp(600,5); back.warp(2000,1500); //得点板の位置を調整 scoreBoard.warp(1000, 50); //得点を初期化 score = 0; while (true) { // --- 待つ --- sleep(0.025); // --- 処理 --- //敵を動かす(流れ星と一緒) enemy1.warp(enemy1.x(), enemy1.y() + 8 ); enemy1.rt(10); //アイテムを動かす item1.warp(item1.x(), item1.y() +10 ); item1.rt(10); //もし,敵が上端だったら if (enemy1.y () > 800) { enemy1.warp(enemy1.x(), 0 );//上端にワープ } //もしアイテムが上端だったら if (item1.y () > 800) { item1.warp(item1.x(), 0 ); } //銃を左右に動かす if (key() == 37) { //左 player.warp(player.x() -10

,player.y() );
} else if (key() == 39) { // 右
player.warp(player.x() +10, player.y() );
}

// 銃を上下に動かす if(key() == 38) { //上 player.warp(player.x(),player.y() -8 ); } else if (key() == 40) {// 下 player.warp(player.x(), player.y() + 8); } //スペースが押されたら, if (key() == 32) { //弾を出す(弾を銃と同じ位置にする) bullet.warp(player.x(), player.y() ); fire.play(); } //弾を上に動かす //(見えなくても,上に動かし続ける) bullet.warp(bullet.x(), bullet.y() - 15) ; //もし,弾が敵に当たっていたら if (bullet.intersects(enemy1) ) { enemy1.warp(random(1100),0);//enemyを動かす score++;//得点を増やす // 衝突音を鳴らす hit.play(); } //もしアイテムがplayerに当たったら if (item1.intersects(player) ) { player.large(20);//playerを大きくする item1.warp(item1.x() - 200,0); kinoko.play(); } //もしplayerがenemyに当たったら if (player.intersects(enemy1) ) { player.small(10);//playerを小さくする out.play();//衝突音を鳴らす } if(player.size(5,5) ) { back.warp(550,400); } //得点版の数字を更新 scoreBoard.text(score); //再描画 update(); } }

}

補足情報(FW/ツールのバージョンなど)

Ronpro Editor のturtleを使っています。

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

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

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

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

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

azuapricot

2019/01/24 07:49

情報少なすぎるので一部じゃなくて全体像が見えるコードを貼ってください
guest

回答1

0

まず 2 つ目の

if(player.size(5,5) ) {

と入力するとvoidをbooleanに変換できませんと出ます。(これの理由は分かりましたが、解決方法が分かりません。)

まずこれは関数ですよね?(voidは関数以外だとCとか別言語のはず... 失礼。)
この場合、

public void size( int x, int y )

の void を boolean にします。その後、

return false; // true かどちらか

を追加します。
ただ、sizeは名前としてふさわしくないと個人的には思います。(取得はget〇〇、設定はset〇〇にするのがおすすめ。)

で、上の問題

if(player.size ==(5,5) ) {

back.warp (550,400);
}

これは関数なら

if( player.size( 5, 5 ) == ( 5, 5 ) ){ }

みたいに()をつける必要があります。
ただし、( 5, 5 ) みたいな条件はないと思いますし(まず使ったことない気がする)、結局ほぼ上と同じになります。

またplayerに画像を貼っているのでその画像のサイズがいくつになったらGAME OVERという画像がでてくるようしようかと考えましたが、わかりませんでした。ちなみに画像は同じプロジェクトに入っています。

そういうシステムは自分で考えてもらいたいのですが、

update();

があったので

public void paint( Graphics g )

みたいな関数がないでしょうか。
その場合、

g.drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)

という関数を使えばサイズ、位置を制御できます。
詳しくはAPIに書いてあります。

投稿2019/01/24 11:11

yukkuri

総合スコア624

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問