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

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

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

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

Q&A

解決済

1回答

1505閲覧

モグラ叩きならぬゾンビ叩きの速度調整

purin-chan

総合スコア1

Java

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

0グッド

0クリップ

投稿2021/01/16 05:44

編集2021/01/16 05:54

前提・実現したいこと

turtleライブラリでモグラ叩きのゲームを作っています(モグラの代わりにゾンビが動く設定です)
ゾンビを地面のあちこちに移動させたいのですが、カウントダウンに合わせてsleep(0.1)にすると、ゾンビの動きが速くて、ゲームがやりづらい状況となっています。そのため、ゾンビの動きをゆっくりにして、なおかつカウントダウンタイマーとハンマーが正常に動くようにしたいです。もし今のやり方で修正できなければ、他の方法を教えて頂きたいです。

発生している問題・エラーメッセージ

今のままだと、エラーメッセージは出ていませんが、ゾンビの動きが速すぎて
ハンマーでゾンビをたたくことが難しくなっています。

該当のソースコード

Java

java

1//タートルを動かす処理 2 public void start() { 3 hide(); 4 //ウィンドウを設定する 5 window.warp(40, 40); 6 window.size(1200, 700); 7 //背景画像を呼び出す 8 ImageTurtle grass = new ImageTurtle("image\tochi_akichi.png"); 9 //背景画像のサイズ設定 10 grass.size(1300,900); 11 grass.warp(600,300); 12 13 //音楽準備 14 SoundTurtle bgm1 = new SoundTurtle("bgm.mp3"); 15 bgm1.loadOnMemory(); 16 bgm1.play(); 17 SoundTurtle effect1 = new SoundTurtle("powerdown02.mp3"); 18 effect1.loadOnMemory(); 19 SoundTurtle effect2 = new SoundTurtle("打撃音_2.mp3"); 20 effect2.loadOnMemory(); 21 SoundTurtle effect3 = new SoundTurtle("ok.mp3"); 22 effect3.loadOnMemory(); 23 24 //タイマーの看板準備 25 ImageTurtle kanban = new ImageTurtle("image\wood_kanban2.png"); 26 27 //タイマーのテキスト準備 28 TextTurtle second = new TextTurtle("秒"); 29 TextTurtle n = new TextTurtle("残り"); 30 second.warp(150,100); 31 n.warp(50,100); 32 33 //zombie画像準備 34 ListTurtle<ImageTurtle> zombies = new ListTurtle<ImageTurtle>(); 35 zombies.hide(); 36 37 //zombieを6匹作成する 38 for ( int i=0; i<3; i=i+1) 39 { 40 zombies.addLast(new ImageTurtle("image\fantasy_zombie_man.png")); 41 zombies.addLast(new ImageTurtle("image\fantasy_zombie_woman.png")); 42 zombies.addLast(new ImageTurtle("image\human.png")); 43 } 44 update(); 45 zombies.get(0).size(180,180);//男ゾンビ 46 zombies.get(0).warp(250,500); 47 zombies.get(1).size(200,200);//女ゾンビ 48 zombies.get(1).warp(400,200); 49 zombies.get(2).size(180,180);//人間 50 zombies.get(2).warp(800,200); 51 zombies.get(3).size(180,180);//男ゾンビ 52 zombies.get(3).warp(600,200); 53 zombies.get(4).size(200,200);//女ゾンビ 54 zombies.get(4).warp(500,400); 55 zombies.get(5).size(180,180);//人間 56 zombies.get(5).warp(400,400); 57 zombies.get(6).size(180,180);//男ゾンビ 58 zombies.get(6).warp(1000,500); 59 zombies.get(7).warp(900,250);//女ゾンビ 60 zombies.get(7).size(200,200); 61 zombies.get(8).warp(600,500);//人間 62 zombies.get(8).size(180,180); 63 64 //ハンマー画像を呼び出す 65 ImageTurtle hammer = new ImageTurtle("image\wood_hammer.png"); 66 hammer.size(150,200); 67 ImageTurtle hammer2 = new ImageTurtle("image\hammer2.png"); 68 hammer2.hide(); 69 70 //タイマー準備 71 TextTurtle counter = new TextTurtle (""); 72 int number=460; 73 74 update(); 75 76 while(true){ 77 hammer.looks(hammer); 78 while(number>=0){ 79 //カウントダウンタイマー 80 sleep(0.1); 81 number =number-1; 82 counter.text(number/10); 83 //ハンマーをマウスにくっつける 84 int mx=mouseX(); 85 int my=mouseY(); 86 hammer.warp(mx,my); 87 //それぞれの画像の位置を取得 88 int x0=zombies.get(0).getX(); 89 int y0=zombies.get(0).getY(); 90 int x1=zombies.get(1).getX(); 91 int y1=zombies.get(1).getY(); 92 int x2=zombies.get(2).getX(); 93 int y2=zombies.get(2).getY(); 94 int x3=zombies.get(3).getX(); 95 int y3=zombies.get(3).getY(); 96 int x4=zombies.get(4).getX(); 97 int y4=zombies.get(4).getY(); 98 int x5=zombies.get(5).getX(); 99 int y5=zombies.get(5).getY(); 100 int x6=zombies.get(6).getX(); 101 int y6=zombies.get(6).getY(); 102 int x7=zombies.get(7).getX(); 103 int y7=zombies.get(7).getY(); 104 int x8=zombies.get(8).getX(); 105 int y8=zombies.get(8).getY(); 106 //横に移動 107 { 108 int r0 = random(201) + 150; 109 int r1 = random(401) + 150; 110 int r2 = random(601) + 150; 111 int r3 = random(501) + 150; 112 int r4 = random(301) + 150; 113 int r5 = random(801) + 150; 114 int r6 = random(401) + 150; 115 int r7 = random(901) + 150; 116 int r8 = random(501) + 150; 117 zombies.get(0).warp(x0+r0,y0); 118 zombies.get(1).warp(x1+r1,y1); 119 zombies.get(2).warp(r2,y2); 120 zombies.get(3).warp(r3,y3); 121 zombies.get(4).warp(r4,y4); 122 zombies.get(5).warp(x5+r5,y5); 123 zombies.get(6).warp(r6,y6); 124 zombies.get(7).warp(r7,y7); 125 zombies.get(8).warp(r8,y8); 126 } 127 //もしマウス(ハンマー)が男ゾンビに当たったら 128 if(leftMouseClicked()&&hammer.intersects(zombies.get(0))||leftMouseClicked()&&hammer.intersects(zombies.get(3))|| 129 leftMouseClicked()&&hammer.intersects(zombies.get(6))){ 130 hammer.looks(hammer2); 131 effect3.play(); 132 } 133 //もしマウスが(ハンマー)が人間に当たったら 134 else if(leftMouseClicked()&&hammer.intersects(zombies.get(2))||leftMouseClicked()&&hammer.intersects(zombies.get(5))|| 135 leftMouseClicked()&&hammer.intersects(zombies.get(8))){ 136 hammer.looks(hammer2); 137 effect2.play(); 138 } 139 //もしマウスが(ハンマー)が女ゾンビに当たったら 140 else if(leftMouseClicked()&&hammer.intersects(zombies.get(1))||leftMouseClicked()&&hammer.intersects(zombies.get(4))|| 141 leftMouseClicked()&&hammer.intersects(zombies.get(7))){ 142 hammer.looks(hammer2); 143 effect3.play(); 144 } 145 //普通の時 146 else { 147 hammer.looks(hammer); 148 } 149 update(); 150 if(number==0){ 151 bgm1.stop(); 152 //リザルト画面へ移行 153 grass.hide(); 154 kanban.hide(); 155 second.hide(); 156 n.hide(); 157 zombies.get(0).hide(); 158 zombies.get(1).hide(); 159 zombies.get(2).hide(); 160 zombies.get(3).hide(); 161 zombies.get(4).hide(); 162 zombies.get(5).hide(); 163 zombies.get(6).hide(); 164 zombies.get(7).hide(); 165 zombies.get(8).hide(); 166 hammer.hide(); 167 counter.hide(); 168 //リザルト画面の準備 169 SoundTurtle bgm2 = new SoundTurtle("LOVE HOME.mp3"); 170 bgm2.loadOnMemory(); 171 bgm2.play(); 172 ImageTurtle obake = new ImageTurtle("image\halloween_background_purple.png"); 173 obake.size(1500,600); 174 obake.warp(600,300); 175 update(); 176 TextTurtle result1= new TextTurtle("結果発表"); 177 result1.warp(600,70); 178 name("あなたの", "のレベルは"); 179 } 180 } 181 } 182 } 183 String name(String name1, String words1){ 184 String text = ""; 185 TextTurtle yourname = new TextTurtle( name1+ "さん"+words1); 186 yourname.warp(600,100); 187 return text; 188 } 189} 190

試したこと

warpとrandomを使ってゾンビがあちこちに動くようにしました。
sleepを0.5にしてみましたが、ハンマーとカウントダウンの動きが鈍くなりました。

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

Ronpro Editorのturtleを使用しています。

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

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

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

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

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

purin-chan

2021/01/16 05:55

ご指摘ありがとうございます!修正しました。
guest

回答1

0

ベストアンサー

ゾンビの動きをゆっくりにして、なおかつカウントダウンタイマーとハンマーが正常に動くようにしたいです。もし今のやり方で修正できなければ、他の方法を教えて頂きたいです。

単純に言って、1つのカウントに対するゾンビの動きを減らせばいいのでは?
カウンタが、毎回カウントダウンしているなら、ゾンビは2回に1回、あるいは 3回に1回 しか動かないようにすればその分遅くなるでしょう。

投稿2021/01/16 05:59

kozuchi

総合スコア1193

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

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

purin-chan

2021/01/16 08:47

ご教授ありがとうございます。アドバイスの通り実践してみたら、自分が思っていた動きになりました。本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問